При доработке и анализе типовых или нетиповых конфигураций мы часто сталкиваемся с необходимостью найти определенную функцию или процедуру, зная лишь примерное её назначение или часть названия. Например, проанализируем ситуацию: мы хотим найти функцию в 1С:Документооборот 3.0, которая возвращает ответственных лиц организации. Мы предполагаем, что в названии метода есть корень организ или ответствен. Посмотрим, как можно выполнить нестрогий поиск по текстам модулей и найти нужный программный интерфейс.
Разберем самый простой инструмент, доступный из коробки — глобальный поиск. Для его вызова воспользуемся комбинацией клавиш Ctrl + Shift + F.
Процедура *организ*, стандартный текстовый поиск попытается найти именно такую строку со звездочками.организ или, что будет более точным для нашей задачи, ответствен. Конфигуратор найдет все вхождения этих символов подряд.Если нам нужно найти строго места объявления процедур и функций (отсекая обычные комментарии или вызовы), применим регулярные выражения. Рассмотрим по шагам этот продвинутый метод:
Ctrl + Shift + F) установите галочку Регулярные выражения.Процедура.*организЧтобы глобальный поиск работал быстрее и не выдавал в результатах лишний "мусор" (например, совпадения в макетах или текстах элементов формы), оптимизируем параметры поиска.
В окне поиска перейдите на вкладку Типы текстов и снимите галочки со всех пунктов, оставив включенным только пункт В модулях. Это отсечет всё, кроме исходного программного кода 1С, значительно ускорив процесс вывода результатов.
Поскольку речь идет о функционале конкретной подсистемы в 1С:Документооборот 3.0, мы можем использовать знания об архитектуре конфигурации. Функционал ответственных лиц всегда опирается на данные в базе. Выясним, как искать через метаданные:
ОтветственныеЛица).Часто в найденных таким образом модулях мы сразу обнаружим искомую функцию. Примерно так может выглядеть найденный типовой код:
// Пример получения ответственных лиц
ПараметрыОтветственных = Новый Структура("Организация, Дата", ВыбраннаяОрганизация, ТекущаяДатаСеанса());
ТаблицаОтветственных = ОтветственныеЛицаДО.ПолучитьОтветственныхЛиц(ПараметрыОтветственных);
Документооборот 3.0, как и большинство современных типовых решений, построен на базе Библиотеки стандартных подсистем (БСП). Согласно стандартам БСП, программный интерфейс (API) для работы с подсистемой всегда выносится в специализированные общие модули.
Проанализируем ветку Общие модули в дереве конфигурации. Поищем модули с названиями, содержащими ОтветственныеЛица (например, ОтветственныеЛицаДО или ОтветственныеЛицаСлужебный). Открыв такой модуль, нажмите Ctrl + Alt + P для вызова списка процедур модуля. В открывшемся компактном окне можно быстро просмотреть все методы и найти нужную функцию для получения ответственных по организации.
Если стандартный конфигуратор работает медленно, применим радикальный, но очень эффективный подход. Выгрузим тексты конфигурации в файлы и пропарсим их внешними утилитами.
Если вам регулярно требуется искать сложные методы и нестрогие вхождения, рассмотрим использование специализированных инструментов:
Используя комбинацию этих подходов, мы можем быстро находить любые нужные процедуры и функции, даже если знаем их названия лишь приблизительно.