Почему не заполняются виды оплаты при синхронизации 1С:Розница и 1С:Управление торговлей и как это исправить?

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

При настройке обмена данными между 1С:Розница (2.3) и 1С:Управление торговлей (11.5) через формат EnterpriseData часто возникает специфическая проблема: в документе Отчет о розничных продажах, загруженном в УТ, табличная часть «Оплата платежными картами» оказывается заполненной не полностью — поле Вид оплаты остается пустым. При этом повторная ручная регистрация документа к обмену и повторная синхронизация решают проблему. Давайте вместе разберемся, почему так происходит, и как настроить систему для корректной работы в автоматическом режиме.

Анализ механизма сопоставления объектов

Для начала проанализируем, как эти данные представлены в обеих конфигурациях. В 1С:Розница оплата привязана к справочнику Виды оплат. Однако в 1С:Управление торговлей логика иная: ключевым объектом является Эквайринговый терминал, который жестко связан с Эквайером (Партнером) и Договором эквайринга.

Рассмотрим процесс выгрузки через EnterpriseData. Система передает не просто название «Платежная карта», а ссылку на ЭквайринговыйТерминал. Если в УТ при загрузке документа система не может однозначно найти или создать терминал с привязкой к договору, поле Вид оплаты (которое в УТ является производным от настроек терминала) остается пустым.

Причина «эффекта второй синхронизации»

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

  1. При первой (автоматической) синхронизации в одном пакете данных могут идти и новые настройки (терминалы), и сами документы.
  2. Если Отчет о розничных продажах обрабатывается системой раньше, чем завершилась запись и индексация нового Эквайрингового терминала, механизм поиска в УТ «не видит» объект в базе данных.
  3. При повторной синхронизации терминал уже гарантированно существует в базе УТ, и поиск по уникальному идентификатору (GUID) или по полям сопоставления в регистре Соответствия объектов информационных баз отрабатывает мгновенно и корректно.

Шаг 1: Проверка связки «Терминал — Эквайер — Договор»

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

  1. Перейдем в раздел Эквайринг и откроем справочник Эквайринговые терминалы.
  2. Убедимся, что для каждого терминала, пришедшего из Розницы, указан корректный Банк-эквайер и, что критически важно, действующий Договор эквайринга.
  3. Проверим срок действия договора. Если срок истек, автоматическая подстановка вида оплаты в документ Отчет о розничных продажах будет заблокирована логикой УТ.

Шаг 2: Работа с регистром «Соответствия объектов»

Одной из скрытых причин может быть дублирование записей в регистре сведений Соответствия объектов информационных баз. Разберем ситуацию: если одному терминалу в Рознице случайно сопоставлено два разных объекта в УТ (или наоборот), автоматический поиск при загрузке через фоновое задание может вернуть неопределенное значение.

Рекомендуется выполнить «чистку» сопоставлений:

  1. Зайдем в АдминистрированиеСинхронизация данных.
  2. Откроем Состав отправляемых данных для нужного узла обмена.
  3. Найдем объект Эквайринговые терминалы и через Помощник интерактивной синхронизации проверим, как выполнено сопоставление.
  4. Если есть дубли, их необходимо устранить, оставив строго одну связь «один к одному».

Шаг 3: Проблема инициализации параметров сеанса

В релизах УТ 11.5 (включая 11.5.25.x) замечена особенность: при запуске синхронизации регламентным заданием (под системным пользователем) иногда не инициализируются параметры сеанса, отвечающие за поиск соответствий объектов XDTO. В то время как при ручном запуске под обычным пользователем всё работает корректно.

Если вы столкнулись с этим «багом» обновления, можно применить программное решение для принудительного сопоставления. Рассмотрим пример кода, который можно использовать в расширении для модуля загрузки данных МенеджерОбменаЧерезУниверсальныйФормат:


Процедура ПередЗаписьюПолученногоОбъекта(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена) Экспорт
    Если ТипЗнч(ДанныеИБ) = Тип("ДокументОбъект.ОтчетОРозничныхПродажах") Тогда
        Для Каждого СтрокаОплаты Из ДанныеИБ.ОплатаПлатежнымиКартами Цикл
            Если Не ЗначениеЗаполнено(СтрокаОплаты.ВидОплаты) Тогда
                // Логика принудительного поиска вида оплаты по терминалу
                СтрокаОплаты.ВидОплаты = ПолучитьВидОплатыПоТерминалу(СтрокаОплаты.ЭквайринговыйТерминал);
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

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

Шаг 4: Настройка типа оплаты в Рознице

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

Заключение

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

← На главную