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