При работе с базами, которые длительное время находились на поддержке у сторонних организаций, программисты часто сталкиваются с ситуацией, когда в типовую конфигурацию (например, Управление торговлей 10.3 или УПП 1.3) внедрены объекты для обмена с интернет-магазином. Основная сложность возникает, когда названия обработок — ОбменССайтом и ПомощникНастройкиОбменаДаннымиССайтом — не имеют характерного префикса Б_, а в конфигурации поставщика эти объекты отсутствуют. Рассмотрим подробно, как определить «донора» этих объектов и найти их исходный код для выявления внесенных изменений.
Для начала проанализируем исторический контекст развития интеграции «1С-Битрикс» и фирмы «1С». Это поможет нам понять, в какую сторону направить поиск. Отсутствие префикса Б_ в именах объектов однозначно указывает на один из двух вариантов:
ОбменССайтом, ПомощникНастройкиОбменаДаннымиССайтом и справочник НастройкиОбменаССайтом.Проанализируем ситуацию: если ваша конфигурация — это старая версия «Управление торговлей 10.3» (выпуска до середины 2013 года), велика вероятность, что эти объекты были там изначально, но при очередном обновлении их могли снять с поддержки или оставить «как есть», в то время как «1С» исключила их из новых релизов.
Чтобы найти «чистые» исходники, нам необходимо выполнить несколько последовательных шагов. Рассмотрим их подробнее.
Шаг 1. Идентификация версии через код. Откроем модуль обработки ОбменССайтом в конфигураторе и попробуем найти упоминание версии модуля. Даже если разработчики не вынесли версию в отдельную константу, она часто встречается в комментариях в самом начале текста модуля или в процедурах регистрации обработки. Ищите по ключевым словам Version, Версия или v..
Шаг 2. Поиск в архивах на сайте разработчика. Проанализируем официальный ресурс «1С-Битрикс». Несмотря на то что на главной странице загрузок предлагаются современные версии (начиная с 4.0 и выше с префиксами), в архивах часто можно найти версии линейки 3.x.x.x. Скачаем дистрибутив версии 3.0.1.1 или аналогичной для вашей конфигурации. Внутри таких дистрибутивов объекты будут иметь идентичные названия без префиксов.
Шаг 3. Обращение к старым дистрибутивам «1С». Если поиск на сайте «Битрикс» не дал результатов, нам следует обратиться к архиву типовых конфигураций «1С». Например, в «Управление торговлей 10.3.20.2» эти объекты присутствовали в типовой поставке. Выясним примерную дату внедрения вашей системы и скачаем соответствующий релиз того времени с портала ИТС или из архива дистрибутивов. Сравнение вашей базы с этим релизом через механизм «Сравнение, объединение с конфигурацией из файла» сразу подсветит все изменения, внесенные франчайзи.
Когда исходная версия найдена, приступим к самому важному — анализу кода. Рассмотрим основные места, где чаще всего вносятся изменения. Как правило, франчайзи дорабатывают логику формирования XML-файлов или механизмы отбора данных.
Проанализируем структуру модуля обработки ОбменССайтом. Особое внимание уделим следующим процедурам:
СформироватьПакетПредложений() — здесь описывается логика выгрузки остатков и цен. Если в вашей компании сложная система расчета остатков (например, с учетом резервов или по конкретным складам), изменения будут именно здесь.ЗаполнитьДанныеТовара() — в этой процедуре обычно дописывают выгрузку дополнительных реквизитов или свойств, которые не предусмотрены стандартным механизмом CommerceML.ВыгрузитьКартинки() — часто дорабатывается для оптимизации передачи изображений или интеграции с внешними хранилищами.Посмотрим на пример того, как может выглядеть типичная доработка в старом модуле. Допустим, стандартный код просто берет цену, а франчайзи добавили условие по спеццене для сайта:
// Стандартный код
ЦенаТовара = ПолучитьЦену(Товар, ТипЦен);
// Вероятная доработка франчайзи
Если НастройкаОбмена.ИспользоватьСпецЦены Тогда
ЦенаТовара = МодульЦенообразования.ПолучитьСпецЦенуДляСайта(Товар);
Иначе
ЦенаТовара = ПолучитьЦену(Товар, ТипЦен);
КонецЕсли;
Выясним причину изменений в справочнике НастройкиОбменаССайтом. Если в форме справочника вы видите флажки или поля, которых нет в «чистой» версии, значит, логика обмена была расширена пользовательскими настройками. Это критически важный момент для понимания того, какой функционал ожидает бизнес от системы.
Если ваша задача — не просто изучить код, а обновить обмен или исправить ошибки, проанализируем ситуацию стратегически. Старые модули (без префиксов) работают по стандарту CommerceML 2.05, который имеет множество ограничений.
Вариант 1. Точечное исправление. Если доработок немного (до 10% кода), целесообразно продолжать использовать текущую версию, предварительно зафиксировав все изменения в комментариях. Это позволит вам беспрепятственно понимать логику системы в будущем.
Вариант 2. Переход на новый модуль. Если доработок много, но они хаотичны, рекомендуем рассмотреть установку современного модуля от «Битрикс» (версии 7.х или выше с префиксом Б_). Преимущество в том, что новые модули устанавливаются параллельно и не конфликтуют с вашими объектами ОбменССайтом. Вы сможете постепенно перенести нужную бизнес-логику в новый механизм, используя современные возможности (например, выгрузку через JSON или более гибкие отборы по складам).
Выясним, стоит ли тратить время на поиск именно той «самой» версии. Если после сравнения с 2–3 похожими релизами вы видите, что структура кода совпадает на 95%, то оставшиеся 5% и есть те самые доработки. Нет необходимости искать версию до четвертого знака после запятой — достаточно найти базовый «каркас», чтобы понять вектор мысли предыдущего разработчика.
В завершение проанализируем справочник НастройкиОбменаССайтом. Часто франчайзи не меняют код обработки, а добавляют в этот справочник дополнительные реквизиты, которые затем используются в запросах внутри обработки ОбменССайтом. Проверьте состав реквизитов справочника через «Поиск ссылок на объект». Это поможет быстро локализовать все места в коде, где используется нестандартная логика.