К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как добавить константу на форму в 1С

Как добавить константу на форму в 1С: вывод на форму обработки, документа и настройки. Пошаговая инструкция для управляемых и обычных форм, ошибки и FAQ.

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

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

Ниже разобраны оба сценария с конкретными действиями в конфигураторе, программным кодом и проверкой результата. Инструкции ориентированы на платформу 1С:Предприятие 8.3 и подходят для самописных конфигураций и доработок типовых.

Что нужно проверить перед началом работы

Сначала убедитесь, что константа существует в конфигурации. Откройте конфигуратор, в дереве конфигурации разверните ветку «Константы» и найдите нужный объект. Если константы нет, создайте её: правый клик по ветке «Константы» → «Добавить», задайте имя, синоним и тип данных (строка, число, булево, дата или ссылка на справочник).

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

Проверьте права: у пользователя, который будет работать с формой, должны быть права на чтение константы, а если значение будет редактироваться — и на изменение. Права настраиваются в ролях конфигурации, ветка «Константы» в редакторе роли.

Способ 1. Вывод константы через реквизит формы

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

Порядок действий в конфигураторе:

  1. Откройте нужную форму объекта (или создайте новую форму обработки: правый клик по обработке → «Формы» → «Добавить»).
  2. В редакторе формы перейдите на вкладку «Реквизиты» в правой панели.
  3. Добавьте реквизит формы: задайте имя, например ОсновнаяОрганизация, и тип, совпадающий с типом константы.
  4. Перетащите реквизит из панели реквизитов в дерево элементов формы в левой части редактора — платформа автоматически создаст поле ввода с подходящим видом.
  5. Настройте свойства элемента: заголовок, доступность, подсказку.

Теперь нужно заполнить реквизит значением константы. Откройте модуль формы и добавьте обработчик:

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ОсновнаяОрганизация = Константы.ОсновнаяОрганизация.Получить();

КонецПроцедуры

Если пользователь должен сохранять изменённое значение обратно в константу, добавьте команду формы «Сохранить» и её обработчик:

&НаСервере

Процедура СохранитьНаСервере()

Константы.ОсновнаяОрганизация.Установить(ОсновнаяОрганизация);

КонецПроцедуры

&НаКлиенте

Процедура Сохранить(Команда)

СохранитьНаСервере();

ПоказатьОповещениеПользователя("Настройка сохранена");

КонецПроцедуры

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

Способ 2. Автоматическая форма констант

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

Чтобы константа появилась в интерфейсе, откройте её свойства в конфигураторе и проверьте, что на закладке «Командный интерфейс» или в свойствах подсистемы константа включена в нужную подсистему. В типовых конфигурациях на БСП (библиотека стандартных подсистем) константы обычно выводятся на общую форму «Настройки», и вмешательство в код не требуется — достаточно добавить константу в состав соответствующей функциональной опции или подсистемы.

Также можно задать основную форму констант: в свойствах корня конфигурации есть свойство «Основная форма констант». Если создать общую форму и назначить её туда, она будет открываться при вызове стандартной команды работы с константами.

Сравнение вариантов

Реквизит формы + код

Полный контроль над внешним видом и логикой, подходит для любых форм. Требует программирования и доработки конфигурации.

Автоматическая форма констант

Быстро и без кода, но внешний вид стандартный, все константы выводятся списком, гибкой настройки нет.

Расширение конфигурации

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

Особенности для обычных форм

В обычных формах (режим обычного приложения, толстый клиент) механика другая. Реквизит формы добавляется через диалог редактора формы, а значение константы присваивается в обработчике ПриОткрытии() модуля формы, потому что вся логика выполняется на клиенте и разделения на клиент-сервер нет.

Процедура ПриОткрытии()

ОсновнаяОрганизация = Константы.ОсновнаяОрганизация.Получить();

КонецПроцедуры

