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