Как найти формирование данных для синхронизации в ЗУП?

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как найти формирование данных для синхронизации в ЗУП?

Просмотр 1 ветки ответов
  • Автор
    Записи
    • #38820
      Фото аватараOdineski
      Участник

        ЗУП при синхронизации не используется МенеджерОбменаЧерезУниверсальныйФормат, тогда где искать формирование выгружаемых данных?

      • #38821
        bot_avaOdin — Одинэсник
        Участник

          В ЗУП 3.1 формирование файла синхронизации обычно не находится в одном общем модуле с названием МенеджерОбменаЧерезУниверсальныйФормат. Этот менеджер может отсутствовать в конкретном релизе или использоваться только в другой конфигурации.

          В современных релизах ЗУП обмен построен вокруг подсистемы «Синхронизация данных». Формирование выгружаемых данных разделено на несколько этапов:

          1. регистрация изменений;
          2. отбор объектов по узлу плана обмена;
          3. применение правил конвертации;
          4. формирование сообщения универсального формата;
          5. запись XML-файла в каталог обмена.

          ## Где искать в конфигураторе

          ### 1. План обмена

          В конфигураторе откройте:

          Ищите план обмена, связанный с синхронизацией данных. Его имя зависит от релиза ЗУП. Обычно в названии присутствуют слова:

          У плана обмена нужно посмотреть:

          — состав объектов;
          — регистр сведений регистрации изменений;
          — процедуры менеджера плана обмена;
          — подписки на события, которые регистрируют изменения;
          — обработчики выгрузки данных.

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

          Проверять нужно в первую очередь:

          И процедуры, связанные с:

          Точные имена процедур могут отличаться в зависимости от релиза.

          ## 2. Регистры сведений регистрации изменений

          Откройте в конфигураторе:

          Ищите регистры с названиями, содержащими:

          В ЗУП регистрация обычно связана с узлом плана обмена. В регистре можно увидеть:

          — ссылку на объект;
          — узел обмена;
          — момент регистрации;
          — вид изменения;
          — иногда тип объекта или составной идентификатор.

          Если документ или элемент справочника не зарегистрирован, обработка выгрузки его, как правило, не включит в сообщение.

          Проверить содержимое можно программно, например через консоль запросов. Конкретное имя регистра нужно подставить из вашей конфигурации:

          ## 3. Общие модули подсистемы синхронизации

          В конфигураторе выполните глобальный поиск по исходным текстам общих модулей.

          Искать нужно не только МенеджерОбменаЧерезУниверсальныйФормат, но и следующие фрагменты:

          Особенно проверяйте общие модули, в названии которых есть:

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

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

          либо в общих модулях с признаком:

          ## 4. Регламентные задания

          Если выгрузка выполняется автоматически, проверьте:

          Ищите задания с названиями вроде:

          У регламентного задания смотрите:

          — имя метода;
          — общий модуль;
          — расписание;
          — параметры;
          — соответствующий элемент настройки синхронизации.

          Вызов обычно идет примерно по такой цепочке:

          Фактическое имя метода будет зависеть от релиза.

          ## 5. Обработчики команд формы настройки синхронизации

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

          В конфигураторе ищите общие формы и формы обработки по словам:

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

          Практический способ:

          1. Запустите отладку.
          2. Откройте настройку синхронизации.
          3. Поставьте точку останова в обработчике кнопки запуска обмена.
          4. Нажмите кнопку выполнения обмена.
          5. Проследите стек вызовов.
          6. Найдите первый серверный вызов, в котором появляются:
          — узел плана обмена;
          — настройки подключения;
          — пакет данных;
          — правила конвертации;
          — имя файла.

          Это обычно быстрее, чем просматривать все общие модули вручную.

          ## 6. Правила конвертации

          Важный момент: перечень выгружаемых объектов и состав их данных часто задаются не жестко в BSL-коде.

          Правила могут храниться:

          — в XML-файле настроек синхронизации;
          — в регистре сведений;
          — в макете конфигурации;
          — в объекте типа ХранилищеЗначения;
          — в данных, загруженных при создании настройки синхронизации;
          — в поставляемых правилах конвертации.

          Ищите в конфигурации:

          При синхронизации ЗУП и Бухгалтерии правила могут не быть отдельным видимым объектом метаданных. Они могут загружаться из универсального формата и храниться в настройке конкретной синхронизации.

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

          ## 7. Где посмотреть состав уже сформированного файла

          В каталоге обмена обычно появляются файлы типа:

          В разных релизах имена могут быть другими.

          Файл Message_*.xml показывает уже сформированный результат, но не всегда позволяет понять, почему объект попал в выгрузку. Для этого сопоставьте его с:

          1. регистрацией изменений;
          2. узлом плана обмена;
          3. настройкой синхронизации;
          4. правилами конвертации;
          5. журналом регистрации.

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

          В глобальном поиске ищите:

          Если строки Message_ в конфигурации нет, имя может формироваться динамически через настройку канала обмена.

          ## Что проверять в первую очередь

          Для типовой ЗУП 3.1 я бы шел в таком порядке:

          ### Шаг 1. Определить используемый план обмена

          В пользовательском режиме откройте:

          Откройте нужную настройку и определите:

          — вид приложения-приемника;
          — узел обмена;
          — способ подключения;
          — каталог обмена;
          — дату начала обмена.

          Затем в конфигураторе найдите соответствующий план обмена.

          ### Шаг 2. Проверить регистрацию изменений

          После изменения тестового документа проверьте, появилась ли запись в регистре регистрации изменений.

          Например:

          — изменить документ Начисление зарплаты и взносов;
          — записать его;
          — выполнить запрос к регистру регистрации;
          — найти ссылку на этот документ;
          — проверить, что она зарегистрирована именно для нужного узла.

          ### Шаг 3. Поставить точку останова на серверный запуск обмена

          Не на кнопку формы, а на серверную процедуру, вызываемую после нее.

          В стеке вызовов нужно найти процедуры, где последовательно выполняется:

          ### Шаг 4. Проверить правила конвертации

          Если объект зарегистрирован, но в XML его нет, проблема обычно находится уже после регистрации:

          — объект исключен правилами обмена;
          — не выполняется условие отбора;
          — объект является подчиненным и выгружается только вместе с владельцем;
          — объект уже был выгружен ранее;
          — установлен отбор по организации или периоду;
          — для объекта нет правила конвертации;
          — документ не проведен или не соответствует условиям обмена.

          ## Важное различие

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

          Поэтому если нужно понять, почему конкретный документ не попал в выгрузку, начинать надо с регистра изменений.

          Если нужно понять, почему документ попал в выгрузку, но с другими реквизитами, смотреть нужно правила конвертации.

          Если нужно понять, где создается сам XML-файл, искать нужно серверный обработчик обмена и вызовы записи XML, а не только план обмена.

          В типовой ЗУП наиболее результативный метод отладки такой:

          1. очистить или заархивировать каталог обмена;
          2. изменить один тестовый объект;
          3. проверить его регистрацию;
          4. запустить выгрузку в режиме отладки;
          5. остановиться на серверном вызове;
          6. пошагово пройти до процедуры формирования сообщения;
          7. посмотреть значение структуры или таблицы, из которой создается XML;
          8. сопоставить ее с содержимым Message_*.xml.

          При этом настройки синхронизации могут быть загружены в базу как данные, поэтому отсутствие очевидного объекта МенеджерОбменаЧерезУниверсальныйФормат само по себе не означает, что универсальный формат не используется.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С