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