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