Типичная ситуация при интеграции между конфигурациями 1С:Розница и 1С:Управление торговлей: обмен завершается успешно, все сопутствующие документы (поступления, перемещения, кассовые чеки) проводятся в базе-приемнике без замечаний, однако документ Отчет о розничных продажах остается записанным, но не проведенным. При этом вручную пользователь может открыть документ и провести его без каких-либо ошибок. Разберем детально, почему так происходит и как исправить поведение системы.
В современных типовых решениях 1С, построенных на базе Библиотеки стандартных подсистем (БСП), при обмене данными через типовые планы обмена документы розничных продаж часто не проводятся в момент физического приема XML-сообщения. Вместо этого они регистрируются в специальной очереди.
Проанализируем работу этого механизма:
Очередь отложенного проведения или Документы к отложенному проведению).Для исправления ситуации проверим состояние регламентных и фоновых заданий в 1С:Управление торговлей. Убедимся, что задание отложенного проведения активно, выполняется по расписанию и в его журнале отсутствуют критические ошибки.
Если обмен настраивается через правила конвертации данных (КД 2.0), автоматическое проведение определяется свойствами загрузки документа. В правилах конвертации объектов (ПКО) документа ОтчетОРозничныхПродажах поведение регулируется в обработчике ПередЗагрузкой.
В этом обработчике доступны следующие служебные переменные:
"Запись", "Проведение", "ОтменаПроведения"."Неоперативный", "Оперативный".Посмотрим на пример установки явного проведения в обработчике ПередЗагрузкой ПКО:
РежимЗаписи = "Проведение";
РежимПроведения = "Неоперативный";
Важное предупреждение: установка РежимЗаписи = "Проведение" непосредственно в ПКО приводит к тому, что документ пытается провестись в той же транзакции, в которой он считывается из файла обмена. Если на этот момент в базу еще не успели загрузиться связанные данные (например, серии, партии или документы перемещения), транзакция упадет с ошибкой и прервет загрузку всего пакета данных.
Чтобы избежать ошибок блокировок и нарушения ссылочной целостности, применим более надежный подход: отложим проведение документов на этап после полной загрузки всех объектов пакета.
Разберем по шагам, как это реализовать в правилах конвертации:
Параметры.Вставить("ТаблицаДокументовКПроведению", Новый ТаблицаЗначений);
Параметры.ТаблицаДокументовКПроведению.Колонки.Добавить("Ссылка");
Параметры.ТаблицаДокументовКПроведению.Колонки.Добавить("Дата");
ОтчетОРозничныхПродажах в обработчике ПослеЗагрузки сохраняем ссылку загруженного документа в созданную таблицу:
СтрокаТаблицы = Параметры.ТаблицаДокументовКПроведению.Добавить();
СтрокаТаблицы.Ссылка = Ссылка;
СтрокаТаблицы.Дата = Объект.Дата;
Если Параметры.Свойство("ТаблицаДокументовКПроведению") И Параметры.ТаблицаДокументовКПроведению.Количество() > 0 Тогда
Параметры.ТаблицаДокументовКПроведению.Сортировать("Дата Возр");
Для Каждого Стр Из Параметры.ТаблицаДокументовКПроведению Цикл
Попытка
ДокументОбъект = Стр.Ссылка.ПолучитьОбъект();
Если ДокументОбъект <> Неопределено И Не ДокументОбъект.Проведен Тогда
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
КонецЕсли;
Исключение
ЗаписьЖурналаРегистрации("Синхронизация данных. Проведение отчетов",
УровеньЖурналаРегистрации.Ошибка,,,
"Не удалось провести документ " + СокрЛП(Стр.Ссылка) + ": " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
КонецЕсли;
Если в Журнале регистрации отсутствуют записи об ошибках, выясним причину разницы между ручным и программным проведением:
Отчета о розничных продажах требует корректно заполненной табличной части ВидыЗапасов. При открытии документа в интерактивном режиме код формы может автоматически запускать процедуру подбора видов запасов или распределения по организациям. При фоновом обмене форма не открывается, и если табличная часть пуста, документ программно провестись не может.Кассовая смена в базе-приемнике не перешел в статус Закрыта.Для гарантированного устранения проблемы рекомендуется сначала проверить работу фонового задания Отложенное проведение документов в 1С:Управление торговлей, а при использовании нестандартных правил — перенести вызов проведения в обработчик ПослеЗагрузкиДанных.