При переносе данных УТ 10.3 БП 3.0 периодически задваивается договор

1. Tciban 26.12.22 08:28 Сейчас в теме
Уважаемые коллеги! Есть УТ 10.3 (несколько переписанная) и есть Бухгалтерия 3.0, как водиться нетронутая, исправно обновляемая и все такое. И есть обмен между ними, точнее выгрузка документов из УТ в Бух, сделан по правилам конвертации 2.0
В чем загвоздка? В УТ есть разные у контрагентов договоры, всякое там, а бухгалтерии нужно что бы все операции контрагента проходили по одному, основному, договору и все. Без всяких изысков. Ну т.е. при переносе документа если у контрагента нет еще договора (новый к примеру) - переносим и делаем основным, если же уже есть у контрагента договор основной - то его везде и ставим в переносимый документ. Хорошо, сделал я в правилах общий алгоритм и вызываю его для каждого объекта в обработчике соббытий "После загрузки".
Вот он, этот алгоритм:

Если Объект.Метаданные().Реквизиты.Найти("Контрагент") <> Неопределено И Объект.Метаданные().Реквизиты.Найти("ДоговорКонтрагента") <> Неопределено Тогда
	Если ЗначениеЗаполнено(Объект.Контрагент) И ТипЗнч(Объект.Контрагент) = Тип("СправочникСсылка.Контрагенты") Тогда
		ОсновнойДоговор = РегистрыСведений.ОсновныеДоговорыКонтрагента.Получить(Новый Структура("Организация, Контрагент, ВидДоговора", Объект.Организация, Объект.Контрагент, Объект.ДоговорКонтрагента.ВидДоговора)).Договор;

		Если ЗначениеЗаполнено(ОсновнойДоговор) Тогда
			Объект.ДоговорКонтрагента = ОсновнойДоговор;
		Иначе
			МЗ = РегистрыСведений.ОсновныеДоговорыКонтрагента.СоздатьМенеджерЗаписи();
			МЗ.Организация = Объект.Организация;
			МЗ.Контрагент  = Объект.Контрагент;
			МЗ.ВидДоговора  = Объект.ДоговорКонтрагента.ВидДоговора;
			МЗ.Договор  = Объект.ДоговорКонтрагента;
			МЗ.Записать();
			
			ОсновнойДоговор = Объект.ДоговорКонтрагента;
		КонецЕсли;

		ЕстьТЧ = Объект.Метаданные().ТабличныеЧасти.Найти("РасшифровкаПлатежа") <> Неопределено;

		//надо установить договор
		Если ЕстьТЧ Тогда
			Для Каждого Стр Из Объект.РасшифровкаПлатежа Цикл
				Стр.ДоговорКонтрагента = ОсновнойДоговор;
			КонецЦикла;
		КонецЕсли;
	КонецЕсли;
КонецЕсли;
Показать

И все бы хорошо, и вроде работает. Но иногда при переносе вдруг как замениться у какого нибудь контрагента основной договор на новый или того хуже - сделается 2 совершенно одинаковых договора и все разъезжается :( И не пойму что делать и как отловить где у меня ошибка! Подскажите, уважаемые коллеги и своего опыта - где копать, или как сделать иначе? А то опыта (уж так сложилось) у меня работы с правилами маловато, как то раньше без этого обходился.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Torin 754 26.12.22 08:31 Сейчас в теме
(1) Отключить в БП расчеты "Учет по договорам"
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот