Дублирование документов в обмене РИБ
Обмен РИБ. Узел и Центральная. Ситуация:
1. Документ Рапорт создается в подчиненном узле РИБ с незаполненным реквизитом ссылкой на ОтчетПроизводстваЗаСмену.
2. Далее обменом Рапорт передается в ЦБ. В центральной базе доработанный план обмена. Документ Рапорт загружается и в процедуре ПриПолученииДанныхОтПодчиненного() проверяется, если реквизит ОтчетПроизводстваЗаСмену не заполнен, то создаётся новый и записывается в этот реквизит.
Двусторонний обмен настроен - загрузка/выгрузка на обеих сторонах, каждые 5 мин расписанием.
При обмене во второй операции обмена происходит дублирование документа ОтчетПроизводстваЗаСмену.
Понимаю так, что в ЦБ происходит повторная загрузка необновленных данных (пустая ссылка в реквизите ОтчетПроизводстваЗаСмену).
Как решить вопрос?
Авторегистрация для документа ОтчетПроизводстваЗаСмену в составе плана обмена отключена.
В процедуре ПриПолученииДанныхОтПодчиненного параметр ОтправкаНазад также не установлен для документа Рапорт.
1. Документ Рапорт создается в подчиненном узле РИБ с незаполненным реквизитом ссылкой на ОтчетПроизводстваЗаСмену.
2. Далее обменом Рапорт передается в ЦБ. В центральной базе доработанный план обмена. Документ Рапорт загружается и в процедуре ПриПолученииДанныхОтПодчиненного() проверяется, если реквизит ОтчетПроизводстваЗаСмену не заполнен, то создаётся новый и записывается в этот реквизит.
Двусторонний обмен настроен - загрузка/выгрузка на обеих сторонах, каждые 5 мин расписанием.
При обмене во второй операции обмена происходит дублирование документа ОтчетПроизводстваЗаСмену.
Понимаю так, что в ЦБ происходит повторная загрузка необновленных данных (пустая ссылка в реквизите ОтчетПроизводстваЗаСмену).
Как решить вопрос?
Авторегистрация для документа ОтчетПроизводстваЗаСмену в составе плана обмена отключена.
В процедуре ПриПолученииДанныхОтПодчиненного параметр ОтправкаНазад также не установлен для документа Рапорт.
По теме из базы знаний
- Бонусная система в 1С для УТ 10.3
- Торговля глазами ветврача. Оформление ветеринарно-сопроводительных документов в системе Меркурий (Часть 3)
- Создание ключей реестра документов
- Как сделать обмен данными через универсальный формат быстрее? Реализация многопоточного обмена данными
- Загрузка документов из товароучетного ПО: 1С Розница 2.2/2.3 в 1С Бухгалтерия 3.0 в файловом формате XML
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Обработчик ПриПолученииДанныхОтПодчиненного выполняется перед записью в ИБ, возможно, этот объект уже есть в ЦБ и у него уже заполнен реквизит документ вида ОтчетПроизводстваЗаСмену а у получаемого - нет. Поэтому надо проверить на существование документа Рапорт в ЦБ и использовать ссылку на документ вида ОтчетПроизводстваЗаСмену из имеющегося документа.
(2) Отчет создается в коде при наличии пустой ссылки в Рапорте кодом в модуле плана обмена:
Если ЭлементДанных.ДокументОПС.Пустая() Тогда
ЭлементДанных.Записать(РежимЗаписиДокумента.Запись);
ДокОПС = ЭлементДанных.ЗаполнитьОтчетПроизводстваЗаСменуПоРапорту(ЭлементДанных.Ссылка, ЭлементДанных.ДокументОПС.Ссылка);
ДокОПС.Записать(РежимЗаписиДокумента.Запись);
ЭлементДанных.ДокументОПС = ДокОПС.Ссылка;
ЭлементДанных.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
ЭлементДанных это то, что получается и понятно что там пустая ссылка на ОтчетПроизводстваЗаСмену. Надо проверить на существование самого ЭлементДанных. Например ОбщегоНазначения.СсылкаСуществует(ЭлементДанных.Ссылка) или что-то типа того.
(4) Из справки:
<ЭлементДанных>
При вызове обработчика события данный параметр содержит элемент данных, прочитанный из сообщения обмена данными. Элементами данных могут быть КонстантаМенеджерЗначения.<Имя константы>, объекты базы данных, наборы записей регистров, последовательностей или перерасчетов.
<ЭлементДанных>
При вызове обработчика события данный параметр содержит элемент данных, прочитанный из сообщения обмена данными. Элементами данных могут быть КонстантаМенеджерЗначения.<Имя константы>, объекты базы данных, наборы записей регистров, последовательностей или перерасчетов.
Если вы меняете документ, вы должны его поставить на выгрузку в подчиненный узел. При загрузке из подчиненного должна быть проверка, что объект не был изменен в текущей базе и если был, то не грузить.
Но вообще схема со всех сторон кошмар, бомба и засада. Вариантов того, что может пойти не так огромное количество.
Но вообще схема со всех сторон кошмар, бомба и засада. Вариантов того, что может пойти не так огромное количество.
(8) Ну, а если Авторегистрацию включить для Отчета, то при создании он же по идее должен зарегистрироваться к изменениям?
А также ОтправкаНазад = Истина не очень понимаю, как работает. Если для типа входящих данных Рапорт поставить в коде ОтправкаНазад = Истина, то он выгрузит сразу в этой итерации измененные данные?
А также ОтправкаНазад = Истина не очень понимаю, как работает. Если для типа входящих данных Рапорт поставить в коде ОтправкаНазад = Истина, то он выгрузит сразу в этой итерации измененные данные?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот