Здравствуйте.
В системе существует пользовательское поле Уровень лояльности (type_loyal, тип - справочник) для Контрагента.
Необходимо в скрипте при редактировании записи Контрагента обратиться к текущему значению этого поля в открытой еще не сохранненой карточке.
Подскажите, как правильно написать название поля, где уже заполнено это значение.
Пробовала написать edttype_loyal, но видимо это не правильно.
Нравится
Попробуйте так:
var Field = Self.ComponentsByName('dlData').Dataset.DataFields. ItemsByName('type_loyal');
Для какой цели Вы хотите обратиться к полю?
Можно даже немного проще, чем предложил Олег.
Если Вы находитесь в скрипте карточки редактирования, то получить доступ к содержимому пользовательского поля можно так (даталинк dlData доступен напрямую):
dlData.Dataset('UserFieldID')
где UserFieldID - это значение из поля "Имя в базе данных", которое Вы задавали при создании пользовательского поля. Соответственно полученное таким образом значение Вы можете использовать дальше так, как Вам необходимо.
"Кулак Олег" написал:Для какой цели Вы хотите обратиться к полю?
Цель - при изменении этого поля : сравнить старое значение этого поля и новое, и запустить необходимый для выполнения скрипт, если эти значения разные.
Для этого Вам нужно в сервисе Вашего окна wnd_*Edit на вкладке невизуальных компонентов для даталинка dlData определить обработчик события OnDataChange (или перейти на него если уже есть).
В скрипте вначале должен быть объявлен глобальный объект скрипта. Допустим, что он называется YourScriptObject. Будем сохранять старое значения поля в виде YourScriptObject.OldYourUserFieldValue.
В коде обработчика пропишите фрагмент
if (DataField.Name = 'TestUserFieldID') { if (!IsEmptyValue(YourScriptObject.OldYourUserFieldValue) && YourScriptObject.OldYourUserFieldValue != DataField.Value) { //Ваши действия здесь } YourScriptObject.OldYourUserFieldValue = DataField.Value; }
который и будет реализовывать Вашу задачу.