Есть справочник в которой идут коды ОКВЕД, и их описания. При редактировании карточки контрагента необходимо, что бы при выборе кода ОКВЕД автоматически подгружалось его описание в соответствующее поле. Делал по аналогии с автозаполнением контактных данных. При попытке отредактировать поле с выбором кода (lookupdatacontrol) - появляется грид с выбором записи, но когда выбираеш нужный код - программа вешается и через некоторое появляется окошко с ошибкой виндозы - мол, работа программы была предотвращена, не хотите ли поискать решение проблемы в интернете.
собственно сам код:

function FillDescrOkvedBySelectedCode(Dataset, LookupDataset) {
        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;
        }
}

на форуме находил подобное, там была ошибка в разных именах полей в датасетах. Вроде везде все проверил - названы поля одинаково. Подскажите куда копать, пожалуйста.

Нравится

2 комментария

Подобный вариант Вам не подойдет?
http://community.terrasoft.ru/forum/topic/6394

Система оказывается висла на конструкции в скрипте scr_Account

function SelfOnDatasetDataChange(DataField) {
         ...
         if ((FieldName == 'OkvedCode') && (!IsEmptyStr(DataField.DisplayValue)) {
         ...

Проблема решилась неожиданным образом. Поменял тип поля на вычисляемое при переоткрытии карточки, после сохранения, значение подставляется самостоятельно без каких либо модификаций скрипта.

Показать все комментарии