Обращение к менеджеру констант здесь выполняется напрямую, без серверного вызова. Сохранение делается аналогично через Константы.Имя.Установить(Значение). Учтите, что обычные формы не работают в тонком и веб-клиенте, поэтому для новых разработок этот вариант применять не стоит.

Вывод константы на форму списка или документа без редактирования

Иногда константу нужно только показать, например вывести на форму документа информационную надпись «Префикс базы: УТ». В этом случае реквизиту формы установите свойство «Только просмотр» у элемента, либо используйте элемент «Надпись» (декорацию), заголовок которой формируется программно:

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Элементы.ДекорацияПрефикс.Заголовок =

"Префикс базы: " + Константы.ПрефиксИнформационнойБазы.Получить();

КонецПроцедуры

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

Если значение должно обновляться на форме при изменении константы другим пользователем, простого заполнения при открытии недостаточно — форма не получает уведомлений об изменении констант автоматически. Для таких сценариев значение перечитывают вручную при активации формы или по кнопке «Обновить».
ПЗ
Практическое замечание

Проверка результата и типичные ошибки

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

Проверить фактическое значение константы можно и без формы — через консоль кода или временную обработку с вызовом Константы.Имя.Получить(). Это помогает отделить ошибку в логике формы от ошибки в данных.

Контрольные точки

Как проверить результат

Отображение при открытии
Норма

Поле формы заполнено текущим значением константы

Тревожный признак

Поле пустое при заполненной константе — проверьте обработчик ПриСозданииНаСервере

Сохранение
Норма

После записи и повторного открытия видно новое значение

Тревожный признак

Значение сбрасывается — команда сохранения не вызывает Установить()

Права пользователя
Норма

Поле доступно и сохраняется под рабочей учётной записью

Тревожный признак

Ошибка доступа или поле только для просмотра — не хватает прав на константу в роли

Типичные ошибки
01
Реквизит создан, но не перенесён в дерево элементов — поле просто не появляется на форме
02
Тип реквизита не совпадает с типом константы — ошибка преобразования или пустое значение при открытии
03
Вызов Константы.Получить() в клиентском обработчике управляемой формы — ошибка, так как менеджер констант недоступен на клиенте
04
Забыто обновление конфигурации базы данных (F7) — изменения не видны в режиме предприятия
05
Нет прав на константу у роли пользователя — поле недоступно или возникает нарушение прав доступа

Ограничения и когда привлекать разработчика

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

Не редактируйте константы, которые используются механизмами обмена и подсистемами БСП (например, настройки синхронизации данных), без понимания их роли — некорректное значение может нарушить обмен. Перед доработкой рабочей базы сделайте выгрузку в файл .dt.

Итог

Что важно запомнить

Константа выводится на форму через реквизит формы: значение читается в ПриСозданииНаСервере через Константы.Имя.Получить(), сохраняется через Установить(). Без кода работает автоматическая форма констант. Для типовых конфигураций предпочтительны расширения, а любые доработки делаются на копии базы.

Частые вопросы

Можно ли вывести константу на форму без программирования?

Да, если использовать автоматическую форму констант, которую строит платформа. Константа включается в подсистему через свойства, и пользователь открывает её значение из панели навигации. Для произвольной формы без кода не обойтись — потребуется минимальный обработчик ПриСозданииНаСервере.

Почему поле на форме пустое, хотя константа заполнена?

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

Как дать пользователю возможность менять константу, но не всем?

Права регулируются ролями: в роли для константы установите право «Чтение» всем, а «Изменение» — только нужной группе. Дополнительно в форме можно программно устанавливать свойство «Только просмотр» у элемента в зависимости от роли текущего пользователя.

Чем константа отличается от параметра сеанса и функциональной опции?

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

Можно ли вывести константу на форму в расширении конфигурации?

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

Как показать значение константы в списке документов?

Добавьте на форму списка декорацию-надпись или реквизит с признаком «Только просмотр» и заполните его в ПриСозданииНаСервере. Добавлять константу как колонку динамического списка нельзя — список строится по данным таблицы документов, а константа хранится отдельно.