Разработка и Конфигурация · 10 мин
Для чего используют константы в 1С
Для чего нужны константы в 1С: хранение настроек учёта, реквизитов организации, функциональных опций. Как создать и использовать константу в коде и форме.
Константа в 1С — это объект конфигурации, предназначенный для хранения значений, которые меняются редко и действуют для всей информационной базы целиком или для отдельного пользователя. Классические примеры: наименование организации, валюта учёта, дата запрета редактирования, признак использования той или иной подсистемы. В отличие от справочников и документов, константа не имеет множества записей — у неё ровно одно текущее значение.
Главное назначение констант — отделить настройки системы от прикладных данных. Если разработчик «зашьёт» название компании или ставку по умолчанию прямо в код, любое изменение потребует правки конфигурации и обновления. Константа решает эту задачу: значение хранится в базе, меняется пользователем с нужными правами, а код обращается к ней по имени.
Константы активно используются и в типовых конфигурациях 1С:Бухгалтерия, 1С:Управление торговлей, 1С:ЗУП. Значительная часть флажков в разделах «Настройки» и «Функциональность» этих программ — это именно константы, связанные с функциональными опциями. Понимание их устройства помогает и разработчику, и администратору, и опытному пользователю.
Что такое константа и чем она отличается от других объектов
Константа создаётся в конфигураторе в ветке «Общие» → «Константы». У неё есть имя, синоним, тип значения и, при необходимости, признак использования в качестве функциональной опции. Тип может быть примитивным (строка, число, булево, дата) или ссылочным — например, ссылка на справочник «Организации» или «Валюты».
Принципиальное отличие константы от справочника: справочник хранит список элементов, а константа — одно значение. От регистра сведений константа отличается тем, что не имеет измерений и периодичности: нельзя узнать, каким было значение вчера, если не предусмотрено отдельное хранение истории. Если нужна история изменений или значения в разрезе организаций — правильнее использовать регистр сведений.
Основные сценарии использования констант
Первый и самый распространённый сценарий — хранение реквизитов основной организации: наименования, ИНН, адреса, подписантов для печатных форм. Эти данные подставляются в документы и отчёты автоматически, и пользователю не нужно вводить их каждый раз.
Второй сценарий — параметры учёта: валюта регламентированного учёта, дата запрета изменения данных, значения по умолчанию для новых документов (склад, подразделение, ставка НДС). Третий сценарий — технологические настройки: путь к каталогу обмена, токен внешнего сервиса, таймаут фонового задания, признак включения отладочного журнала.
Наконец, константы-булевы используются как переключатели подсистем: «Использовать резервирование товаров», «Вести учёт по сериям», «Использовать несколько валют». Такой флаг включает целый блок функциональности — и именно на этом построен механизм функциональных опций.
Функциональные опции: константы как переключатели интерфейса
Функциональная опция — механизм платформы, который скрывает или показывает объекты конфигурации (справочники, документы, реквизиты, команды) в зависимости от значения хранилища. Чаще всего таким хранилищем служит константа типа «Булево». Когда флаг снят, связанные объекты не видны пользователю ни в интерфейсе, ни в подборе, что упрощает работу и снижает риск ошибок.
Например, константа «ИспользоватьХарактеристикиНоменклатуры» может управлять видимостью справочника характеристик и соответствующих колонок в табличных частях документов. В типовых конфигурациях раздел «НСИ и администрирование» → «Настройка НСИ и разделов» построен именно на таких константах.
Как создать константу и вывести её пользователю
Создание константы занимает несколько минут, но важно сразу продумать тип данных и способ редактирования. Константу без формы пользователь не сможет изменить — её придётся вывести на какую-либо форму настроек или создать отдельную общую форму.
- 1В конфигураторе откройте ветку «Общие» → «Константы» и добавьте новый объект.
- 2Задайте имя (например, «ОсновнаяОрганизация»), синоним и тип значения.
- 3Если это переключатель функциональности — создайте функциональную опцию и укажите константу как хранилище.
- 4Добавьте константу на форму настроек: перетащите реквизит из панели «Константы» в дерево реквизитов формы.
- 5Назначьте права: в ролях укажите, кто может читать и изменять значение.
- 6Обновите конфигурацию базы данных и проверьте редактирование под пользователем с целевыми правами.
На управляемой форме константы доступны через набор «КонстантыНабор» или по отдельности, если форма создана как форма констант. В типовых решениях настройки обычно группируют на одной форме обработки, а значения записывают программно при нажатии «ОК» или сразу при изменении поля.
Обращение к константам из кода
Во встроенном языке работа с константами выполняется через менеджер констант. Чтение значения не требует транзакции, запись — выполняется методом «Установить» или через набор констант, если нужно сохранить несколько значений в одной транзакции.
// Чтение значения константы
ВалютаУчета = Константы.ВалютаРегламентированногоУчета.Получить();
// Запись значения
Константы.ДатаЗапретаРедактирования.Установить(Дата(2026, 12, 31));
// Пакетная запись нескольких констант
Набор = Константы.СоздатьНабор("ВалютаРегламентированногоУчета, ИспользоватьСерии");
Набор.ВалютаРегламентированногоУчета = Справочники.Валюты.НайтиПоКоду("643");
Набор.ИспользоватьСерии = Истина;
Набор.Записать();
Обращение к константе выполняется быстро — значение кэшируется платформой, поэтому чтение константы в цикле или в часто вызываемых процедурах допустимо. Тем не менее в серверных процедурах, вызываемых массово, значение разумно получить один раз и передать параметром.
Когда константа не подходит: альтернативы
Частая проектная ошибка — хранить в константе то, что должно жить в другом объекте. Если значение зависит от организации, пользователя или периода, константа (которая одна на всю базу) не справится, и нужен регистр сведений с соответствующими измерениями. Если нужна история изменений — периодический регистр сведений.
Что выбрать вместо константы
Когда настройка различается по организациям в одной базе. Константа здесь даст общее значение для всех.
Когда важна история: например, изменение ставки или ответственного лица во времени.
Когда значений несколько и они выбираются пользователем из списка (виды цен, склады).
Когда настройка индивидуальна для пользователя: размер окна, последние выбранные значения.
Отдельный случай — персональные настройки. Платформа предоставляет хранилище общих настроек и хранилище пользовательских настроек отчётов, которые привязаны к конкретному пользователю. Использовать константу для таких данных — ошибка: один пользователь будет перезаписывать настройки другого.
Риски, права и типичные ошибки
Константа влияет на всю базу, поэтому права на её изменение нужно раздавать осознанно. Пользователь с правом записи на константу «ДатаЗапретаРедактирования» может фактически открыть себе доступ к закрытым периодам. Права настраиваются в ролях на вкладке «Константы», где для каждой константы отдельно задаются чтение и изменение.
Ещё одна ловушка — значения по умолчанию. Новая константа типа «Булево» имеет значение «Ложь», ссылочная — пустую ссылку. Если код не проверяет заполненность, можно получить пустую валюту в проводках или пустую организацию в печатной форме. Хорошая практика — при первом запуске или в обработчике обновления заполнять константы осмысленными значениями.
Как проверить результат
Поле видно на форме настроек и сохраняет значение без ошибок
Поле недоступно или при записи возникает ошибка прав
При включении флага объекты появляются в интерфейсе, при выключении — скрываются
Интерфейс не меняется — опция не привязана к объектам
После изменения константы отчёты и документы используют новое значение
Используется старое значение — возможно, оно зашито в код или закэшировано в сеансе
Часто задаваемые вопросы
Можно ли узнать, кто и когда изменил константу?
Штатной истории изменений у константы нет. Если конфигурация ведёт журнал регистрации с включённым событием изменения данных, факт записи можно увидеть там. Для полноценного аудита константу заменяют периодическим регистром сведений или добавляют подписку на событие записи с протоколированием.
Константа одна на всю базу — а если база работает в разделённом режиме (SaaS)?
При публикации константы можно указать, что она является частью разделённых данных — тогда у каждой области (абонента) будет своё значение. В файловой и обычной клиент-серверной базе без разделителей значение единое для всех.
Чем константа отличается от параметра сеанса?
Параметр сеанса существует только в рамках сеанса пользователя и задаётся программно при входе, а константа хранится в базе постоянно. Параметры сеанса подходят для данных текущего контекста (текущий пользователь, режим работы), константы — для долгоживущих настроек.
Можно ли хранить в константе пароль или токен?
Технически можно, но небезопасно: значение хранится в открытом виде и доступно всем, у кого есть права на чтение. Для секретов лучше использовать безопасное хранилище (в типовых — подсистема «Пользователи»/«Общего назначения») или внешние защищённые хранилища.
Почему после добавления константы в конфигураторе её не видно в режиме 1С:Предприятие?
Константа — объект метаданных, у неё нет автоматически генерируемой команды в интерфейсе, как у справочника. Чтобы пользователь мог её редактировать, константу нужно вывести на форму настроек или создать форму констант и добавить команду её открытия в подсистему.
Что важно запомнить
Константы хранят единичные настройки всей базы: реквизиты организации, параметры учёта, переключатели функциональности. Используйте их только для редко меняющихся общих значений, настраивайте права на изменение и выбирайте регистры сведений, если нужна история или разрез по организациям и пользователям.