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