Почему не работает обмен из коробки между УТ 11 и Бухгалтерией 3.0 и как его настроить

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

При использовании стандартных механизмов синхронизации между конфигурациями 1С:Управление торговлей 11 (УТ 11) и 1С:Бухгалтерия предприятия 3.0 (БП 3.0) специалисты часто сталкиваются с ситуацией, когда при первичной или очередной выгрузке в базу-приемник «прилетают» дубли контрагентов с одинаковым ИНН, а документы загружаются без складов, организаций или договоров. Проанализируем, как устроен типовой механизм обмена, выясним причины сбоев и разберем по шагам правильный порядок настройки синхронизации.

Как устроен современный типовой обмен: формат EnterpriseData

В современных конфигурациях 1С обмен между УТ 11 и БП 3.0 выполняется не через классические правила обмена (XML-файлы из Конвертации данных 2.1), а с использованием формата EnterpriseData (ED). Логика этого формата строится на обработке правил, созданных в Конвертации данных 3.0 (КД3), которые программно внедрены в общие модули типовых конфигураций (например, модуль МенеджерОбменаЧерезУниверсальныйФормат).

Ключевое отличие формата EnterpriseData заключается в том, что конфигурации обмениваются данными не напрямую по структуре друг друга, а через единую универсальную XDTO-схему. Каждая база отвечает за трансляцию своих данных в формат ED при выгрузке и из формата ED в собственные справочники и документы при загрузке.

Основные причины появления дублей и незаполненных реквизитов

Выясним, почему стандартный обмен «из коробки» создает дубли и не заполняет поля:

  1. Приоритет поиска по уникальному идентификатору (УИД): По умолчанию система пытается найти объект в базе-приемнике по его внутреннему GUID (УИД). Если элемент с таким же ИНН уже был создан вручную в БП 3.0 и в УТ 11, у них будут разные УИД. Если синхронизация запускается в автоматическом фоновом режиме без предварительного сопоставления, программа не найдет объект по УИД и автоматически создаст новую карточку.
  2. Различия в реквизитах (ИНН и КПП): Для юридических лиц по умолчанию поиск в EnterpriseData происходит по связке ИНН + КПП. Если в одной из баз у контрагента не заполнен или отличается КПП (например, указан КПП филиала вместо головной организации), механизм создаст дубликат.
  3. Двухуровневая справочная система УТ 11: В Управление торговлей разделены справочники Партнеры (управленческий учет) и Контрагенты (регламентированный учет). Если включено независимое ведение партнеров и контрагентов, а в Бухгалтерии используется только справочник Контрагенты, возникает рассинхронизация при переносе связей.
  4. Отсутствие счетов учета и аналитики в Бухгалтерии: В УТ 11 нет бухгалтерских счетов. При загрузке документов в БП 3.0 счета учета, статьи затрат и номенклатурные группы подставляются на основе регистров сведений самой Бухгалтерии (например, Счета учета номенклатуры, Счета учета расчетов с контрагентами). Если эти регистры в БП 3.0 не заполнены, документы загрузятся незаполненными или непроведенными.

Алгоритм правильной настройки и проведения обмена

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

  1. Заполнение базовых регистров и нормативно-справочной информации (НСИ): В базе БП 3.0 до первого обмена должны быть заполнены регистры сведений счетов учета номенклатуры и расчетов с контрагентами. Данные об организациях, банковских счетах и подразделениях должны полностью совпадать.
  2. Запуск синхронизации в интерактивном режиме (с дополнительными параметрами): Первичный обмен обязательно запускается вручную с включенным шагом интерактивного сопоставления данных. На этапе сопоставления необходимо явно указать поля поиска (например, для контрагентов — по ИНН и Наименованию, для номенклатуры — по Артикулу и Наименованию).
  3. Сохранение таблицы соответствий: Все установленные вручную связи записываются в регистр сведений Соответствия объектов информационных баз. После этого при последующих автоматических обменах система будет точно знать, какому элементу УТ 11 соответствует элемент в БП 3.0.
  4. Регулярный запуск обмена: Настройку регламентных заданий обмена следует выполнять на частый запуск (каждые 15–30 минут), чтобы предотвратить накопление больших массивов несопоставленных данных.

Исправление ошибок и объединение дублей

Если дубли уже создались в базе-приемнике, проанализируем порядок их устранения:

  1. Выполним объединение сдублированных карточек штатной обработкой Поиск и удаление дублей в БП 3.0.
  2. Перейдем в регистр сведений Соответствия объектов информационных баз и проверим записи для оставшегося правильного объекта.
  3. При необходимости выполним повторную регистрацию документа или справочника к выгрузке в базе-источнике через обработку Регистрация изменений для обмена данными.

Доработка правил обмена ED под свои требования

Если типовых алгоритмов сопоставления недостаточно (например, требуется искать контрагентов строго по ИНН без учета КПП или переносить специфические реквизиты), не требуется снимать конфигурацию с поддержки. В современных релизах доработка правил EnterpriseData выполняется через расширения конфигурации (.cfe) путем переопределения обработчиков в модуле МенеджерОбменаЧерезУниверсальныйФормат или с помощью подключения внешних правил обмена, подготовленных в Конвертации данных 3.0.

Оптимизация чтения и записи больших XML-файлов обмена

При передаче огромных объемов данных через XML-файлы типовые механизмы обработки текста могут приводить к перерасходу оперативной памяти на сервере. Посмотрим на пример оптимизации программного кода при чтении и записи временных файлов обмена на сервере с использованием двоичных данных вместо полной загрузки длинных строк в память:


&НаСервере
Процедура ПрочитатьЗаписатьТекстОптимизированно(Знач Прочитать, АдресХранилища, ИмяФайла)
    Если Прочитать Тогда
        // Вместо ПрочитатьТекст() помещаем файл в хранилище как ДвоичныеДанные
        Двоичные = Новый ДвоичныеДанные(ИмяФайла);
        АдресХранилища = ПоместитьВоВременноеХранилище(Двоичные);
    Иначе
        // Извлекаем двоичные данные из хранилища и записываем прямо в файл
        Двоичные = ПолучитьИзВременногоХранилища(АдресХранилища);
        Если Двоичные <> Неопределено Тогда
            Двоичные.Записать(ИмяФайла);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Использование ДвоичныеДанные предотвращает загрузку гигабайтных XML-строк в память серверного процесса 1С, что существенно ускоряет работу обмена и снижает риск падения службы rphost по превышению лимита памяти.

← На главную