Работа с дополнительными реквизитами в типовых конфигурациях на базе БСП (Библиотека стандартных подсистем) часто ставит перед разработчиками сложную задачу. Поскольку эти реквизиты создаются динамически в процессе выполнения кода, их невозможно найти на форме привычными методами на этапе создания самой формы. Давайте разберемся, как правильно «поймать» такой элемент и назначить ему обработчик события.
Важно помнить, что элементы управления для дополнительных реквизитов не существуют статически. Они появляются на форме только после выполнения определенных процедур (обычно это происходит в ПриСозданииНаСервере или при переключении страниц формы). Имена этих элементов генерируются системой автоматически, используя уникальный идентификатор свойства (GUID), в котором дефисы заменяются на латинскую букву «x».
Именно поэтому стандартный поиск по имени, которое мы видим в разделе для разработчиков, часто не дает результатов. Нам необходимо вычислить техническое имя элемента, которое присваивает ему БСП в момент генерации формы.
Чтобы назначить обработчик ПриИзменении, нам нужно сначала идентифицировать нужный элемент, а затем воспользоваться методом УстановитьДействие. Рассмотрим алгоритм действий:
Объект.ДополнительныеРеквизиты.УникальныйИдентификатор свойства.УстановитьДействие к найденному элементу Элементы.Давайте проанализируем пример кода, который позволяет реализовать эту задачу универсально:
Для Каждого Стр Из Объект.ДополнительныеРеквизиты Цикл
// Ищем свойство по его предопределенному имени для разработчика
Если Стр.Свойство.Имя = "ДатаДоставки" Тогда
// Формируем техническое имя элемента формы
// Префикс стандартный для БСП, далее идет GUID свойства с заменой символов
ИмяРеквизита = "ДополнительныйРеквизитЗначение_" +
СтрЗаменить(Стр.Свойство.УникальныйИдентификатор, "-", "x");
// Назначаем обработчик, если элемент уже создан на форме
Если Элементы.Найти(ИмяРеквизита) <> Неопределено Тогда
Элементы[ИмяРеквизита].УстановитьДействие("ПриИзменении", "ИмяВашейПроцедурыНаКлиенте");
КонецЕсли;
КонецЕсли;
КонецЦикла;
При использовании этого подхода обратите внимание на следующие нюансы:
ПриИзменении для группы, в которой находятся свойства, или процедура, отвечающая за отображение страницы с дополнительными реквизитами.БСП, при обновлении конфигурации стоит проверять работоспособность кода.ПередЗаписью или ПриЗаписи в модуле объекта. Работа с табличной частью ДополнительныеРеквизиты является более «чистой» с точки зрения архитектуры, так как она не зависит от того, отрисован ли в данный момент элемент управления на форме.Использование метода УстановитьДействие позволяет реализовать интерактивное взаимодействие пользователя с дополнительными реквизитами, делая интерфейс более гибким и отзывчивым к действиям оператора.