Как быстро разобраться в чужой и сильно измененной конфигурации 1С?

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

Каждый 1С-разработчик рано или поздно сталкивается с ситуацией, когда ему в наследство достается огромная, сильно переписанная база данных (например, Управление торговлей 11 или ERP), а спросить о том, кто, как и зачем ее дорабатывал, совершенно не у кого. Документация отсутствует, предыдущие программисты уволились, а задачи по поддержке и развитию системы нужно решать уже сейчас.

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

Шаг 1. Анализ бизнес-логики через общение с пользователями

Прежде чем погружаться в дебри программного кода, нам необходимо понять, как именно предприятие использует эту информационную базу. Любая доработка создавалась под конкретную бизнес-потребность. Без понимания специфики процессов компании вы будете видеть код, но не поймете его истинного назначения.

Обойдем ключевых пользователей программы (руководителей отделов продаж, закупок, складских работников, бухгалтеров) и понаблюдаем за их ежедневной рутиной. Нам важно выяснить:

  1. Какие документы и справочники они используют чаще всего?
  2. Какими отчетами они пользуются для принятия решений и сдачи отчетности?
  3. Какие нетипичные кнопки, формы или обработки они нажимают в интерфейсе программы?

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

Шаг 2. Техническое сравнение с типовой конфигурацией

После того как мы получили общее представление о бизнесе, перейдем к техническому анализу в конфигураторе. Нам нужно четко локализовать места, куда вмешивались наши предшественники.

Если конфигурация находится на поддержке, выполним сравнение с конфигурацией поставщика:

  1. Откроем конфигуратор нашей базы.
  2. Перейдем в меню Конфигурация — Поддержка — Настройка поддержки.
  3. Убедимся, что база находится на поддержке, и нажмем кнопку Сравнить, объединить.

В открывшемся окне сравнения мы увидим дерево метаданных, где измененные или добавленные объекты будут отмечены специальными значками. Нам необходимо зафиксировать:

Если конфигурация полностью снята с поддержки, ситуация усложняется. В этом случае нам придется найти чистую типовую конфигурацию той же версии и выполнить сравнение через файл конфигурации (*.cf). На основе полученного списка изменений составим карту доработок.

Шаг 3. Анализ расширений и подписок на события

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

Проанализируем расширения конфигурации. Перейдем в меню Конфигурация — Расширения конфигурации. Если расширения есть, изучим их структуру. Особое внимание обратим на процедуры, перехваченные с помощью аннотаций:

Также исследуем ветку Подписки на события в дереве метаданных основной конфигурации. Отфильтруем подписки по интересующим нас объектам (например, по ключевым документам). Подписки на события ПередЗаписью, ПриЗаписи или ОбработкаПроведения часто используются для незаметного внедрения кастомных проверок и движений по регистрам. Это позволяет разработчикам не менять код самого документа, сохраняя возможность его обновления.

Шаг 4. Сбор статистики использования через Журнал регистрации

Зачастую до 80% всех доработок, сделанных в компании за долгие годы, со временем теряют актуальность. Пользователи, для которых они писались, увольняются, процессы меняются, а мертвый код продолжает висеть в базе, затрудняя обновления и создавая ошибки. Наша задача — отсеять живой функционал от заброшенного.

Для этого соберем статистику из Журнала регистрации (ЖР). Нам нужно проанализировать активность за последние несколько месяцев:

  1. Выгрузим данные Журнала регистрации в формате XML или последовательно проанализируем их с помощью специализированных обработок.
  2. Выясним, какие нетиповые документы создаются и проводятся регулярно, а какие не использовались уже больше года.
  3. Проверим запуски нетиповых обработок и регламентных заданий.

Если нам нужно отследить использование кастомных отчетов, которые не оставляют явных следов в типовом ЖР, мы можем временно внедрить простое логирование. Напишем небольшую процедуру в общем модуле, которая будет записывать факт открытия отчета или формы в специальный регистр сведений.

Шаг 5. Метод «мягкого отключения» нетипового функционала

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

