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

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

Как узнать название формы в 1С

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

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

Полный путь к форме строится по строгому шаблону: тип объекта, имя объекта, слово «Форма» и имя самой формы. Например: Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента. Для общих форм путь короче: ОбщаяФорма.ИмяФормы. Если имя объекта или формы указать с ошибкой хотя бы в одном символе, платформа выдаст исключение, а в тонком клиенте иногда просто не откроет окно без понятного сообщения.

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

Что именно считается названием формы

В платформе 1С у формы есть три разных «имени», и их важно различать. Первое — имя формы в метаданных: идентификатор, заданный разработчиком в конфигураторе, например ФормаСписка или ФормаЭлемента. Именно оно используется в коде. Второе — синоним: человекочитаемый заголовок, который пользователь видит в заголовке окна. Третье — полный путь, включающий тип и имя объекта-владельца.

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

Как узнать имя формы в конфигураторе

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

Двойной клик по форме открывает её в редакторе, а в палитре свойств (правый клик → Свойства) можно увидеть и имя, и синоним. Если узла «Формы» нет вовсе — значит, у объекта нет собственных форм, и платформа генерирует их автоматически. В этом случае в коде используйте служебные имена: ФормаОбъекта, ФормаСписка, ФормаВыбора.

Порядок действий в конфигураторе
  1. 1
    Откройте конфигуратор и загрузите конфигурацию базы
  2. 2
    В дереве метаданных найдите нужный объект (например, Справочники → Номенклатура)
  3. 3
    Раскройте узел «Формы» внутри объекта
  4. 4
    Скопируйте имя нужной формы и соберите полный путь: Справочник.Номенклатура.Форма.ИмяФормы
  5. 5
    Проверьте путь, вызвав ОткрытьФорму() с этой строкой в тестовой базе

Как узнать имя формы без конфигуратора

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

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

bsl
// Получить полное имя текущей формы
Сообщить(ЭтаФорма.ИмяФормы);
// Пример результата: Справочник.Номенклатура.Форма.ФормаЭлемента

Как узнать имя формы через отладчик и код

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

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

Особые случаи: общие формы, внешние обработки и расширения

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

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

Сравнение способов

Конфигуратор

Самый точный способ: видны все формы и их имена. Требует прав разработчика и доступа к конфигурации.

Все функции

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

Отладчик

Незаменим, когда форма открывается динамически. Требует навыка работы с точками останова.

Свойство ИмяФормы

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

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

Чаще всего проблемы возникают из-за трёх причин. Первая — опечатка в имени объекта или формы: платформа чувствительна к точному написанию, хотя и не к регистру букв. Вторая — попытка открыть форму, которой нет: например, обращение к Форма.ФормаСписка у объекта, где такой формы не создано. Третья — путаница между именем формы и её синонимом: заголовок окна «Товары (список)» нельзя использовать как идентификатор в коде.

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

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

FAQ: частые вопросы о названиях форм в 1С

Как узнать имя формы, если конфигурация закрыта паролем поставщика?

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

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

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

Что делать, если у объекта нет узла «Формы» в конфигураторе?

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

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

Добавьте в обработчик ПриСозданииНаСервере каждой из предполагаемых форм вывод ЭтаФорма.ИмяФормы в журнал регистрации, либо поставьте точки останова в этих обработчиках и откройте объект под отладкой.

Регистр букв важен при указании имени формы?

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

Можно ли узнать имя формы внешней обработки, не открывая её в конфигураторе?

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

Итог

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

Точное имя формы всегда видно в конфигураторе в узле «Формы» нужного объекта. Полный путь для кода — ТипОбъекта.ИмяОбъекта.Форма.ИмяФормы. Без конфигуратора используйте «Все функции», отладчик или свойство ИмяФормы. Проверяйте найденный путь тестовым вызовом ОткрытьФорму() на копии базы.