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