При работе с конфигурациями 1С:Предприятие мы часто сталкиваемся с необходимостью понять происхождение того или иного фрагмента кода. Это может быть как типовой код, так и доработка, выполненная сторонним разработчиком или нами самими много лет назад. Выяснить источник кода крайне важно для его анализа, модификации или отладки. Давайте вместе разберем различные подходы и инструменты, которые помогут нам в этом нелегком, но увлекательном деле.
Мы рассмотрим несколько эффективных методов, начиная от самых простых и заканчивая более сложными и специализированными. Каждый из них имеет свои преимущества и может быть применен в зависимости от ситуации.
Это один из самых очевидных и часто используемых способов. Если у нас есть подозрительный фрагмент кода, мы можем просто найти его во всей конфигурации.
Ctrl + Shift + F).Посмотрим на пример: Предположим, мы нашли в коде вызов процедуры ОбновитьСтатусыЗаказовПоставщику(). Вставив это имя в глобальный поиск, мы сможем найти все места, где эта процедура определена или вызывается.
Иногда сам код может дать нам подсказки о своем происхождении. Мы должны внимательно изучить его структуру и содержание.
ЗаполнитьТабличнуюЧасть(), а мы видим _МояКомпания_ЗаполнитьТабличнуюЧастьДоп(), это явно указывает на доработку.#Область и #КонецОбласти) для структурирования кода. Названия этих областей могут содержать информацию о назначении кода или его авторе.&НаСервере, &НаКлиенте, &ВнешнееСоединение, могут подсказать нам, в каком контексте выполняется код. Например, наличие &НаСервере в модуле формы с большой вероятностью указывает на то, что это код серверной части формы.Этот метод является одним из самых мощных для выявления изменений в типовых конфигурациях.
Платформа 1С:Предприятие предоставляет нам инструмент "Сравнение и объединение" конфигураций. Мы можем использовать его для:
При сравнении модулей мы увидим не только измененные строки, но и можем анализировать изменения в разрезе отдельных методов, что значительно упрощает поиск. Сравнение может быть выполнено как по именам объектов, так и по их внутренним идентификаторам (UUID).
Для более детального сравнения и анализа различий, особенно если требуется работа с внешними обработками или отчетами, мы можем прибегнуть к помощи сторонних программ, например, KDiff3. Такие инструменты позволяют проводить построчное сравнение текстов и могут быть интегрированы с 1С.
Иногда нам нужно не просто найти код, но и понять, кто и когда его изменил.
В 1С существует Журнал регистрации, который фиксирует действия пользователей и фоновых задач в программе. Хотя он не покажет нам конкретные строки кода, он может подсказать, когда и какой пользователь изменял определенные объекты конфигурации (например, модули). Зная время изменения, мы сможем сузить круг поиска.
Начиная с платформы 8.3.11, нам доступен мощный механизм "История изменений" или версионирование объектов. Он позволяет хранить все изменения реквизитов документов и других объектов. Мы можем:
Настройка этой функции осуществляется в разделе "Администрирование" - "Общие настройки" - "История изменения". Если версионирование было включено для модулей или объектов, связанных с интересующим нас кодом, мы сможем увидеть, кто и когда его менял.
Для больших и сложных конфигураций нам на помощь приходят специализированные инструменты.
Существуют инструменты статического анализа, такие как SonarQube с плагинами для 1С или 1С:Автоматизированная проверка конфигураций (1С:АПК). Они анализируют исходный код без его запуска и могут помочь нам в следующем:
Использование таких инструментов помогает систематизировать анализ и выявить закономерности, которые вручную заметить сложно.
Если разработка велась с соблюдением стандартов 1С, это значительно упрощает задачу.
Мы должны выяснить, соблюдаются ли в конфигурации стандарты 1С (например, по именованию переменных, процедур, оформлению кода, использованию префиксов для доработанных объектов). Если да, то:
БЛ_ для "Бизнес-Логики"). Это позволяет легко отличить типовой код от модифицированного.Иногда часть функционала может быть реализована вне 1С.
Мы должны помнить, что часть функционала может быть реализована во внешних компонентах (DLL-библиотеках), которые подключаются к 1С. Если анализируемый код взаимодействует с такими компонентами, их идентификация (например, по имени объекта, используемого при подключении) может указать на внешний источник функционала. Нам следует искать вызовы методов внешних объектов или процедуры, отвечающие за их загрузку и инициализацию.
Для динамического анализа кода нам пригодится отладчик.
Отладчик позволяет нам пошагово выполнять код, просматривать значения переменных, стек вызовов процедур и функций, а также контекст выполнения. Используя отладчик, мы можем:
Это помогает нам не только понять "что" делает код, но и "как" он работает в реальном времени, что может дать ценные подсказки о его происхождении.
Прежде чем углубляться в технические детали, давайте посмотрим на проблему сверху.
Прежде чем мы начнем анализировать код, полезно понять, как изучаемый механизм работает в пользовательском режиме программы. Мы можем:
Это поможет нам сделать выводы о важности и назначении различных фрагментов кода, а также сузить область поиска. Если мы понимаем, что код относится, например, к расчету себестоимости, мы будем искать его в модулях, связанных с учетом затрат или производством.
Используя комбинацию этих методов, мы значительно повысим наши шансы на успешное определение источника части кода модуля в 1С. Каждый из подходов дополняет другие, позволяя нам получить максимально полную картину.
← К списку