Автоматически при синхронизации в базе приемнике подчиненный счет-фактура не помечается на удаление, если из базы источника пришла информация о пометке удаления документа реализация (или приходная накладная).
После поисков в интернет публикациях не нашел похожего решения, и решил сделать свое (может, недостаточно искал).
Поэтому я сделал расширение для конфигурации Бухгалтерия предприятия 3.0 (это база - приемник), в котором перехватил процедуру УстановитьПометкуУдаленияУОбъекта(Объект) из общего модуля ОбменДаннымиXDTOСервер.
Связанные (подчиненные) документы нахожу при помощи критерия отбора КритерийОтбора.СвязанныеДокументы.
Текст перехваченной процедуры:
&После("УстановитьПометкуУдаленияУОбъекта")
Процедура Синхр1_УстановитьПометкуУдаленияУОбъекта(Объект)
Если (ТипЗнч(Объект.Ссылка)=Тип("ДокументСсылка.РеализацияТоваровУслуг")) Или
(ТипЗнч(Объект.Ссылка)=Тип("ДокументСсылка.ПоступлениеТоваровУслуг")) Тогда
Если Объект.ОбменДанными.Загрузка Тогда
Запрос=Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СвязанныеДокументы.Ссылка
|ИЗ
| КритерийОтбора.СвязанныеДокументы(&Ссылка) КАК СвязанныеДокументы";
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если ТипЗнч(Выборка.Ссылка)=Тип("ДокументСсылка.СчетФактураВыданный")
Или ТипЗнч(Выборка.Ссылка)=Тип("ДокументСсылка.СчетФактураПолученный") Тогда
ДокументСчетФактураОбъект=Выборка.Ссылка.ПолучитьОбъект();
Если ДокументСчетФактураОбъект.Проведен Тогда
ДокументСчетФактураОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
КонецЕсли;
ДокументСчетФактураОбъект.ПометкаУдаления=Истина;
ДокументСчетФактураОбъект.Записать();
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Версии конфигураций, используемых при разработке:
- Управление нашей фирмой (УНФ ) - 1.6.27.295
- Бухгалтерия предприятия, редакция 3.0 ( БП ) - 3.0.121.31
Вполне возможно, данная технология будет работать и в других конфигурациях, где есть такой общий модуль и процедура.