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