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

Разработка и Конфигурация · 9 мин

Как добавить константу в 1С 8: пошаговое руководство

Как добавить константу в 1С 8 через конфигуратор: создание, типы данных, права доступа, запись и чтение значений в коде, типичные ошибки и проверка результата.

Константа в 1С 8 — это объект конфигурации для хранения единственного значения, которое меняется редко: наименование организации, ФИО директора, признак включения функциональности, параметры обмена. В отличие от справочника, константа не имеет табличной части и хранит ровно одно значение для всей информационной базы (или для каждого разделителя данных, если включено разделение).

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

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

Что такое константа и когда её использовать

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

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

Создание константы в конфигураторе

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

В дереве конфигурации найдите ветку «Константы». Щёлкните по ней правой кнопкой мыши и выберите «Добавить» либо нажмите кнопку добавления в панели инструментов окна конфигурации. Откроется палитра свойств нового объекта.

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

Заполните ключевые свойства:

  • Имя — программный идентификатор, например НаименованиеОрганизации. Только латинские буквы, цифры и подчёркивания, начинается с буквы.
  • Синоним — представление для пользователя, например «Наименование организации».
  • Тип — тип хранимого значения: строка, число, булево, дата, ссылка на справочник или перечисление, составной тип.
  • Длина — для строки и числа задаётся ограничение размера.

Выбор типа данных и ограничения

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

Для строки неограниченной длины снимите ограничение длины, но учтите: такие значения нельзя использовать в некоторых операциях сравнения и индексирования. Для числа задайте точность — количество знаков после запятой. Составной тип (несколько типов одновременно) усложняет обработку в коде, поэтому применяйте его только при реальной необходимости.

Настройка прав доступа

После создания константы проверьте права: откройте роль пользователя (ветка «Общие» → «Роли») и найдите новую константу в списке объектов. Для чтения значения достаточно права «Чтение», для изменения — «Изменение». Если у роли нет прав, пользователь не увидит константу и получит ошибку при обращении из кода, выполняемого под его учётной записью.

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

Запись и чтение значения программно

Работа с константой из встроенного языка выполняется через менеджер констант. Запись значения:

Константы.НаименованиеОрганизации.Установить("ООО «Пример»");

Константы.ИспользоватьХарактеристики.Установить(Истина);

Чтение значения:

Наименование = Константы.НаименованиеОрганизации.Получить();

Если Константы.ИспользоватьХарактеристики.Получить() Тогда

// логика при включённой настройке

КонецЕсли;

Для записи нескольких констант одной транзакцией используйте набор констант: объект КонстантыНабор через Константы.СоздатьНабор("НаименованиеОрганизации, ИспользоватьХарактеристики"), заполнение значений и метод Записать().

bsl
Константы.НаименованиеОрганизации.Установить("ООО \"Пример\"");
ТекущееЗначение = Константы.НаименованиеОрганизации.Получить();
Сообщить(ТекущееЗначение);

Вывод константы пользователю

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

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

Способы изменения значения константы

Форма настроек

Удобно для пользователей, требует разработки формы и настройки прав

Программная запись

Подходит для начального заполнения и обработчиков, требует доступа к коду

Все функции (технический режим)

Быстро для администратора, недоступно обычным пользователям

Проверка результата и типичные ошибки

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

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

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

Чтение значения из кода
Норма

Возвращается записанное значение без ошибок

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

Ошибка «Поле объекта не обнаружено» — константа не создана или конфигурация БД не обновлена

Доступ под ролью пользователя
Норма

Значение читается и изменяется согласно правам

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

Нарушение прав доступа — не настроены роли

Сохранность после перезапуска
Норма

Значение на месте

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

Значение пустое — запись не была выполнена или отменена транзакция

Типичные ошибки
01
Забыли обновить конфигурацию базы данных (F7) — константа видна в конфигураторе, но недоступна в коде
02
Не назначили права ролям — пользователи получают ошибку доступа при обращении
03
Выбрали слишком короткую строку — длинные значения обрезаются без предупреждения
04
Использовали константу там, где нужна история изменений — данные перезаписываются безвозвратно
05
Изменили тип заполненной константы без копии — значения утеряны при реструктуризации

Если конфигурация типовая и находится на поддержке, добавление собственной константы снимает объект с полной поддержки. При обновлениях релиза такие доработки сохраняются, но требуют контроля при сравнении и объединении конфигураций. Для хранения настроек без изменения конфигурации рассмотрите альтернативы: хранилище общих настроек (ХранилищеОбщихНастроек) или дополнительные сведения в типовых механизмах БСП.

Итог

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

Константа создаётся в конфигураторе через ветку «Константы»: имя, тип, права, обновление конфигурации БД. Значение записывается методом Установить() и читается методом Получить(). Перед изменением типа заполненной константы делайте резервную копию.

Частые вопросы

Можно ли добавить константу без конфигуратора, в режиме предприятия?

Нет. Создание объектов конфигурации возможно только в конфигураторе. В режиме предприятия можно лишь изменять значение уже существующей константы — через форму настроек или обработку «Все функции».

Чем константа отличается от параметра сеанса?

Константа хранится в базе постоянно и едина для всех сеансов. Параметр сеанса существует только в течение сеанса конкретного пользователя и очищается при его завершении. Для долговременных настроек используйте константу, для временных данных текущего сеанса — параметр сеанса.

Почему после добавления константы код выдаёт ошибку «Поле объекта не обнаружено»?

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

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

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

Видно ли, кто и когда изменил константу?

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