Почему при синхронизации КА 2 и БП 3 возникает ошибка контактной информации и не заполняются счета учета?

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

При настройке обмена данными между конфигурациями 1С:Комплексная автоматизация 2 и 1С:Бухгалтерия предприятия 3 через Универсальный формат (EnterpriseData) разработчики и администраторы нередко сталкиваются с ситуацией, когда синхронизация завершается с ошибкой десериализации контактных данных, а в успешно перенесенных документах (например, «Реализация товаров и услуг») остаются пустыми счета учета номенклатуры и расчетов с контрагентами.

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

Анализ причин возникновения ошибки

Проанализируем журнал регистрации в базе-приемнике (БП 3). Типовое аварийное завершение сопровождается следующим сообщением:

Вид контактной информации Юридический адрес полученного объекта указан несколько раз. Загрузка не возможна. ВызватьИсключение ТекстИсключения;

Выделим две основные причины такого поведения системы:

  1. Ограничения схемы XDTO формата EnterpriseData: Стандарт обмена строго регламентирует структуру контактной информации. В XML-пакете для одного элемента справочника (партнера, контрагента или организации) допускается наличие только одного блока данных конкретного предопределенного типа (например, «Юридический адрес»). Если в базе-источнике (КА 2) в табличной части КонтактнаяИнформация у контрагента продублирован вид адреса или в справочнике Виды контактной информации заведены дублирующие элементы, модуль МенеджерОбменаЧерезУниверсальныйФормат генерирует исключение.
  2. Механизм отложенного проведения и заполнения счетов: В процессе загрузки данных объекты записываются в режиме ОбменДанными.Загрузка = Истина. В этом режиме типовые механизмы автозаполнения реквизитов на уровне событий форм и модулей объектов отключены. Заполнение счетов учета и проведение документов в БП 3 вынесены в регламентную процедуру отложенного проведения, которая запускается только после успешного завершения разбора всего входящего пакета. Поскольку из-за дубля адреса произошел аварийный останов, этап отложенной обработки не стартовал, и счета учета остались незаполненными.

Способ 1. Исправление данных в базе-источнике (КА 2)

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

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

Способ 2. Настройка выгрузки по разным организациям в две базы БП 3

Если требуется выгружать данные из одной базы КА 2 в две разные информационные базы БП 3 (по разделу юридических лиц), нет необходимости править код в Конвертации данных 3 (КД 3). Разберем, как это настроить штатными средствами:

  1. В КА 2 перейдем в меню Администрирование -> Синхронизация данных -> Настройки синхронизации данных.
  2. Создадим две независимые настройки синхронизации через универсальный формат.
  3. В каждой настройке откроем вкладку Правила отправки данных.
  4. В поле фильтра по организациям укажем только те организации, которые должны попадать в соответствующую базу-приемник. План обмена будет регистрировать изменения раздельно для каждого узла.

Способ 3. Программная корректировка логики обмена через расширение

Если в базе-источнике исторически накопилось много дублирующихся адресов и оперативно очистить их невозможно, скорректируем алгоритм обработки данных на стороне приемника (БП 3) с помощью расширения конфигурации без снятия с поддержки.

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


&Вместо("ЗаполнитьКонтактнуюИнформациюОбъекта")
Процедура Расш1_ЗаполнитьКонтактнуюИнформациюОбъекта(Объект, ДанныеXDTO, КомпонентыОбмена)
    // Создаем соответствие для отслеживания уже обработанных видов контактной информации
    ОбработанныеВиды = Новый Соответствие;
    
    Для Каждого СтрокаКИ Из ДанныеXDTO.КонтактнаяИнформация Цикл
        ВидКИ = СтрокаКИ.Вид;
        
        // Проверяем наличие дубля по виду контактной информации
        Если ОбработанныеВиды[ВидКИ] <> Неопределено Тогда
            // Пропускаем дублирующуюся запись, предотвращая вызов исключения
            Продолжить;
        КонецЕсли;
        
        ОбработанныеВиды.Вставить(ВидКИ, Истина);
    КонецЦикла;
    
    // Вызов стандартной логики заполнения для уникальных видов
    ПродолжитьВызов(Объект, ДанныеXDTO, КомпонентыОбмена);
КонецПроцедуры

Способ 4. Принудительный запуск заполнения счетов учета

Если документы уже были частично импортированы, но счета учета в них отсутствуют, выполним процедуру отложенной обработки вручную:

  1. В базе БП 3 перейдем в меню Администрирование -> Обслуживание -> Регламентные и фоновые задания.
  2. Найдем регламентное задание Отложенное проведение документов и запустим его выполнение вручную по кнопке Выполнить сейчас.
  3. Если счета учета в регистрах сведений СчетаУчетаНоменклатуры и СчетаУчетаРасчетовСКонтрагентами настроены корректно, система заполнит табличные части документов и выполнит их проведение.
← На главную