Как добавить свою константу в настройки НСИ и отобразить ее в нужном разделе 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке или доработке конфигураций 1С часто возникает необходимость в хранении различных пользовательских настроек, которые должны быть доступны для изменения в пользовательском режиме. Для таких целей в платформе 1С предусмотрен объект метаданных Константа. Однако, просто добавить константу в конфигурацию недостаточно – важно правильно ее вынести в интерфейс, например, в раздел НСИ (Нормативно-справочная информация), чтобы пользователи могли легко с ней работать. Рассмотрим подробно, как этого добиться, используя стандартные механизмы платформы.

1. Создание константы в конфигурации

Первым шагом всегда является добавление самой константы в дерево метаданных вашей конфигурации. Этот процесс является базовым и служит основой для дальнейшей работы с настройкой.

  1. Откройте конфигурацию в режиме Конфигуратор.
  2. В дереве объектов конфигурации найдите ветку Константы.
  3. Щелкните правой кнопкой мыши по ветке Константы и выберите команду Добавить.
  4. В открывшемся окне свойств новой константы задайте следующие параметры:
    • Имя: Присвоим уникальное и понятное имя, например, ИспользоватьДополнительнуюФункциональность.
    • Синоним: Укажем понятное для пользователя описание, например, "Использовать дополнительную функциональность".
    • Тип данных: Выберите подходящий тип данных. Для простых флагов включения/выключения подойдет тип Булево. Для числовых значений – Число, для текста – Строка и так далее.
    • При необходимости заполните Подсказку, которая будет отображаться пользователю.
  5. После заполнения всех полей нажмите ОК, чтобы сохранить новую константу.

После создания константы не забудьте обновить конфигурацию базы данных, нажав кнопку Обновить конфигурацию базы данных (часто это F7 или меню Конфигурация -> Обновить конфигурацию базы данных).

2. Включение константы в подсистему НСИ

После того как константа создана, нам необходимо сделать ее доступной в пользовательском интерфейсе. Для этого мы включим ее в соответствующую подсистему, например, НСИ или Администрирование, в зависимости от логического предназначения настройки.

Существует два основных способа включения константы в подсистему:

  1. Через редактор подсистемы:

    • В дереве объектов конфигурации перейдите к ветке Подсистемы.
    • Откройте на редактирование нужную подсистему, например, НСИ или ту, куда вы хотите включить константу.
    • Перейдите на закладку Состав.
    • В левой части окна вы увидите список всех объектов конфигурации. Найдите там вашу новую константу и установите флажок напротив нее, чтобы включить в состав подсистемы.
  2. Через свойства константы:

    • В дереве объектов конфигурации выделите созданную ранее константу.
    • Вызовите контекстное меню (правой кнопкой мыши) и выберите команду Дополнительно (или откройте ее свойства).
    • В открывшемся окне на закладке Подсистемы установите флаг напротив подсистемы, в которую вы хотите включить константу.

После включения константы в подсистему и очередного обновления конфигурации базы данных, платформа 1С автоматически сгенерирует команду для открытия формы редактирования этой константы. Обычно эта команда появляется в группе Панель действий. Сервис выбранной подсистемы. Это уже позволяет пользователям получить доступ к константе, но для более удобной и интегрированной работы нам потребуется следующий шаг.

3. Создание или доработка общей формы констант для раздела НСИ

Для создания полноценного и удобного интерфейса для работы с константами в 1С чаще всего используют единую форму, на которой собраны все необходимые настройки. Это избавляет пользователя от необходимости открывать каждую константу по отдельности и обеспечивает централизованное управление настройками.

3.1. Доработка существующей формы констант

Это наиболее распространенный сценарий, так как многие конфигурации уже содержат общие формы для настроек (например, "Настройки системы", "Настройки пользователя" или "Общие настройки НСИ").

  1. Откройте конфигурацию в режиме Конфигуратор.
  2. Найдите общую форму, которая используется для отображения настроек в вашем разделе НСИ. Обычно это общая форма, связанная с объектом НаборКонстант, или форма какой-либо обработки настроек. Для примера, допустим, у нас есть общая форма с именем ФормаОбщиеНастройки.
  3. Откройте эту форму на редактирование.
  4. На закладке Реквизиты формы мы увидим дерево реквизитов. Обратите внимание на реквизит с именем НаборКонстант. Это специальный объект, который предназначен для работы с группой констант как с единым целым. Платформа 1С автоматически считывает и записывает значения всех констант, которые привязаны к этому объекту.
  5. Разверните дерево реквизита НаборКонстант. Здесь должны отображаться все константы, которые были добавлены в конфигурацию, включая вашу новую константу ИспользоватьДополнительнуюФункциональность.
  6. Перетащите элемент, соответствующий вашей константе (например, НаборКонстант.ИспользоватьДополнительнуюФункциональность), из дерева реквизитов на макет формы. Платформа автоматически создаст элемент управления (например, флажок для типа Булево) и свяжет его с данными константы. Таким образом, константа будет "вытащена" на форму декларативно, без необходимости писать программный код для получения/установки ее значения. Подобное добавление реквизитов и элементов формы можно выполнять и другими способами.
  7. При необходимости, настройте свойства добавленного элемента управления: его заголовок, расположение, видимость и другие параметры (также вы можете настроить доступность элементов формы у конкретных пользователей).
  8. Сохраните форму и обновите конфигурацию базы данных.

Теперь при открытии общей формы настроек ваша константа будет отображаться как полноценный элемент управления, и пользователи смогут изменять ее значение.

3.2. Создание новой общей формы констант

Если в вашей конфигурации нет подходящей общей формы для настроек НСИ, или вы хотите создать отдельную форму для специфических констант, вы можете создать новую общую форму констант.

  1. В конфигураторе выделите ветку Константы.
  2. Вызовите контекстное меню и выберите команду Создать форму констант....
  3. В процессе создания формы система предложит вам выбрать константы, которые будут отображаться на этой форме. Отметьте вашу новую константу (ИспользоватьДополнительнуюФункциональность), а также любые другие константы, которые вы хотите включить в этот набор настроек.
  4. Платформа автоматически сгенерирует форму с элементами управления для каждой выбранной константы, используя реквизит НаборКонстант.
  5. Сохраните созданную форму.
  6. Чтобы эта форма была доступна в разделе НСИ, вам потребуется создать команду, которая будет ее открывать.
    • Перейдите к нужной подсистеме (например, НСИ) и откройте ее на редактирование.
    • На закладке Команды добавьте новую команду.
    • Укажите Имя и Действие для команды (например, ОткрытьФормуНастроек).
    • В обработчике команды на клиенте (Действие) напишите код для открытия вашей новой формы констант:
      
      &НаКлиенте
      Процедура ОткрытьФормуНастроек(Команда)
          ОткрытьФорму("Константы.Форма.ВашаНоваяФормаКонстант");
      КонецПроцедуры
      
      (Замените ВашаНоваяФормаКонстант на актуальное имя формы, которую вы создали).
    • На закладке Основные подсистемы, в разделе Командный интерфейс, перетащите вашу новую команду в нужную группу, например, в Панель действий. Настройки.
  7. Сохраните подсистему и обновите конфигурацию базы данных.

4. Важность использования объекта "НаборКонстант"

В процессе работы с формами констант мы постоянно упоминаем объект НаборКонстант. Рассмотрим подробнее, почему он является ключевым элементом для правильной и типовой работы с настройками в 1С.

НаборКонстант – это системный объект, который предоставляет унифицированный интерфейс для взаимодействия с набором констант как с единым целым. Он является основным источником данных для форм констант и обладает рядом преимуществ:

  1. Автоматическая привязка данных: Когда вы перетаскиваете константу из реквизита НаборКонстант на форму, платформа автоматически управляет процессом чтения и записи ее значения в базу данных. Вам не нужно писать код для получения значения при открытии формы и сохранения при ее закрытии или изменении.
  2. Совместная работа с группой констант: НаборКонстант позволяет легко собрать на одной форме множество различных констант и управлять ими как единым пакетом настроек. Это удобно для пользователей и упрощает администрирование системы.
  3. Стандартный механизм: Использование НаборКонстант – это типовой и рекомендуемый способ работы с общими настройками в 1С. Такой подход облегчает поддержку конфигурации и ее обновление.
  4. Путь к данным: Когда вы указываете путь к данным для элемента формы как НаборКонстант.ИмяВашейКонстанты, вы напрямую связываете элемент управления с метаданными константы, позволяя платформе делать всю "грязную работу" по управлению данными.

Таким образом, когда на форуме обсуждалось, что "остальные вытащены на форму" (сообщение 7) и нужна "путь к данным" (сообщение 9), это именно о работе с НаборКонстант. Мы декларативно указываем, какую константу из набора нужно отобразить, и платформа берет на себя все остальное.

5. Отказ от использования "Хранилища значений" для простых констант

В сообщении 12 форума упоминается решение через "хранилище" без добавления константы. Важно понимать, что такой подход, хотя и возможен, не является типовым и оптимальным для простых настроек.

Константа как объект метаданных специально предназначена для хранения значений, относящихся к настройкам конфигурации. Она обеспечивает:

  1. Явное объявление: Каждая константа имеет свое имя, тип и синоним, что делает ее понятной и управляемой в конфигураторе.
  2. Прямой доступ: Значения констант легко получить и установить по имени: Константы.ИмяВашейКонстанты.Получить() и Константы.ИмяВашейКонстанты.Установить(Значение).
  3. Интеграция с интерфейсом: Как мы убедились, константы легко интегрируются в формы настроек с помощью НаборКонстант.

Использование ХранилищаЗначения (например, в качестве реквизита общего модуля или константы с типом ХранилищеЗначения, где хранится сериализованная структура настроек) оправдано, когда:

  1. Вам нужно хранить сложные, произвольные данные (например, дерево настроек, сериализованный объект).
  2. Количество настроек очень велико и динамически меняется, что делает нецелесообразным создание отдельной константы для каждого параметра.
  3. Настройки не являются глобальными и специфичны для определенных объектов или пользователей, при этом нет необходимости в создании отдельного регистра сведений.

Для простых булевых значений, чисел, строк или дат объект Константа является более предпочтительным, так как он более прозрачен, легче поддерживается и предоставляет стандартные механизмы для работы, включая отображение на формах.

6. Альтернативный способ: Общая команда для вызова формы константы

Если по каким-то причинам вы не хотите интегрировать свою константу в существующую общую форму настроек или создавать новую, существует простой обходной путь, предложенный в сообщении 6: создать общую команду, которая будет напрямую открывать стандартную форму вашей константы.

  1. Откройте конфигурацию в режиме Конфигуратор.
  2. В дереве объектов конфигурации найдите ветку Общие -> Общие команды.
  3. Щелкните правой кнопкой мыши по Общие команды и выберите Добавить.
  4. Задайте Имя (например, ОткрытьНастройкиМоейКонстанты) и Синоним ("Моя константа").
  5. В поле Действие команды выберите тип Открыть форму.
  6. В поле Форма укажите путь к стандартной форме вашей константы. Для этого нажмите кнопку выбора (...) и в открывшемся списке найдите Константы -> ВашаНоваяКонстанта -> ФормаКонстанты (или основная форма, если она была создана).
  7. На закладке Подсистемы общей команды отметьте подсистему НСИ или ту, где вы хотите, чтобы команда отображалась.
  8. Сохраните общую команду и обновите конфигурацию базы данных.

Теперь в указанной подсистеме появится команда, при нажатии на которую будет открываться форма вашей константы. Этот способ быстрый и не требует доработки форм, но может быть менее удобным для пользователя, если констант много и они логически сгруппированы.

В итоге, наиболее правильным и гибким решением для выноса константы в настройки НСИ является ее создание в конфигурации, включение в подсистему и последующая интеграция в общую форму настроек через реквизит НаборКонстант. Этот подход обеспечивает типовую работу с платформой, удобство для пользователя и легкость в поддержке конфигурации.

← На главную