При создании новой константы в конфигураторе 1С разработчики часто сталкиваются с ситуацией, когда созданный объект метаданных не появляется на существующей общей форме констант или в панели настроек программы. Разберем по шагам, почему это происходит и как правильно вывести константу в пользовательский интерфейс.
Если в конфигурации используется общая форма констант, платформа 1С автоматически не включает новые константы в ее структуру. Выясним причину: форма хранит фиксированный перечень констант, заданный в ее метаданных. Чтобы новая константа стала доступна в реквизитах формы, выполним следующие действия:
ФормаКонстант или НастройкаПараметровУчета).После включения в состав константа появится в правой панели редактора формы внутри основного реквизита НаборКонстант.
После того как константа появилась в составе реквизита НаборКонстант, перенесем ее в пользовательский интерфейс формы. В типовых конфигурациях и формах настроек предусмотрен специальный порядок размещения:
НаборКонстант в левую панель — в дерево элементов формы.ПриИзменении.
&НаКлиенте
Процедура ИмяКонстантыПриИзменении(Элемент)
Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры
Проанализируем еще одну частую проблему: константа добавлена на форму, но у пользователя поле ввода не отображается или недоступно для редактирования. Причина заключается в отсутствии прав.
Для новой константы необходимо обязательно открыть нужные роли пользователей и выставить права: Чтение, Изменение, Просмотр и Редактирование. Без прав на просмотр и редактирование элемент формы останется скрытым или заблокированным для изменения.
Если созданная константа отвечает за включение или отключение определенного функционала программы, свяжем ее с механизмом функциональных опций:
Если значение такой константы изменяется программно во время работы пользователя, для немедленного обновления интерфейса без перезапуска сеанса вызовем метод обновления:
ОбновитьПовторноИспользуемыеЗначения();
Если нет необходимости перерабатывать общую форму констант, рассмотрим альтернативные варианты работы с объектом:
// Чтение значения константы
Значение = Константы.ИмяКонстанты.Получить();
// Запись нового значения
Константы.ИмяКонстанты.Установить(НовоеЗначение);