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

Другое · 11 мин

Что такое константа в 1С:Предприятие и как с ней работать

Что такое константа в 1С:Предприятие, чем она отличается от справочника и регистра, как создать константу в конфигураторе и изменить её значение в пользовательском режиме.

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

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

Работа с константами делится на две части: разработчик создаёт и описывает константу в конфигураторе, а пользователь (или администратор) задаёт её значение в режиме «1С:Предприятие». Понимание этого разделения важно: добавить новую константу может только тот, у кого есть доступ к конфигуратору и право изменения конфигурации, а менять значение существующей константы обычно может пользователь с соответствующими правами.

Для чего нужны константы и какие значения в них хранят

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

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

  • реквизиты собственной организации: наименование, ИНН, КПП, адрес;
  • параметры учёта: основная валюта, ставка НДС по умолчанию, дата запрета изменения данных;
  • функциональные опции: флаги «Использовать серии», «Вести учёт по складам», включающие или отключающие блоки конфигурации;
  • технические настройки: префикс информационной базы, путь к каталогу обмена, токен внешнего сервиса.

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

Чем константа отличается от справочника, регистра и параметра сеанса

Новички часто путают константы с другими объектами, которые тоже хранят настройки. Выбор объекта определяется тремя вопросами: сколько значений нужно хранить, нужна ли история изменений и зависит ли значение от пользователя или сеанса.

ОбъектСколько значенийИстория измененийТипичное применение
КонстантаОдно на всю базуНетГлобальные настройки: ИНН, валюта, префикс
СправочникСписок элементовНет (только текущее состояние)Номенклатура, контрагенты, склады
Регистр сведенийМножество записей по измерениямДа, если периодическийКурсы валют, цены, адреса контрагентов
Параметр сеансаОдно на сеанс пользователяНет, живёт только в сеансеТекущий пользователь, текущая организация

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

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

Константа

Подходит для единственного глобального значения без истории. Не подходит, если нужно знать значение на прошлую дату.

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

Подходит для значений, меняющихся во времени: ставки, курсы, цены. Требует больше кода для чтения значения на дату.

Параметр сеанса

Подходит для данных, привязанных к конкретному входу пользователя. Значение не сохраняется в базе между сеансами.

Как создать константу в конфигураторе

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

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

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

Для флагов включения функциональности используйте тип «Булево» и связывайте константу с функциональной опцией. Тогда отключение флага автоматически скроет связанные объекты интерфейса — команды, поля и отчёты — без доработки кода.

Как задать и изменить значение константы в режиме предприятия

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

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

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

Обращение к константам из встроенного языка

В коде на встроенном языке 1С константы доступны через менеджер констант. Чтение и запись выполняются одной строкой, что делает константы удобным хранилищем настроек для прикладного кода.

bsl
// Чтение значения
ВалютаУчета = Константы.ОсновнаяВалюта.Получить();

// Запись значения
Константы.ОсновнаяВалюта.Установить(НоваяВалюта);

// Работа через менеджер с проверкой
МенеджерКонстанты = Константы.ПрефиксИнформационнойБазы.СоздатьМенеджерЗначения();
МенеджерКонстанты.Значение = "ЦБ";
МенеджерКонстанты.Записать();

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

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

Типичные ошибки при работе с константами

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

Отдельная группа проблем — константы, оставшиеся «сиротами» после доработок. Разработчик добавил константу, потом механизм удалили, а константа осталась в конфигурации. Такие объекты засоряют конфигурацию и путают администраторов. Периодически проверяйте использование констант через поиск ссылок в конфигураторе (правый клик по константе → «Поиск ссылок на объект»).

Как проверить, что константа настроена правильно

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

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

Значение константы в режиме предприятия
Норма

Значение заполнено и соответствует ожидаемому (например, верный ИНН)

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

Пустое значение или устаревшие данные в печатных формах

Поведение связанных механизмов
Норма

Документы нумеруются с правильным префиксом, отчёты показывают корректные реквизиты

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

Сбои нумерации, ошибки обмена, пустые поля в макетах

Права доступа
Норма

Администратор меняет значение, рядовые пользователи только читают

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

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

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

Итог

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

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

Частые вопросы о константах в 1С

Может ли константа хранить несколько значений?

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

Сохраняется ли история изменений константы?

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

Почему константа не видна в пользовательском режиме?

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

Что будет, если удалить константу из конфигурации?

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

Как обратиться к константе из запроса?

Константы доступны в запросах как таблица «Константы» с полями, соответствующими именам констант: ВЫБРАТЬ Константы.ОсновнаяВалюта ИЗ Константы КАК Константы. Это удобно, когда значение константы нужно присоединить к выборке данных без отдельного обращения из кода.

Можно ли сделать константу с составным типом?

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