Часто в процессе поддержки или доработки конфигураций 1С, особенно таких объемных и почтенных, как УПП (Управление производственным предприятием), разработчик сталкивается с ситуацией, когда название объекта в пользовательском режиме (заголовок окна или пункт меню) не соответствует его техническому имени в дереве метаданных. Поиск в конфигураторе по синониму может не давать результатов, если заголовок задан непосредственно в форме или если разработчики использовали специфические наименования.
В этой статье мы подробно разберем несколько эффективных методов, которые помогут нам быстро и точно найти нужный объект — будь то регистр сведений, справочник или документ — имея на руках только его «экранное» название.
Прежде чем переходить к инструментам, проанализируем, почему стандартный поиск по синонимам в конфигураторе может подвести. В платформе 1С существует три уровня именования объекта:
УчетОсновногоЗаработкаРаботниковОрганизации).Учет основного заработка работников).Именно из-за этого расхождения обычный поиск в дереве метаданных часто оказывается бесполезным. Рассмотрим по шагам, как обойти это ограничение.
Рассмотрим самый быстрый и современный способ, который работает в большинстве конфигураций на платформе 8.3. Каждому объекту в системе соответствует уникальная навигационная ссылка.
Выполним следующие действия в режиме «1С:Предприятие»:
Ctrl + F11).e1cib/list/InformationRegister.УчетОсновногоЗаработкаРаботниковОрганизации.Проанализируем эту ссылку. Часть после InformationRegister. — это и есть точное Имя объекта в конфигураторе. Теперь нам достаточно скопировать это имя, перейти в конфигуратор и вставить его в строку поиска дерева метаданных. Этот метод исключает ошибки, связанные с различием синонимов и заголовков.
Если по какой-то причине навигационная ссылка недоступна (например, в очень старых версиях платформы или при специфических настройках прав), мы можем воспользоваться программным методом. Выясним техническое имя объекта, перебрав коллекцию метаданных с выводом соответствий «Имя — Синоним».
Создадим внешнюю обработку или воспользуемся консолью кода и выполним следующий фрагмент:
Для каждого ОбъектМетаданных Из Метаданные.РегистрыСведений Цикл
ТекстСообщения = ОбъектМетаданных.ПолноеИмя() + " --- " + ОбъектМетаданных.Представление();
Сообщить(ТекстСообщения);
КонецЦикла;
Разберем, что делает этот код. Мы обращаемся к коллекции РегистрыСведений (аналогично можно сделать для Справочники, Документы и т.д.). Метод ПолноеИмя() возвращает системный идентификатор, а Представление() — синоним объекта. После запуска этого кода в окне сообщений появится полный список, в котором мы сможем найти нужное нам экранное название с помощью обычного поиска (Ctrl + F).
Рассмотрим ситуацию, когда объект открывается, но мы не понимаем, что это за форма и к какому объекту она относится. Здесь нам поможет мощный инструмент отладки — Замер производительности.
Алгоритм действий следующий:
Перед нами откроется окно с результатами замера. В колонке Метод мы увидим вызовы процедур, таких как ПриОткрытии или ПриСозданииНаСервере. В строке будет указан путь к модулю формы, например: РегистрСведений.УчетОсновногоЗаработкаРаботниковОрганизации.Форма.ФормаСписка. Это дает нам стопроцентную информацию о местонахождении объекта в дереве метаданных.
В современных версиях платформы 8.3 (начиная с релизов 8.3.15 и выше) реализован штатный функционал для решения нашей задачи. Если мы находимся в управляемом приложении, выполним следующие шаги:
Если мы уже открыли форму объекта, можно воспользоваться командой Информация для технического специалиста непосредственно из окна формы (через меню «Еще»). Там будет указан тип данных и ссылка на объект метаданных.
Если классический поиск в дереве метаданных не помогает, воспользуемся Глобальным поиском (Ctrl + Shift + F). Однако вместо поиска по тексту модулей, настроим поиск по свойствам метаданных.
Проанализируем настройки поиска:
Этот метод позволяет найти текст даже в том случае, если он прописан только в заголовке формы списка, а не в самом регистре. По результатам поиска мы сможем быстро перейти к конкретной форме, а через неё — к самому объекту метаданных.
Для опытных разработчиков в режиме отладки существует еще одна полезная комбинация клавиш — Ctrl + Alt + M. В ряде случаев она позволяет быстро позиционироваться в дереве конфигурации на объекте, форма которого открыта в данный момент (зависит от версии платформы и режима работы приложения).
Также не стоит забывать про стандартную обработку «Консоль запросов». Если мы выберем в конструкторе запроса таблицу для выбора, мы увидим список всех таблиц базы данных с их синонимами. Это отличный способ визуально найти нужный регистр среди сотен похожих названий в конфигурации УПП или ERP.
Рассмотренные нами методы позволяют быстро идентифицировать объекты метаданных даже в самых запутанных и кастомизированных конфигурациях, экономя время разработчика на рутинном поиске.