При разработке или доработке конфигураций 1С часто возникает необходимость в хранении различных пользовательских настроек, которые должны быть доступны для изменения в пользовательском режиме. Для таких целей в платформе 1С предусмотрен объект метаданных Константа. Однако, просто добавить константу в конфигурацию недостаточно – важно правильно ее вынести в интерфейс, например, в раздел НСИ (Нормативно-справочная информация), чтобы пользователи могли легко с ней работать. Рассмотрим подробно, как этого добиться, используя стандартные механизмы платформы.
Первым шагом всегда является добавление самой константы в дерево метаданных вашей конфигурации. Этот процесс является базовым и служит основой для дальнейшей работы с настройкой.
ИспользоватьДополнительнуюФункциональность.После создания константы не забудьте обновить конфигурацию базы данных, нажав кнопку Обновить конфигурацию базы данных (часто это F7 или меню Конфигурация -> Обновить конфигурацию базы данных).
После того как константа создана, нам необходимо сделать ее доступной в пользовательском интерфейсе. Для этого мы включим ее в соответствующую подсистему, например, НСИ или Администрирование, в зависимости от логического предназначения настройки.
Существует два основных способа включения константы в подсистему:
Через редактор подсистемы:
Через свойства константы:
После включения константы в подсистему и очередного обновления конфигурации базы данных, платформа 1С автоматически сгенерирует команду для открытия формы редактирования этой константы. Обычно эта команда появляется в группе Панель действий. Сервис выбранной подсистемы. Это уже позволяет пользователям получить доступ к константе, но для более удобной и интегрированной работы нам потребуется следующий шаг.
Для создания полноценного и удобного интерфейса для работы с константами в 1С чаще всего используют единую форму, на которой собраны все необходимые настройки. Это избавляет пользователя от необходимости открывать каждую константу по отдельности и обеспечивает централизованное управление настройками.
Это наиболее распространенный сценарий, так как многие конфигурации уже содержат общие формы для настроек (например, "Настройки системы", "Настройки пользователя" или "Общие настройки НСИ").
ФормаОбщиеНастройки.НаборКонстант. Это специальный объект, который предназначен для работы с группой констант как с единым целым. Платформа 1С автоматически считывает и записывает значения всех констант, которые привязаны к этому объекту.НаборКонстант. Здесь должны отображаться все константы, которые были добавлены в конфигурацию, включая вашу новую константу ИспользоватьДополнительнуюФункциональность.НаборКонстант.ИспользоватьДополнительнуюФункциональность), из дерева реквизитов на макет формы. Платформа автоматически создаст элемент управления (например, флажок для типа Булево) и свяжет его с данными константы. Таким образом, константа будет "вытащена" на форму декларативно, без необходимости писать программный код для получения/установки ее значения. Подобное добавление реквизитов и элементов формы можно выполнять и другими способами.Теперь при открытии общей формы настроек ваша константа будет отображаться как полноценный элемент управления, и пользователи смогут изменять ее значение.
Если в вашей конфигурации нет подходящей общей формы для настроек НСИ, или вы хотите создать отдельную форму для специфических констант, вы можете создать новую общую форму констант.
ИспользоватьДополнительнуюФункциональность), а также любые другие константы, которые вы хотите включить в этот набор настроек.НаборКонстант.ОткрытьФормуНастроек).Действие) напишите код для открытия вашей новой формы констант:
&НаКлиенте
Процедура ОткрытьФормуНастроек(Команда)
ОткрытьФорму("Константы.Форма.ВашаНоваяФормаКонстант");
КонецПроцедуры
ВашаНоваяФормаКонстант на актуальное имя формы, которую вы создали).
В процессе работы с формами констант мы постоянно упоминаем объект НаборКонстант. Рассмотрим подробнее, почему он является ключевым элементом для правильной и типовой работы с настройками в 1С.
НаборКонстант – это системный объект, который предоставляет унифицированный интерфейс для взаимодействия с набором констант как с единым целым. Он является основным источником данных для форм констант и обладает рядом преимуществ:
НаборКонстант на форму, платформа автоматически управляет процессом чтения и записи ее значения в базу данных. Вам не нужно писать код для получения значения при открытии формы и сохранения при ее закрытии или изменении.НаборКонстант – это типовой и рекомендуемый способ работы с общими настройками в 1С. Такой подход облегчает поддержку конфигурации и ее обновление.НаборКонстант.ИмяВашейКонстанты, вы напрямую связываете элемент управления с метаданными константы, позволяя платформе делать всю "грязную работу" по управлению данными.Таким образом, когда на форуме обсуждалось, что "остальные вытащены на форму" (сообщение 7) и нужна "путь к данным" (сообщение 9), это именно о работе с НаборКонстант. Мы декларативно указываем, какую константу из набора нужно отобразить, и платформа берет на себя все остальное.
В сообщении 12 форума упоминается решение через "хранилище" без добавления константы. Важно понимать, что такой подход, хотя и возможен, не является типовым и оптимальным для простых настроек.
Константа как объект метаданных специально предназначена для хранения значений, относящихся к настройкам конфигурации. Она обеспечивает:
Константы.ИмяВашейКонстанты.Получить() и Константы.ИмяВашейКонстанты.Установить(Значение).НаборКонстант.Использование ХранилищаЗначения (например, в качестве реквизита общего модуля или константы с типом ХранилищеЗначения, где хранится сериализованная структура настроек) оправдано, когда:
Для простых булевых значений, чисел, строк или дат объект Константа является более предпочтительным, так как он более прозрачен, легче поддерживается и предоставляет стандартные механизмы для работы, включая отображение на формах.
Если по каким-то причинам вы не хотите интегрировать свою константу в существующую общую форму настроек или создавать новую, существует простой обходной путь, предложенный в сообщении 6: создать общую команду, которая будет напрямую открывать стандартную форму вашей константы.
ОткрытьНастройкиМоейКонстанты) и Синоним ("Моя константа").Теперь в указанной подсистеме появится команда, при нажатии на которую будет открываться форма вашей константы. Этот способ быстрый и не требует доработки форм, но может быть менее удобным для пользователя, если констант много и они логически сгруппированы.
В итоге, наиболее правильным и гибким решением для выноса константы в настройки НСИ является ее создание в конфигурации, включение в подсистему и последующая интеграция в общую форму настроек через реквизит НаборКонстант. Этот подход обеспечивает типовую работу с платформой, удобство для пользователя и легкость в поддержке конфигурации.