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