функция GetFieldValueFromDisabledField выбивает клиент с ошибкой
Есть справочник в которой идут коды ОКВЕД, и их описания. При редактировании карточки контрагента необходимо, что бы при выборе кода ОКВЕД автоматически подгружалось его описание в соответствующее поле. Делал по аналогии с автозаполнением контактных данных. При попытке отредактировать поле с выбором кода (lookupdatacontrol) - появляется грид с выбором записи, но когда выбираеш нужный код - программа вешается и через некоторое появляется окошко с ошибкой виндозы - мол, работа программы была предотвращена, не хотите ли поискать решение проблемы в интернете.
собственно сам код:
if (!Assigned(LookupDataset)) {
return;
}
if ((Dataset.State != dstEdit) && (Dataset.State != dstInsert)) {
return;
}
var OkvedDescrName = 'OkvedDescr';
var OkvedDescrID = GetFieldValueFromDisabledField(LookupDataset, OkvedDescrName);
Dataset.Value('OkvedDescr') = OkvedDescrID;
Dataset.Attributes('SkipPlacementUpdate') = true;
try {
Dataset.Values(OkvedDescrName) = OkvedDescr;
} finally {
Dataset.Attributes('SkipPlacementUpdate') = false;
}
}
на форуме находил подобное, там была ошибка в разных именах полей в датасетах. Вроде везде все проверил - названы поля одинаково. Подскажите куда копать, пожалуйста.
Нравится
Подобный вариант Вам не подойдет?
http://community.terrasoft.ru/forum/topic/6394
Система оказывается висла на конструкции в скрипте scr_Account
function SelfOnDatasetDataChange(DataField) { ... if ((FieldName == 'OkvedCode') && (!IsEmptyStr(DataField.DisplayValue)) { ...
Проблема решилась неожиданным образом. Поменял тип поля на вычисляемое при переоткрытии карточки, после сохранения, значение подставляется самостоятельно без каких либо модификаций скрипта.