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

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

Для чего используют константы в 1С

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

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

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

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

Что такое константа и чем она отличается от других объектов

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

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

Основные сценарии использования констант

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

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

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

Функциональные опции: константы как переключатели интерфейса

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

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

Как создать константу и вывести её пользователю

Создание константы занимает несколько минут, но важно сразу продумать тип данных и способ редактирования. Константу без формы пользователь не сможет изменить — её придётся вывести на какую-либо форму настроек или создать отдельную общую форму.

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

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

Обращение к константам из кода

Во встроенном языке работа с константами выполняется через менеджер констант. Чтение значения не требует транзакции, запись — выполняется методом «Установить» или через набор констант, если нужно сохранить несколько значений в одной транзакции.

// Чтение значения константы

ВалютаУчета = Константы.ВалютаРегламентированногоУчета.Получить();

// Запись значения

Константы.ДатаЗапретаРедактирования.Установить(Дата(2026, 12, 31));

// Пакетная запись нескольких констант

Набор = Константы.СоздатьНабор("ВалютаРегламентированногоУчета, ИспользоватьСерии");

Набор.ВалютаРегламентированногоУчета = Справочники.Валюты.НайтиПоКоду("643");

Набор.ИспользоватьСерии = Истина;

Набор.Записать();

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

Когда константа не подходит: альтернативы

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

Что выбрать вместо константы

Регистр сведений с измерением «Организация»

Когда настройка различается по организациям в одной базе. Константа здесь даст общее значение для всех.

Периодический регистр сведений

Когда важна история: например, изменение ставки или ответственного лица во времени.

Справочник

Когда значений несколько и они выбираются пользователем из списка (виды цен, склады).

Хранилище общих настроек

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

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

Риски, права и типичные ошибки

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

Типичные ошибки
01
Хранение в константе периодических значений — история теряется, старые документы пересчитываются по новому значению.
02
Использование константы для настроек, различающихся по организациям или пользователям, — значения конфликтуют между собой.
03
Отсутствие формы редактирования: константа создана, но пользователь не может её изменить без конфигуратора.
04
Изменение значения в коде без проверки прав — у пользователя без прав на запись возникает ошибка в неожиданном месте.
05
Прямая правка констант типовой конфигурации в обход штатных форм настроек — рассинхронизация функциональных опций.

Ещё одна ловушка — значения по умолчанию. Новая константа типа «Булево» имеет значение «Ложь», ссылочная — пустую ссылку. Если код не проверяет заполненность, можно получить пустую валюту в проводках или пустую организацию в печатной форме. Хорошая практика — при первом запуске или в обработчике обновления заполнять константы осмысленными значениями.

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

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

Константа доступна пользователю
Норма

Поле видно на форме настроек и сохраняет значение без ошибок

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

Поле недоступно или при записи возникает ошибка прав

Функциональная опция работает
Норма

При включении флага объекты появляются в интерфейсе, при выключении — скрываются

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

Интерфейс не меняется — опция не привязана к объектам

Код читает актуальное значение
Норма

После изменения константы отчёты и документы используют новое значение

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

Используется старое значение — возможно, оно зашито в код или закэшировано в сеансе

Часто задаваемые вопросы

Можно ли узнать, кто и когда изменил константу?

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

Константа одна на всю базу — а если база работает в разделённом режиме (SaaS)?

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

Чем константа отличается от параметра сеанса?

Параметр сеанса существует только в рамках сеанса пользователя и задаётся программно при входе, а константа хранится в базе постоянно. Параметры сеанса подходят для данных текущего контекста (текущий пользователь, режим работы), константы — для долгоживущих настроек.

Можно ли хранить в константе пароль или токен?

Технически можно, но небезопасно: значение хранится в открытом виде и доступно всем, у кого есть права на чтение. Для секретов лучше использовать безопасное хранилище (в типовых — подсистема «Пользователи»/«Общего назначения») или внешние защищённые хранилища.

Почему после добавления константы в конфигураторе её не видно в режиме 1С:Предприятие?

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

Итог

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

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