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

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

Как открыть форму константы в 1С

Как открыть форму константы в 1С: через интерфейс, команду «Все функции» и программно методом ПолучитьФорму. Примеры кода, ошибки и ответы на вопросы.

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

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

Где искать константу в пользовательском интерфейсе

В типовых конфигурациях константы обычно спрятаны в настройках. Например, в «1С:Бухгалтерии» часть констант открывается через раздел «Администрирование» — там собраны формы настройки программы, функциональности, обменов. В «Управлении торговлей» константы рассредоточены по разделам «НСИ и администрирование» и «Настройки».

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

Быстрый способ найти нужное — полнотекстовый поиск по меню (в большинстве конфигураций доступен по нажатию на значок поиска в панели разделов или через строку поиска команд). Введите название настройки, и система покажет команду, открывающую соответствующую форму.

Открытие через «Все функции»

Универсальный способ для тонкого клиента — команда «Все функции». По умолчанию она скрыта: сначала её нужно включить. Откройте главное меню (круглая кнопка в левом верхнем углу), выберите «Сервис» → «Параметры» и установите флажок «Отображать команду "Все функции"». После этого пункт «Все функции» появится в главном меню.

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

Порядок действий через «Все функции»
  1. 1
    Главное меню → Сервис → Параметры → включить «Отображать команду Все функции»
  2. 2
    Главное меню → Все функции
  3. 3
    Развернуть ветку «Константы»
  4. 4
    Дважды щёлкнуть по нужной константе
  5. 5
    Изменить значение и записать (Ctrl+S или кнопка записи)

Учтите ограничение: в веб-клиенте команда «Все функции» недоступна. Если база работает только через браузер, открыть форму константы этим способом не получится — остаются штатные команды интерфейса, обработки или программный вызов.

Открытие формы константы программно

Разработчику чаще всего нужно открыть форму из кода — например, из обработки, из команды формы документа или при нажатии кнопки. Для этого используется метод глобального контекста ПолучитьФорму() с указанием полного пути к форме константы.

1c
ФормаКонстанты = ПолучитьФорму("Константа.ВалютаУчета.ФормаКонстант");
ФормаКонстанты.Открыть();

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

Для открытия с параметрами используется структура параметров и метод ОткрытьФорму():

1c
ПараметрыФормы = Новый Структура;
ОткрытьФорму("Константа.ВалютаУчета.ФормаКонстант", ПараметрыФормы, ЭтотОбъект, Новый УникальныйИдентификатор);

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

Открытие общей формы констант (набора)

Когда константы объединены в набор, удобнее открыть общую форму констант — она показывает сразу несколько значений. Путь к ней выглядит как "ОбщаяФорма.ИмяФормыКонстант" либо через конструкцию менеджера: Константы.СоздатьНабор() для работы с данными, а для открытия — по-прежнему форма по имени, назначенная в конфигураторе как форма констант.

Открытие формы константы в обычном приложении

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

Программный вызов идентичен: ПолучитьФорму("Константа.Имя.ФормаКонстант").Открыть(). Разница лишь в том, что в обычном приложении форма открывается синхронно, а в управляемом — асинхронно, поэтому код, требующий результата закрытия формы, нужно переписывать через описание оповещения.

Почему форма константы не открывается: типичные причины

Самая частая причина — отсутствие прав. Если у пользователя нет права «Просмотр» на константу, команда открытия либо не отображается, либо при вызове появляется ошибка нарушения прав доступа. Проверить это может администратор в конфигураторе: роль пользователя должна включать права на нужную константу, а в файловой базе без ролей — соответствующие настройки в списке пользователей.

Вторая причина — константа просто не выведена в интерфейс. Разработчик решает, какие команды попадают в панель навигации разделов; если команда не добавлена, константа «невидима» для пользователя, хотя существует. Лечится через «Все функции» или доработкой командного интерфейса.

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

Типичные ошибки
01
Попытка открыть форму через «Все функции» в веб-клиенте — команда там недоступна, нужен тонкий клиент или обработка
02
Изменение константы напрямую запросом или внешними средствами в обход формы — можно нарушить логику подписок и обработчиков записи
03
Использование ПолучитьФорму с ожиданием результата в управляемом приложении — форма открывается асинхронно, код после Открыть() выполнится раньше закрытия формы
04
Открытие формы константы пользователю без прав — вместо формы он получит ошибку доступа

Изменение значения без открытия формы

Иногда форма вообще не нужна: значение константы можно прочитать и записать программно. Это удобно в регламентных заданиях, обработках первоначального заполнения и при обмене данными.

1c
// Чтение
ТекущаяВалюта = Константы.ВалютаУчета.Получить();

// Запись
Константы.ВалютаУчета.Установить(НоваяВалюта);

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

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

После открытия формы и изменения значения убедитесь, что изменение реально применилось. Простой тест — закрыть форму и открыть её снова: значение должно сохраниться. Если оно «откатилось», запись не выполнилась (забыли нажать «Записать» или не хватило прав).

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

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

Значение после повторного открытия формы
Норма

Новое значение отображается

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

Показано старое значение — запись не выполнена

Поведение зависимых механизмов (проведение, отчёты)
Норма

Учитывают новое значение константы

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

Работают по-старому — возможен кэш сеанса, перезапустите сеанс

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

Команда видна и форма открывается

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

Команды нет — проверьте права и функциональные опции

Если значение записано, но прикладная логика его «не видит», помогает перезапуск сеанса: некоторые конфигурации кэшируют константы в параметрах сеанса при входе пользователя. Это штатное поведение, а не ошибка.

Итог

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

Форму константы открывают через раздел настроек, команду «Все функции» (только тонкий клиент) или программно через ПолучитьФорму/ОткрытьФорму. Если форма недоступна — проверяйте права, функциональные опции и режим клиента. Значение можно менять и без формы методом Установить(), но не в обход штатных механизмов.

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

Почему в меню нет пункта «Все функции»?

Команда скрыта по умолчанию. Включите её: главное меню → «Сервис» → «Параметры» → флажок «Отображать команду "Все функции"». Если пункта нет и после этого — скорее всего, вы работаете в веб-клиенте, где «Все функции» не поддерживаются.

Можно ли открыть форму константы в веб-клиенте?

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

Чем отличается форма константы от общей формы констант?

Форма константы показывает одно значение. Общая форма констант — это форма набора: она выводит сразу несколько констант на одном экране, как панель настроек. В конфигураторе она назначается в свойствах корня конфигурации.

Как открыть форму константы из внешней обработки?

В модуле формы обработки выполните: ОткрытьФорму("Константа.ИмяКонстанты.ФормаКонстант"). Обработка должна запускаться в управляемом приложении, и у пользователя должны быть права на просмотр этой константы.

Изменил константу, а документы ведут себя по-старому. Что делать?

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

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

Да. Снимите у роли пользователя права «Просмотр» и «Изменение» на константу — команда исчезнет из интерфейса, а программное открытие формы будет выдавать ошибку доступа. Дополнительно можно убрать команду из командного интерфейса подсистемы.