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