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