Разберем типичную задачу разработчика в платформе 1С:Предприятие 7.7: в конфигурации содержится большое количество документов, и в одном или нескольких из них на форме размещена кнопка, в свойствах которой (в поле «Формула») прописано выражение или присвоение переменной (например, ГлДействия = ""). Открывать каждый документ и вручную проверять свойства всех кнопок неэффективно. Рассмотрим доступные методы быстрого нахождения нужных элементов.
Самый простой и быстрый метод — задействовать встроенный механизм поиска по всей конфигурации. По умолчанию многие разработчики забывают проверить флаги области поиска, из-за чего формулы элементов диалога пропускаются.
Разберем по шагам, как настроить глобальный поиск:
ГлДействия).После завершения сканирования в окне результатов поиска отобразится список всех документов, слоев и диалоговых элементов, где встречается указанное выражение. Двойным кликом по строке результата можно сразу перейти к требуемой кнопке диалога.
Проанализируем программный подход и выясним, почему нельзя написать внешнюю обработку для прямого перебора кнопок через объект встроенного языка Метаданные:
В платформе 1С 7.7 объектная модель Метаданные предоставляет доступ только к общей структуре прикладного решения: составу документов, справочников, их реквизитов, табличных частей и регистров. Внутреннее устройство экранных форм, перечень визуальных контролов и свойства формул кнопок не входят в состав объектной модели метаданных и программно через встроенный язык недоступны.
Если поиск требуется автоматизировать или выполнить в составе сложного анализа конфигурации, рассмотрим альтернативный вариант с декомпиляцией файла метаданных.
Файл конфигурации 1С 7.7 (1Cv7.MD) представляет собой составной файл-хранилище. С помощью специализированных инструментов разбора md-файлов его можно распаковать в дерево каталогов с текстовыми файлами. В распакованном виде описания всех диалогов, включая формулы кнопок, сохраняются в виде обычного текста. После этого можно воспользоваться любым сторонним текстовым редактором или консольными утилитами для мгновенного поиска любых конструкций.
Если нет возможности использовать сторонние утилиты разбора, но требуется получить текстовый листинг всех форм и элементов, применим следующий алгоритм:
ГлДействия.Для регулярных задач анализа структуры форм в среде 1С 7.7 применяется надстройка OpenConf. С ее помощью можно написать скрипт на языке VBScript или JScript, который автоматизирует перебор открытых окон конфигуратора, считывает свойства контролов на слоях диалога и выводит точные координаты элементов, содержащих искомую переменную в формуле.
Обратим внимание на синтаксические нюансы при поиске выражений в кнопках 1С 7.7:
В поле формулы кнопки могут находиться не только имена вызываемых процедур, но и прямые присваивания значений переменным, например:
ГлДействия = "Провести"
При формировании поискового запроса рекомендуется искать только имя самой переменной (в нашем примере — ГлДействия) без знаков равенства, пробелов или кавычек. Это исключит пропуск совпадений из-за случайных пробелов или переносов строк внутри формулы элемента диалога.
Важное ограничение: Штатный поиск во всех текстах сканирует только саму конфигурацию (файл 1Cv7.MD). Если документ или обработка вынесены во внешний файл с расширением .ert, штатный поиск найдет совпадение только в том случае, если этот файл предварительно открыт в конфигураторе.