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