Создадим резервную копию базы данных. На тестовой копии или непосредственно в рабочей базе (если мы уверены в безопасности операции) ограничим права доступа к подозрительным нетиповым объектам. Сделать это можно так:

  1. Заберем у пользователей роли, дающие доступ к сомнительным кастомным справочникам, обработкам или документам.
  2. Скроем соответствующие пункты из подсистем интерфейса.
  3. Запустим систему в штатную эксплуатацию и будем фиксировать обращения.

Те пользователи, которым этот функционал действительно жизненно необходим для работы, незамедлительно обратятся к вам с вопросом. Это позволит вам точно определить круг заинтересованных лиц и предметно расспросить их о деталях работы с данными объектами.

Шаг 6. Переход от анализа интерфейса к структуре регистров

Интерфейс программы и экранные формы могут быть обманчивы и запутаны. Профессиональный разработчик всегда начинает глубокий анализ логики с регистров. Именно регистры (накопления, сведений, расчета) отражают суть бизнес-процессов компании. Документы — это лишь средство ввода данных, а регистры — это сами данные.

Проанализируем движения ключевых документов:

  1. Откроем движения доработанного документа в режиме «1С:Предприятие».
  2. Посмотрим, в какие нетиповые регистры он делает записи.
  3. Если документ пишет данные в типовые регистры (например, ВыручкаИСебестоимостьПродаж, ТоварыНаСкладах, ВзаиморасчетыСКлиентами), сопоставим состав его реквизитов с ресурсами и измерениями этих регистров.

Понимание структуры регистров дает мгновенный ответ на вопрос, зачем нужна доработка. Например, если мы видим новый регистр сведений ит_ДополнительныеСкидкиПокупателей, мы сразу понимаем, что в системе реализован кастомный механизм расчета скидок, и можем целенаправленно искать код, который читает данные из этого регистра при заполнении документов продаж.

Шаг 7. Динамический анализ: Замер производительности и отладка фоновых процессов

Когда нам нужно разобраться в работе сложного алгоритма (например, расчета себестоимости, заполнения сложных табличных частей или интеграции с внешними системами), чтение сухого программного кода в конфигураторе малоэффективно. Нам поможет динамический анализ во время работы программы.

Используем встроенный инструмент Замер производительности. Это позволяет увидеть реальный путь прохождения программы по строкам кода:

  1. Откроем конфигуратор и подключимся в режиме отладки к нашему сеансу «1С:Предприятие».
  2. В конфигураторе выберем пункт меню Отладка — Замер производительности (включим его).
  3. В режиме «Предприятия» выполним интересующее нас действие (например, нажмем кнопку заполнения цен или проведем документ).
  4. Вернемся в конфигуратор и выключим замер.

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

Также не забудем настроить автоматическое подключение к фоновым заданиям. В современных решениях на БСП (включая УТ 11) тяжелые расчеты и обработки документов часто передаются на выполнение серверным фоновым заданиям. Чтобы отладчик останавливался на точках останова в таких модулях, настроим его параметры:

  1. В конфигураторе перейдем в Отладка — Подключение....
  2. Нажмем кнопку Автоматическое подключение.
  3. Установим флажок напротив пункта Фоновые задания.

Шаг 8. Использование префиксов и правил кодирования для поиска

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

Обычно компаниям или конкретным проектам присваивается буквенный префикс (например, ит_, дораб_, мск_, Project_). Сделаем глобальный поиск (сочетание клавиш Ctrl + Shift + F) по этим буквосочетаниям. Мы можем обнаружить:

Также проанализируем модули с суффиксом Переопределяемый. Библиотека стандартных подсистем (БСП) предоставляет специальные точки интеграции для разработчиков. Например, кастомные алгоритмы заполнения объектов часто внедряются в общий модуль ЗаполнениеСвойствПереопределяемый, а кастомные печатные формы — в УправлениеПечатьюПереопределяемый. Изучение этих модулей позволит быстро локализовать все интеграционные точки доработок с типовой конфигурацией.

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

← На главную