Как найти форму узла и обработчик команды «Выполнить обмен» в плане обмена с сайтом?

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

При работе с типовыми конфигурациями (такими как УТ 11, КА 2 или ERP) часто возникает необходимость доработать стандартный механизм взаимодействия с интернет-магазином. Одной из первых сложностей, с которой сталкивается разработчик, является поиск конкретных объектов в дереве конфигурации и определение того, какой код выполняется при нажатии кнопок в интерфейсе. Рассмотрим пошагово, как найти форму узла обмена и обработчик команды запуска обмена.

Поиск формы узла плана обмена

В современных конфигурациях 1С обмен с сайтом реализован через механизм планов обмена. Для того чтобы найти форму, которую пользователь видит при настройке выгрузки (например, «Выгрузка первых заказов»), выполним следующие действия:

  1. Откроем Конфигуратор и перейдем в дерево метаданных.
  2. Развернем ветку Общие, затем найдем раздел Планы обмена.
  3. Найдем объект с именем ОбменССайтом.
  4. Развернем этот объект и перейдем к ветке Формы.
  5. Основная рабочая форма, в которой производятся настройки конкретного подключения, обычно называется ФормаУзла.

Важно понимать, что если вы открываете список всех настроек через «Все функции» (или «Функции для технического специалиста»), вы попадаете в ФормаСписка. При выборе конкретной настройки (узла) открывается именно ФормаУзла. Именно в модуле этой формы сосредоточена логика отображения элементов интерфейса, но не всегда там находится логика самого обмена.

Поиск обработчика кнопки «Выполнить обмен»

Часто разработчики ищут код команды в модуле формы, просматривая список команд формы. Однако в типовых решениях 1С кнопка «Выполнить обмен» нередко является командой объекта метаданных, а не локальной командой формы. Это позволяет вызывать процедуру обмена из разных мест системы (из списка, из формы узла, из регламентных заданий).

Разберем, как найти программный код такой команды:

  1. В дереве метаданных внутри плана обмена ОбменССайтом найдем ветку Команды.
  2. Там должна находиться команда с именем ВыполнитьОбменДанными (или аналогичная по смыслу).
  3. Нажмем правой кнопкой мыши на команду и выберем пункт Открыть модуль команды.

В открывшемся модуле мы увидим процедуру ОбработкаКоманды. Рассмотрим пример того, как это выглядит в коде:


&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
    // ПараметрКоманды содержит ссылку на узел плана обмена
    Если ПараметрКоманды = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    // Вызов серверной логики для запуска процесса
    ОбменССайтомКлиент.ВыполнитьИнтерактивныйОбмен(ПараметрКоманды);
    
КонецПроцедуры

Проанализируем эту ситуацию: код в модуле команды обычно является лишь «точкой входа». Он вызывает методы из общих модулей. В данном случае управление передается в общий модуль ОбменССайтомКлиент.

Где искать основную логику обмена (серверный код)

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

Рассмотрим основные модули, которые задействованы в процессе:

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

Особенности отладки: Фоновые задания

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

Чтобы отладчик «поймал» выполнение кода в этом случае, необходимо выполнить предварительную настройку в Конфигураторе:

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

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

Заключение

Для эффективной доработки обмена с сайтом недостаточно просмотреть только модуль формы. Структура кода в 1С распределена: форма отвечает за интерфейс, модуль команды — за инициацию действия, а общие модули (преимущественно ОбменССайтом) — за бизнес-логику и формирование файлов. Для глубокого анализа работы системы всегда используйте поиск по ссылкам в объекте (Shift + F12) и не забывайте включать отладку фоновых заданий.

← На главную