|
Конвертация 2 Не пойму как сделать | ☑ | ||
---|---|---|---|---|
0
wuff
14.08.23
✎
15:21
|
Есть готовая конвертация. В ТЧ документа нужно добавить выгрузку поля договор. Договор имеет реквизиты (вообще это документ в источнике): Номер, Дату, Сотрудник. Сотрудника надо конвертировать в контрагента для базы приемника. Так вот, модифицировал я запрос формирования ТЧ для загрузки, получаю там номер, дату и сотрудника. Добавил в конвертации свойств таб. части свое поле договор задаю значение:
ПКС.ПередВыгрузкой Значение = Новый Структура; Значение.Вставить("НомерДоговора", ОбъектКоллекции.НомерДоговораГПХ); Значение.Вставить("ДатаДоговора", ОбъектКоллекции.ДатаДоговораГПХ); Значение.Вставить("Сотрудник", ОбъектКоллекции.СотрудникДоговораГПХ); В ПКО Договоры ПередВыгрузкой делаю чтобы из сотрудника сделать контрагента ДанныеКонтрагента = Новый Структура; ДанныеКонтрагента.Вставить("ВидКонтрагента", "ФизЛицо"); ДанныеКонтрагента.Вставить("ИНН", Источник.Сотрудник.ФизическоеЛицо.ИНН); ДанныеКонтрагента.Вставить("ЮридическоеФизическоеЛицо", Источник.Сотрудник.ФизическоеЛицо); ДанныеКонтрагента.Вставить("Наименование", Источник.Сотрудник.ФизическоеЛицо.Наименование); ДанныеКонтрагента.Вставить("КонтактнаяИнформация", Источник.Сотрудник.ФизическоеЛицо.КонтактнаяИнформация.Выгрузить()); ВходящиеДанные = Новый Структура("Контрагент", ДанныеКонтрагента); ПКС задаю правило для контрагента и ставлю отметку получить из входящих данных. Проблема в том что номер и дата договора выгружаются, а вот поле контрагент ни в какую... Подскажите ЧЯДНТ? Такое ощущение, что правило конвертации контрагента не дергается, а почему не могу понять. |
|||
1
Baiji
14.08.23
✎
16:41
|
ПКО, Перед выгрузкой:
ВходящиеДанные = Новый Структура; Если Источник.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтНаемногоПерсонала Тогда Отказ = Источник.РасшифровкаПлатежа.Количество() = 0; Если НЕ Отказ Тогда ВходящиеДанные.Вставить("Контрагент", Источник.РасшифровкаПлатежа[0].НаемныйПерсонал); ВыгрузитьПоПравилу(Источник.РасшифровкаПлатежа[0].НаемныйПерсонал,,ВходящиеДанные,,"НаемныйПерсонал"); КонецЕсли; ИначеЕсли Источник.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтСотрудника Тогда ВходящиеДанные.Вставить("Контрагент", Источник.Подотчетник); ВыгрузитьПоПравилу(Источник.Подотчетник,,ВходящиеДанные,,"Сотрудники"); ИначеЕсли ЗначениеЗаполнено(Источник.Контрагент) Тогда ВходящиеДанные.Вставить("Контрагент", Источник.Контрагент); ВыгрузитьПоПравилу(Источник.Контрагент,,ВходящиеДанные,,"Контрагенты"); ИначеЕсли ЗначениеЗаполнено(Источник.Подотчетник) Тогда ВходящиеДанные.Вставить("Контрагент", Источник.Подотчетник); ВыгрузитьПоПравилу(Источник.Подотчетник,,ВходящиеДанные,,"Сотрудники"); Иначе Отказ = Истина; КонецЕсли; |
|||
2
Baiji
14.08.23
✎
16:42
|
ВыгрузитьПоПравилу не хватает
|
|||
3
Baiji
14.08.23
✎
19:35
|
ПКО "Источник:Сотрудник > Приемник:Контрагент" есть?
|
|||
4
wuff
14.08.23
✎
20:11
|
(3) Да.
|
|||
5
Baiji
14.08.23
✎
22:24
|
(4) Тогда не нужны все эти структуры. Выше, я выдернул рабочий код.
Договор выгружаются в Договор? Как-то так, в в ПКО Договор, перед выгрузкой: ВходящиеДанные.Вставить("Контрагент", Источник.Сотрудник); ВыгрузитьПоПравилу(Источник.Сотрудник,,ВходящиеДанные,,"ПКО_СотрудникКонтрагент"); https://disk.yandex.ru/i/aXN1vhn0WeI4EQ |
|||
6
Baiji
14.08.23
✎
22:27
|
А все связи реквизитов прописываем в ПКО_СотрудникКонтрагент
Для сложных реквизитов, в ПКС Перед Выгрузкой: Значение = <произвольный алгоритм> |
|||
7
Baiji
14.08.23
✎
22:28
|
Ну и т.к. ТЧ, то все это в цикле по строкам ТЧ
|
|||
8
Baiji
14.08.23
✎
22:32
|
Хотя, сотрудник в договоре, наверное не в ТЧ. Тогда как я и написал.
|
|||
9
wuff
15.08.23
✎
09:27
|
(5) Не, проблема в том что источник (договор) у меня это структура. Не ссылочный тип, потому он дальше свойств отмеченных для поиска и не выгружает...
|
|||
10
wuff
15.08.23
✎
10:31
|
ВыгрузитьПоПравилу выгружает контрагента, просто как элемент справочника, и там все ок. Но, в поле договор не подхватывает его. Т.е. в результате в табличной части в поле контрагент есть только значения для поиска (ИНН, Вид контрагента).
|
|||
11
Лирик
15.08.23
✎
16:42
|
Что то вы несусветное нагородили, батенька. Все проще.
Из (0) не очень понятно куда нужно передать договор, но предположим: Есть документ источник с реквизитами "ХозяйственнаяОперация, Контрагент, Подотчетник" и ТЧ "РасшифровкаПлатежа" с реквизитами ТЧ "НомерГПХ, ДатаГПХ" Есть документ приемник в котором есть ТЧ "РасшифровкаПлатежа" у которой есть реквизит "Договор" 1) В группе ПКС "РасшифровкаПлатежа" добавляем новую строку где приемник - реквизит "Договор". 2) "Перед выгрузкой" этой строки пишем: СтруктураДоговора = Новый Структура; СтруктураДоговора .Вставить("Номер", ОбъектКоллекции.НомерГПХ"); СтруктураДоговора .Вставить("Дата", ОбъектКоллекции.ДатаГПХ"); // Заполняем другие реквизиты которые будут присутствовать в ПКО "Договоры" Если Источник.ХозяйственнаяОперация = ... Тогда СтруктураДоговора .Вставить("Контрагент", Источник.Контрагент"); ИначеЕсли Источник.ХозяйственнаяОперация = ... Тогда СтруктураДоговора .Вставить("Контрагент", Источник.Подотчетник"); ....... Иначе Отказ = Истина; // КонецЕсли; Значение = СтруктураДоговора; 3) Создаем ПКО "ДоговорыБезИсточника" где источник пустой, а приемник справочникссылка.Договоры. Состав свойств должен совпадать со свойствами СтруктураДоговора из 2) У этого ПКО ставим свойство "Не запоминать выгруженные" У ПКС реквизита "Контрагент" оставляем пустым "Правило конвертации" а в обработчике "Перед выгрузкой" пишем примерно следующее: Если ТипЗнч(Источник.Контрагент) = Тип("СправочникСсылка.Контрагенты") Тогда ИмяПКО = "Контрагенты"; ИначеЕсли ТипЗнч(Источник.Контрагент) = Тип("СправочникСсылка.Сотрудники") Тогда ИмяПКО = "Сотрудники_В_Контрагенты"; ..... КонецЕсли; 4) Создаем Нужные ПКО для конвертации других типов в контрагенты ("Сотрудники_В_Контрагенты"). Ну и контрагенты в контрагенты уже должен быть. 5) В ПКС объекта коллекции "Договоры" группы свойств "РасшифровкаПлатежа" 1) назначаем правило конвертации "ДоговорыБезИсточника". |
|||
12
Лирик
15.08.23
✎
16:45
|
* // Заполняем другие реквизиты которые будут присутствовать в ПКО "ДоговорыБезИсточника"
|
|||
13
wuff
15.08.23
✎
21:25
|
(11) У меня единственная проблема: в вашем п. 3. не дергается правило выгрузки "Контрагенты". В отладчике я выяснил, что когда передаешь структуру (из П. 2) то выгружаются только свойства отмеченный для поиска, у меня это номер и дата, они выгружаются. Может конечно я что-то делаю не так, не спорю... Только у меня в п. 3, как раз, поле "Правило конвертации" не пустое, а выбрано конкретное.
|
|||
14
Лирик
17.08.23
✎
09:51
|
(13) Вот и сравните состав ключей и ТИПЫ значений структуры которую вы передаете в качестве источника для ПКО с составом и ТИПОМ полей источника в ПКО. Вы же не написали по какому ПКО вы конвертируете контрагента из структуры. Если вы сделаете как в (11) у вас все заработает, поверьте. Можете обратиться лично в почту (у меня открыта) свяжемся - помогу.
|
|||
15
wuff
17.08.23
✎
10:11
|
(14) Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |