Разработка и Конфигурация · 11 мин
Как создать форму констант в 1С
Как создать форму констант в 1С: автогенерация формы, настройка состава констант, создание своей формы констант в конфигураторе и типичные ошибки разработчика.
Константы в 1С хранят глобальные настройки конфигурации: наименование организации, функциональные опции, параметры учёта. Чтобы пользователь мог менять их значения, нужна форма констант — специальный объект, который объединяет несколько констант на одном экране и сохраняет их вместе. Без такой формы каждую константу пришлось бы редактировать по отдельности через меню «Все функции», что неудобно и недоступно обычному пользователю.
В 1С:Предприятии 8.3 существует два пути. Первый — автоматическая генерация: платформа сама строит форму по составу констант, если включён режим совместимости «Такси» и не задана своя форма. Второй — создание собственной формы констант в конфигураторе, когда нужен нестандартный порядок полей, группировка по страницам, дополнительные элементы управления или программная логика. Ниже разобраны оба подхода с точными действиями.
Что такое форма констант и когда она нужна
Форма констант — это экранная форма, которая отображает несколько констант одновременно и позволяет записать их одним действием. Физически она связана с объектом метаданных «Константы» в целом, а не с отдельной константой. В дереве конфигурации формы констант создаются в ветке «Общие → Формы констант», либо непосредственно в ветке «Константы» через контекстное меню.
Форма нужна в трёх типовых ситуациях. Первая — панель настроек программы: пользователь открывает один экран и настраивает функциональные опции, префиксы, параметры обмена. Вторая — группировка связанных настроек с логикой: например, при отключении опции «Вести складской учёт» нужно блокировать связанные поля. Третья — когда константа не должна редактироваться напрямую, а только через осмысленный интерфейс с пояснениями.
Если констант мало и они независимы, часто достаточно автоматически генерируемой формы. Если требуется управление видимостью, проверки при записи или нестандартный состав элементов — создают собственную форму.
Автоматическая генерация формы констант
Самый быстрый способ получить рабочую форму — поручить это платформе. В режиме управляемого приложения «Такси» платформа умеет сама строить форму констант по их составу, если разработчик не назначил собственную форму.
Порядок действий следующий. Откройте конфигуратор, найдите в дереве ветку «Константы» и откройте её свойства (правый клик → «Свойства» или палитра свойств). Убедитесь, что свойство «Основная форма» не заполнено. Затем проверьте состав констант: по умолчанию в состав включаются все константы конфигурации, но его можно ограничить через свойство «Состав», выбрав только нужные.
После этого форма становится доступна в режиме предприятия. В тонком клиенте её можно открыть через главное меню: «Все функции → Константы → <имя формы констант>», либо программно методом ОткрытьФорму("ОбщаяФорма.ФормаКонстант") — если форма создана как общая, или через автоматически сгенерированную форму, доступную из стандартного интерфейса. Платформа разместит поля в одну колонку в порядке следования констант в составе.
- 1Откройте конфигуратор и перейдите в ветку «Константы»
- 2В свойствах ветки убедитесь, что «Основная форма» не задана
- 3Настройте свойство «Состав»: отметьте константы, которые должны попасть на форму
- 4Обновите конфигурацию базы данных (F7)
- 5В режиме предприятия откройте «Все функции → Константы» и проверьте, что поля отображаются и сохраняются
Создание собственной формы констант в конфигураторе
Когда автогенерации недостаточно, форму создают вручную. В дереве конфигурации выделите ветку «Константы», вызовите контекстное меню и выберите «Добавить форму» либо откройте ветку «Общие → Формы констант» и добавьте форму там. В конструкторе форм выберите тип «Форма констант» — платформа автоматически создаст реквизит формы с набором констант.
В конструкторе отметьте константы, которые должны попасть на форму. Платформа добавит их в состав реквизита «НаборКонстант» и разместит соответствующие элементы. После создания откройте форму в редакторе: элементы можно перетаскивать, объединять в группы-страницы, менять заголовки и подсказки. Каждое поле формы связано с константой через путь к данным вида НаборКонстант.ИмяКонстанты.
Чтобы форма открывалась вместо автоматической, назначьте её основной: в свойствах ветки «Константы» укажите созданную форму в свойстве «Основная форма». После обновления конфигурации базы данных именно она будет открываться пользователям.
Программная работа с формой констант
Своя форма констант поддерживает стандартные обработчики управляемой формы, которые позволяют добавить логику. Чаще всего используются ПриСозданииНаСервере (начальная настройка видимости элементов), ПередЗаписью и ПриЗаписи (проверки и сопутствующие действия), а также обработчики изменения полей для динамического управления интерфейсом.
Типовой пример — блокировка зависимых полей. Если константа «ИспользоватьСкладскойУчет» выключена, поле «СкладПоУмолчанию» должно быть недоступно. Это делается в обработчике ПриИзменении поля флажка с установкой свойства Доступность у зависимого элемента.
&НаКлиенте
Процедура ИспользоватьСкладскойУчетПриИзменении(Элемент)
Элементы.СкладПоУмолчанию.Доступность = НаборКонстант.ИспользоватьСкладскойУчет;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.СкладПоУмолчанию.Доступность = НаборКонстант.ИспользоватьСкладскойУчет;
КонецПроцедурыОбратите внимание на директивы компиляции: ПриСозданииНаСервере выполняется на сервере, обработчики интерактивных событий — на клиенте. Обращение к НаборКонстант доступно в обоих контекстах, так как это реквизит формы, передаваемый между клиентом и сервером.
Открытие формы констант программно и из интерфейса
Чтобы пользователь мог открыть форму, её нужно разместить в командном интерфейсе. У формы констант есть стандартная команда открытия, которую можно добавить в подсистему: откройте свойства нужной подсистемы, перейдите на закладку «Командный интерфейс» и включите видимость команды открытия формы констант. После этого пункт появится в панели навигации раздела.
Программно форма открывается методом ОткрытьФорму с указанием имени формы. Для общей формы констант используется путь вида ОбщаяФорма.ИмяФормы, для формы, созданной в ветке «Константы», — соответствующий путь к ней. В параметрах можно передать структуру, но для формы констант это требуется редко — она сама читает актуальные значения при открытии.
Если форма констант используется как панель настроек, удобно разместить её в подсистеме «Настройки» или «Администрирование» и ограничить доступ ролью. Обычным пользователям изменение констант чаще всего не нужно — права на константы настраиваются отдельно в ролях (право «Изменение» на каждую константу).
Типичные ошибки и ограничения
Самая частая ошибка — форма создана, но пользователи всё равно видят автоматическую. Причина почти всегда в том, что созданную форму не назначили основной в свойствах ветки «Константы». Проверьте это свойство и обновите конфигурацию базы данных.
Вторая распространённая проблема — константа не появляется на автоматической форме. Значит, она не входит в состав формы констант: откройте свойство «Состав» и отметьте её. Зеркальная ситуация — на форме лишние поля, которые путают пользователей; решается тем же свойством «Состав».
Третья ошибка — попытка добавить на форму констант произвольные реквизиты и ожидать, что они сохранятся. Форма констант хранит только константы; дополнительные реквизиты формы живут, пока форма открыта, и при закрытии теряются. Если нужно хранить дополнительные настройки, используйте константы, регистры сведений или хранилище общих настроек.
Проверка результата
После настройки проверьте форму в режиме предприятия под пользователем с реальными правами, а не только под администратором. Откройте форму через интерфейс подсистемы, измените значение константы, нажмите «Записать» и закройте форму. Затем откройте её снова — значение должно сохраниться.
Дополнительно проверьте программное чтение: значение константы должно быть доступно через Константы.ИмяКонстанты.Получить() и отражать внесённое изменение. Если форма содержит логику видимости, пройдите оба сценария — включение и отключение управляющей опции — и убедитесь, что зависимые поля блокируются и разблокируются корректно.
Как проверить результат
Форма открывается из командного интерфейса подсистемы
Форма доступна только через «Все функции» — не настроен командный интерфейс
После записи и повторного открытия значения сохранились
Значения сбрасываются — нарушен реквизит «НаборКонстант» или нет прав на изменение
Пользователь с ограниченной ролью либо редактирует, либо получает понятный отказ
Ошибка доступа возникает уже при открытии формы — проверьте права на просмотр констант
Зависимые поля блокируются при отключении опции
Поля остаются доступными — обработчик изменения не назначен элементу формы
FAQ
Можно ли создать несколько форм констант в одной конфигурации?
Да. В ветке «Общие → Формы констант» можно создать несколько форм с разным составом констант — например, отдельно настройки обмена и настройки учёта. Основной назначается только одна форма, остальные открываются программно через ОткрытьФорму или командами, добавленными в подсистемы.
Почему константа не отображается на автоматической форме?
Наиболее вероятная причина — константа не включена в состав формы. Откройте свойства ветки «Константы», найдите свойство «Состав» и отметьте нужную константу. Также проверьте, что у пользователя есть право просмотра этой константы: без него поле на форме не появится.
Как добавить на форму констант поясняющий текст или картинку?
В собственной форме констант доступны декоративные элементы: надписи и картинки добавляются через панель элементов формы так же, как в любой управляемой форме. Разместите их в нужной группе, задайте текст и при необходимости управляйте видимостью программно. На автогенерируемой форме это сделать нельзя — только в собственной.
Чем форма констант отличается от обработки с настройками?
Форма констант жёстко связана с объектом «Константы» и хранит значения именно в константах. Обработка — самостоятельный объект, который может хранить настройки где угодно: в регистрах, хранилище настроек, своих таблицах. Если нужно просто редактировать константы — используйте форму констант. Если нужна сложная логика, механизмы сохранения вариантов настроек или работа не только с константами — подойдёт обработка.
Как запретить пользователям менять константы, но оставить просмотр?
Настройте роли: для константы уберите право «Изменение», оставив «Чтение» и «Просмотр». Пользователь откроет форму и увидит значения, но не сможет их записать. Для полного скрытия уберите и право просмотра — тогда поле не отобразится на форме, а программное чтение константы вызовет ошибку доступа.
Что важно запомнить
Форма констант либо генерируется платформой по составу констант, либо создаётся вручную в ветке «Общие → Формы констант» и назначается основной. Для собственной формы не трогайте реквизит «НаборКонстант», логику размещайте в обработчиках формы, доступ открывайте через командный интерфейс подсистем и права ролей. Результат проверяйте под пользователем с рабочими правами: форма должна открываться, записывать значения и сохранять их при повторном открытии.