В процессе поддержки и доработки старых конфигураций на платформе 1С:Предприятие 7.7 программисты часто сталкиваются с ситуацией, когда название документа в пользовательском режиме (в журналах или заголовках форм) совершенно не соответствует его внутреннему идентификатору в Конфигураторе. Особенно это характерно для отраслевых решений, таких как конфигурации от компании Мисофт, где один и тот же объект метаданных может выполнять функции разных документов в зависимости от контекста или выбранной операции.
Разберем по шагам, как локализовать нужный объект, если стандартный поиск по синонимам не дает результатов, и проанализируем эффективные методы идентификации объектов в 1С 7.7.
Это один из самых быстрых способов найти соответствие между «человеческим» названием и техническим именем объекта. Рассмотрим, как это сделать:
Ctrl+F3 (в зависимости от настроек оболочки).Ctrl+F и введем фрагмент названия, который мы видим в интерфейсе программы (например, «003» или «Ответственное хранение»).Как показывает практика, именно этот метод позволяет обнаружить, что документ НакладнаяМатериалы в конфигурациях «Мисофт» программно переименовывается в «Ответственное хранение 002, 003». Проанализируем причину: разработчики часто используют универсальные документы для экономии места в структуре метаданных и упрощения логики проведения по счетам.
Если поиск по тексту не помогает, воспользуемся инструментами отладки. Этот метод позволяет точно определить, какой программный код выполняется в момент нажатия кнопки или открытия формы.
Выполним следующие действия:
В появившемся окне мы увидим список всех процедур, которые были вызваны. Проанализируем колонку «Объект». Там будет указано конкретное имя документа, например, Документ.НакладнаяМатериалы. Это самый надежный способ, так как он фиксирует фактическое обращение к метаданным, игнорируя любые динамические подмены заголовков.
Зачастую заголовок формы устанавливается не в свойствах объекта, а программно при открытии. Чтобы выяснить причину такого поведения, проанализируем ситуацию с помощью глобального поиска.
Рассмотрим алгоритм поиска:
Ctrl+Shift+F)."Ответственное хранение").В результатах поиска мы можем найти строку вида:
Форма.Заголовок("Ответственное хранение 002, 003", 0);
Если такая строка найдена, посмотрим, в модуле какого документа она находится. Это и будет искомый объект. Часто такие установки заголовков встречаются в процедуре ПриОткрытии() или при выборе значения реквизита ВидОперации.
Для глубокого анализа, когда встроенные средства поиска по каким-то причинам неудобны, можно прибегнуть к полной выгрузке метаданных. Посмотрим на этот процесс:
Рядом с найденным текстом синонима в файле описания (обычно это файлы с расширением .md или текстовые дампы) будет располагаться внутренний идентификатор документа. Это позволяет «вычислить» объект, даже если он скрыт глубоко в структурах меню.
Проанализируем, почему возникают сложности именно в белорусских конфигурациях 1С 7.7. В этих решениях часто реализуется механизм динамических форм. Рассмотрим ключевые особенности:
НакладнаяМатериалы может отвечать и за приход материалов, и за передачу в переработку, и за забалансовый учет (счета 002, 003).ExtForms в каталоге базы данных. Файл может называться otv_hr.mxl или аналогично, и его редактирование в Конфигураторе не требуется — достаточно открыть его через «Файл» — «Открыть».Таким образом, мы выяснили, что для успешного поиска объекта необходимо комбинировать стандартные инструменты платформы: Ctrl+F3 для анализа структуры, Замер производительности для отслеживания вызовов и Глобальный поиск для обнаружения динамической смены заголовков формы.