Как найти макет внешней печатной формы в 1С, если известно только имя объекта в коде

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Анализируем механизм регистрации внешних обработок

Прежде всего, разберем, как работает платформа. Когда мы видим обращение ВнешниеОбработки.ИмяОбъекта, это означает, что 1С пытается обратиться к объекту, который был программно подключен к сеансу. В современных конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), внешние печатные формы хранятся в справочнике ДополнительныеОтчетыИОбработки в виде двоичных данных.

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

Способ 1. Использование консоли запросов (самый быстрый метод)

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

Откроем консоль запросов и выполним следующий код:


ВЫБРАТЬ
    ДополнительныеОтчетыИОбработки.Ссылка КАК Ссылка,
    ДополнительныеОтчетыИОбработки.Наименование КАК Наименование,
    ДополнительныеОтчетыИОбработки.ИмяОбъекта КАК ИмяОбъекта,
    ДополнительныеОтчетыИОбработки.Вид КАК Вид
ИЗ
    Справочник.ДополнительныеОтчетыИОбработки КАК ДополнительныеОтчетыИОбработки
ГДЕ
    ДополнительныеОтчетыИОбработки.ИмяОбъекта ПОДОБНО "%СчетФактураВыданный1137%"

Рассмотрим подробнее, что нам даст этот запрос. Мы получим прямую ссылку на элемент. После этого мы можем открыть карточку обработки, нажать кнопку «Выгрузить в файл», сохранить .epf файл на диск и открыть его в конфигураторе. Там, в ветке «Макеты», вы и обнаружите искомый макет СчетФактура1137.

Способ 2. Глобальный поиск по файлам

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

  1. Выгрузим все подозрительные обработки из справочника ДополнительныеОтчетыИОбработки в одну папку на диске.
  2. В конфигураторе выберем пункт меню «Правка» — «Глобальный поиск» (или нажмем Ctrl+Shift+F).
  3. В поле «Что искать» введем имя макета: СчетФактура1137.
  4. В области поиска укажем «В файлах на диске» и выберем нашу папку с выгруженными обработками.

Этот метод гарантированно найдет вхождение строки в бинарном файле или его текстовом представлении, если обработка была сохранена как набор файлов.

Способ 3. Отладка и поиск временных файлов

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

Разберем по шагам процесс отладки:

  1. Поставим точку останова в коде непосредственно перед строкой, где заполняется ПолныйПутьКМакету.
  2. Запустим формирование печатной формы.
  3. В момент остановки вызовем окно «Вычислить выражение» (Shift+F9).
  4. Если в коде используется объект ВнешняяОбработка, мы можем посмотреть его свойства. Часто там можно увидеть путь к временному файлу в папке %AppData%\Local\Temp\v8_XXXX.epf.

Скопируйте этот файл, пока сеанс 1С не закрыт (после закрытия временные файлы удаляются!), и откройте его для анализа макета.

Способ 4. Проверка расширений и переопределенных макетов

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

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

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

Резюме

Мы рассмотрели несколько эффективных способов поиска «потерянного» макета. Помните, что в 90% случаев при работе с внешними печатными формами ключом к разгадке является реквизит ИмяОбъекта в справочнике дополнительных обработок. Использование консоли запросов — самый надежный и быстрый способ связать программный код с физическими данными в базе.

← На главную