|
КД2 Выгрузка 1 справочника в разные справочники | ☑ | ||
---|---|---|---|---|
0
breezee
10.06.20
✎
09:32
|
Добрый день. Не нашел описания в интернете. Решил поделиться. Если изобретаю велосипед - ну и черт с ним)
По заданию из табличной части документа выгружается справочник в разные справочники в другой базе. При чем в одном документе может быть один и тот же контрагент, который является разными контрагентами в другой базе. Зависит от счета и договора контрагента. Я сделали ПВД документа в котором получаю запросом нужные данные и в обходе результата формирую стрруктуру. Типо вот этого: ИначеЕсли СокрЛП(ВыборкаДетальныеЗаписи.КоррСчет.Код) = "79.1.2" Тогда Значение_Код_контр_в_1С77_ПУ_выгрузка_з_п = ОбщегоНазначения.ПолучитьЗначениеСвойствоОбъекта(ВыборкаДетальныеЗаписи.Подразделение, Код_контр_в_1С77_ПУ_выгрузка_з_п); Значение_СправочникДляВыгрузкиКонтрагентаВ1С77ПУ = "Контрагенты2"; Сообщить("По счету 79.1.2 для контрагента = " + ВыборкаДетальныеЗаписи.Субконто1 + "; СправочникДляВыгрузкиКонтрагентаВ1С77ПУ = " + Значение_СправочникДляВыгрузкиКонтрагентаВ1С77ПУ + "; Код Контрагента в 1С 7 ПУ = " + Значение_Код_контр_в_1С77_ПУ_выгрузка_з_п); НСтрокаТабличнойЧасти.Субконто1 = Новый Структура("Справочник, ПолеПоиска, ЗначениеПоиска", Значение_СправочникДляВыгрузкиКонтрагентаВ1С77ПУ, "КОД", Значение_Код_контр_в_1С77_ПУ_выгрузка_з_п); ИначеЕсли СокрЛП(ВыборкаДетальныеЗаписи.КоррСчет.Код) = "57.1.1" Тогда Потом сделали ПКО, назвал "Контрагенты_ОБЩИЕ" и указал у реквизита табличной части "контрагент" указал это ПОК. В самом ПКО ничего нет, кроме кода перед выгрузкой данных. Код такой: Если ТипЗНЧ(Источник) = Тип("Структура") Тогда //Отказ = Истина; Справочник = Источник.Справочник; ПолеПоиска = Источник.ПолеПоиска; ЗначениеПоиска = Источник.ЗначениеПоиска; Сообщить(Справочник + ";" + ПолеПоиска + ";" + ЗначениеПоиска); Если Источник.Справочник = "Контрагенты2" и Источник.ПолеПоиска = "КОД" Тогда ИмяПКО = "Контрагенты2_КОД_Новые"; ПКО = НайтиПравило(Источник, ИмяПКО); ВыгрузитьПоПравилу(Источник, , , , "Контрагенты2_КОД_Новые"); Сообщить(Справочник + ";" + ПолеПоиска + ";" + ЗначениеПоиска + " выгружаем по правилу Контрагенты2_КОД_Новые"); КонецЕсли; Если Источник.Справочник = "Контрагенты2" и Источник.ПолеПоиска = "ИНН" Тогда ИмяПКО = "Контрагенты2_ИНН_Новые"; ПКО = НайтиПравило(Источник, ИмяПКО); ВыгрузитьПоПравилу(Источник, , , , "Контрагенты2_ИНН_Новые"); Сообщить(Справочник + ";" + ПолеПоиска + ";" + ЗначениеПоиска + " выгружаем по правилу Контрагенты2_ИНН_Новые"); КонецЕсли; Если Источник.Справочник = "КонтрагентыСПКО" и Источник.ПолеПоиска = "КОД" Тогда ИмяПКО = "КонтрагентыСПКО_КОД_Новые"; ПКО = НайтиПравило(Источник, ИмяПКО); ВыгрузитьПоПравилу(Источник, , , , "КонтрагентыСПКО_КОД_Новые"); Сообщить(Справочник + ";" + ПолеПоиска + ";" + ЗначениеПоиска + " выгружаем по правилу КонтрагентыСПКО_КОД_Новые"); КонецЕсли; ИмяПКО - имя правил выгрузки, которые создал. В каждом правиле источник пустой, а приемник - нужный справочник. В реквизитах этих правил пишу код на заполенние реквизита Значение = Источник.ЗначениеПоиска; Как-то так. |
|||
1
Ёпрст
10.06.20
✎
09:35
|
(0) если выгрузка будет по плану обмена..всё это полетит в топку.. ну да ладно
|
|||
2
breezee
10.06.20
✎
09:42
|
(1) Почему? Я запросом буду выбирать просто изменения из плана обмена. Сейчас выбираются запросом документы, которые выбирают юзеры
|
|||
3
fisher
10.06.20
✎
11:20
|
Выносить часть конвертации в ПВД - не очень универсально. Гибнет конвертация по ссылкам.
Все можно сделать на уровне ПКО, где ключевые данные из документов, влияющие на алгоритм конвертации, будут прилетать через ВходящиеДанные |
|||
4
fisher
10.06.20
✎
11:22
|
А ПВД при этом будет самое банальное.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |