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