Получение значения дополнительного поля из Lookup Dataset
Добрый день.
Подскажите пзл.
Есть справочник "Семейное положение", добавил в него поле NeedFamilyInfo (BOOL). В справочнике все работает - и в Террасофте, и в БД.
Необходимо при смене в Контактах поля Семейное Положение анализировать значение поля NeedFamilyInfo.
Делаю так в методе dlDataOnDatasetDataChange Контактов:
if (Name == "MaritalStatusID"){
if (Value != null)
{
debugger;
var DS = edtMaritalStatus.DataField.LookupDataset;
EnableDatasetFilters(DS, false);
ApplyDatasetIDFilter(DS, Value, true);
if (DS.State == dstInactive)
DS.Open();
else
RefreshDataset(DS);
dlData.Dataset.DataFields.ItemsByName("FamilyMemberCount").IsRequired = DS.ValAsBool("NeedFamilyInfo");
}}
но всегда DS.Values("NeedFamilyInfo") = null
Пробовал и с использованием функции GetFieldValueFromDisabledField - все равно null.
Подскажите плз, где может быть ошибка?
Нравится
Добавлю:
Смотрел профайлером - всегда из справочника идет запрос только двух полей - ID и Name. Как заставить оптимизатор выбрать допольнительно другие поля?
Еще добавлю вопрос:
Что означает свойство IsLookupDataset?
Здравствуйте!
1. В скрипте scr_Util. Вам необходимо использовать ф-цию GetFieldValueFromLookupDataset. Но в GetDatasetFieldValueFromDatasetByFilter необходимо сделать доработку:
[javascript]
...
ApplyDatasetFilter(Dataset, FilterFieldName, FilterFieldValue, true);
var DataField = Dataset.DataFields.ItemsByName(ResultFieldName);
var Column = GetGeneralColumnByDataField(DataField);
if ((Assigned(Column)) && (!Column.IsEnabled)) {
Column.IsEnabled = true;
}
Dataset.Open();
...
[/javascript]
2. IsLookupDataset - см. http://terrasoft.com.ua/sdk/IDBDataset__IsLookupDataset@%5Bout,_retval%…