Конвертация, как передать сведения из другого объекта
Конвертация ТиС - БП
В БП у договора есть вид.
В Тис у договора вида нет, там все договоры на одно лицо, что с покупателем, что с поставщиком.
Мне надо вид в договор правильно поставить.
Договоры сами по себе не выгружаются, только по ссылкам из документов.
Получается, что при выгрузке я могу поставить вид договора только по объекту, из которого договор выгружается по ссылке - это реализация или поступление.
Так вот а как передать в договор знание о том, из какого объекта этот договор пришел по ссылке?
Или это как-то по-другому делается?
В БП у договора есть вид.
В Тис у договора вида нет, там все договоры на одно лицо, что с покупателем, что с поставщиком.
Мне надо вид в договор правильно поставить.
Договоры сами по себе не выгружаются, только по ссылкам из документов.
Получается, что при выгрузке я могу поставить вид договора только по объекту, из которого договор выгружается по ссылке - это реализация или поступление.
Так вот а как передать в договор знание о том, из какого объекта этот договор пришел по ссылке?
Или это как-то по-другому делается?
По теме из базы знаний
- Функция ВыгрузитьПоПравилу - мощный инструмент расширения возможностей ваших правил конвертации. Конвертация данных 2.1
- Сравнение произвольных данных баз (и РИБ, по правилам конвертаций) по контрольным суммам выбранных реквизитов, работающих на платформе 8.3
- EnterpriseData – часть 3. Загрузка данных, идентификация объектов
- Заметки по Конвертации данных 2.1
- Что нам стоит обмен настроить, или Как кролик спас «зоопарк»
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Отвечаю сам себе :)
может кому пригодится, нашел методику в какой-то готовой конвертации. Идея в том, что в 7.7 ищется документ, где этот договор, и в зависимости от вида документа делается вывод о виде договора. Интересно, что передача сведений из объекта - владельца не происходит, она вообще, невозможна, что ли.
Итак код обработчика ПередВыгрузкой договора
может кому пригодится, нашел методику в какой-то готовой конвертации. Идея в том, что в 7.7 ищется документ, где этот договор, и в зависимости от вида документа делается вывод о виде договора. Интересно, что передача сведений из объекта - владельца не происходит, она вообще, невозможна, что ли.
Итак код обработчика ПередВыгрузкой договора
ДатаНач = ?(ПустоеЗначение(ДатаНачала) = 0, ДатаНачала, Дата(0000, 1, 1));
ДатаКон = ?(ПустоеЗначение(ДатаОкончания) = 0, ?(ДатаОкончания > ПолучитьДатуТА(), ПолучитьДатуТА(), ДатаОкончания), ПолучитьДатуТА());
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Договоры)
|Период с ДатаНач по ДатаКон;
|Договор = Регистр.Поставщики.Договор, Регистр.Покупатели.Договор;
|ЮрЛицо = Регистр.Поставщики.Фирма.ЮрЛицо, Регистр.Покупатели.Фирма.ЮрЛицо;
|КредДокумент = Регистр.Поставщики.КредДокумент, Регистр.Покупатели.КредДокумент;
|СуммаУпр = Регистр.Покупатели.СуммаУпр, Регистр.Поставщики.СуммаУпр;
|Функция СуммаУпрПриход = Приход(СуммаУпр);
|Функция СуммаУпрРасход = Расход(СуммаУпр);
|Группировка ЮрЛицо;
|Группировка КредДокумент упорядочить по СуммаУпрПриход, СуммаУпрРасход, КредДокумент.ДатаДок, КредДокумент.НомерДок;
|Условие (Договор = Источник);
|"//}}ЗАПРОС
;
ВидДоговора = "Прочее";
Валюта = Источник.ВалютаВзаиморасчетов;
Если Запрос.Выполнить(ТекстЗапроса) <> 0 Тогда
РезультатЗапроса = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(РезультатЗапроса);
Если РезультатЗапроса.КоличествоСтрок() > 0 Тогда
РезультатЗапроса.ПолучитьСтрокуПоНомеру(РезультатЗапроса.КоличествоСтрок());
КредДокумент = РезультатЗапроса.КредДокумент;
Если КредДокумент.Вид() = "АвансовыйОтчет" Тогда
ВидДоговора = "СПоставщиком";
ИначеЕсли КредДокумент.Вид() = "ВозвратПоставщику" Тогда
Если КредДокумент.КодОперации = Перечисление.КодыОпераций.ВозвратКомитенту Тогда
ВидДоговора = "СКомитентом";
Иначе
ВидДоговора = "СПоставщиком";
КонецЕсли;
ИначеЕсли КредДокумент.Вид() = "ВозвратОтПокупателя" Тогда
Если КредДокумент.КодОперации = Перечисление.КодыОпераций.ВозвратОтРеализатора Тогда
ВидДоговора = "СКомиссионером";
Иначе
ВидДоговора = "СПокупателем";
КонецЕсли;
ИначеЕсли КредДокумент.Вид() = "Доверенность" Тогда
ВидДоговора = "СПоставщиком";
ИначеЕсли КредДокумент.Вид() = "ЗаказПоставщику" Тогда
ВидДоговора = "СПоставщиком";
ИначеЕсли КредДокумент.Вид() = "ИнвентаризацияКомиссионера" Тогда
ВидДоговора = "СКомиссионером";
ИначеЕсли КредДокумент.Вид() = "ОтчетКомиссионера" Тогда
ВидДоговора = "СКомиссионером";
ИначеЕсли КредДокумент.Вид() = "ОтчетКомитенту" Тогда
ВидДоговора = "СКомитентом";
ИначеЕсли КредДокумент.Вид() = "ПереоценкаУКомиссионера" Тогда
ВидДоговора = "СКомиссионером";
ИначеЕсли КредДокумент.Вид() = "ПлатежноеПоручение" Тогда
ВидДоговора = "СПоставщиком";
ИначеЕсли КредДокумент.Вид() = "ПоступлениеДопРасходы" Тогда
ВидДоговора = "СПоставщиком";
ИначеЕсли КредДокумент.Вид() = "ПоступлениеТМЦ" Тогда
Если (КредДокумент.КодОперации = Перечисление.КодыОпераций.ПриемНаРеализацию)
Или (КредДокумент.КодОперации = Перечисление.КодыОпераций.ПриемНаРеализациюРозница) Тогда
ВидДоговора = "СКомитентом";
Иначе
ВидДоговора = "СПоставщиком";
КонецЕсли;
ИначеЕсли КредДокумент.Вид() = "Реализация" Тогда
Если КредДокумент.КодОперации = Перечисление.КодыОпераций.ПередачаНаРеализацию Тогда
ВидДоговора = "СКомиссионером";
Иначе
ВидДоговора = "СПокупателем";
КонецЕсли;
ИначеЕсли КредДокумент.Вид() = "РКО" Тогда
Если (КредДокумент.КодОперации = Перечисление.КодыОпераций.ВозвратОплатыПокупателю)
Или (КредДокумент.КодОперации = Перечисление.КодыОпераций.ВозвратОплатыПокупателюВал) Тогда
ВидДоговора = "СПокупателем";
Иначе
ВидДоговора = "СПоставщиком";
КонецЕсли;
ИначеЕсли КредДокумент.Вид() = "ПКО" Тогда
Если (КредДокумент.КодОперации = Перечисление.КодыОпераций.ВозвратОплатыОтПоставщика)
Или (КредДокумент.КодОперации = Перечисление.КодыОпераций.ВозвратОплатыОтПоставщикаВал) Тогда
ВидДоговора = "СПоставщиком";
Иначе
ВидДоговора = "СПокупателем";
КонецЕсли;
ИначеЕсли КредДокумент.Вид() = "СтрокаВыпискиРасход" Тогда
Если (КредДокумент.КодОперации = Перечисление.КодыОпераций.ВозвратОплатыПокупателю)
Или (КредДокумент.КодОперации = Перечисление.КодыОпераций.ВозвратОплатыПокупателюВал) Тогда
ВидДоговора = "СПокупателем";
Иначе
ВидДоговора = "СПоставщиком";
КонецЕсли;
ИначеЕсли КредДокумент.Вид() = "СтрокаВыпискиПриход" Тогда
Если (КредДокумент.КодОперации = Перечисление.КодыОпераций.ВозвратОплатыОтПоставщика)
Или (КредДокумент.КодОперации = Перечисление.КодыОпераций.ВозвратОплатыОтПоставщикаВал) Тогда
ВидДоговора = "СПоставщиком";
Иначе
ВидДоговора = "СПокупателем";
КонецЕсли;
Иначе
ВидДоговора = "СПокупателем";
КонецЕсли;
КонецЕсли; // Если РезультатЗапроса.КоличествоСтрок() > 0 Тогда
КонецЕсли; // Если Запрос.Выполнить(ТекстЗапроса) <> 0 Тогда
ВходящиеДанные = СоздатьОбъект("СписокЗначений");
//ВходящиеДанные.ДобавитьЗначение(Организация,"Организация");
ВходящиеДанные.ДобавитьЗначение(ВидДоговора, "ВидДоговора");
//ВходящиеДанные.ДобавитьЗначение(Валюта, "Валюта");
Если ПустоеЗначение(ВидДоговора) = 0 Тогда
КлючВыгружаемыхДанных = КлючВыгружаемыхДанных + ВидДоговора;
КонецЕсли;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот