Конвертация данных: создание нескольких элементов справочника из одного. #807875


#0 by DenYuliya
Добрый день. Подскажите пожалуйста, "куда копать", может как загуглить свой вопрос, чтобы не так подробно, как ниже??  Наверняка такая задача уже 100 раз разбиралась... Есть конфа - Источник (ТиС, 7.7), и конфа-Приемник (УТ 11) В Источнике есть добавленные реквизиты строкового типа (на вкладке каждого эл-та спр. Контрагенты): Должность отдел продаж; ФИО Должности отдел продаж; Тел. отдел продаж. Должность отдел закупок; ФИО Должности отдел закупок; Тел. отдел закупок и т.д. В итоге в каждом эт-те справочника контр. 5 таких строк (в них разные данные). В УТ 11 есть аналогичный по смыслу спр-к "Контактные лица партнеров", с аналогичными реквизитами (должность, ФИО, тел и т.д). Только вот я не могу понять, как мне сделать, чтобы каждый из наборов реквизитов переносились в новый элемент спр. "Контактные лица партнеров", чтобы "на выходе" на основание одного эл-та "Контрагенты" в ТиС у меня получалось 5 разных эл-тов "Контактные лица партнеров" в КА?
#1 by DenYuliya
Или надо делать 5 разных ПКО, по 1 на каждый "набор"?
#2 by DrShad
нужно в качестве источника данных указывать выборку из запроса
#3 by DenYuliya
В ПКО, или в ПКС?
#4 by Йохохо
РС.Установить("Должность", "Должность отдел закупок");
#5 by Йохохо
запятые не считал
#6 by DrShad
в ПКО естественно
#7 by DenYuliya
Спасибо, погуглю "Выгрузить По правилу"...
#8 by Йохохо
в модуле для 7.7 ктрл+F
#9 by DenYuliya
ага, уже поняла... Я себе представляла это немного по-другому, но проверить не успела... Ссорь за глупые вопросы, когда-нибудь я непременно освою КД и перестану такие задавать.
#10 by DenYuliya
эм...не поняла?
#11 by DrShad
да вы, голубушка, неисправимый оптимист
#12 by DenYuliya
В каком из модулей, в самой конфе, или в КД?
#13 by DenYuliya
:) я буду стараться, чес слово)))!
#14 by DrShad
как говорится, не бывает поздно - бывает уже не нужно дерзайте
#15 by Йохохо
там надо гуглить ВыгрузитьПоПравилу ) готовый красивый пример в ЗИК ЗУП ПКО вроде физические лица все данные, там вызывается алгоритм ПослеВыгрузкиФизЛиц. Можно прямо передрать ну там файлик такой выгружается если поставить галку выгружать текст модуля ляля для 7.7
#16 by DenYuliya
а, да, галку знаю такую, и файлик такой знаю. За пример спасиб большое, скачала - лезу изучать.
#17 by Marik1274
Отправил вам на почту ссылку на курсы по КД 2.0
#18 by DenYuliya
огроменное спасибо!!! вечером скачаю и - все выхи на изучение!
#19 by DenYuliya
День добрый! Подскажите плиз, в случае использования "ВыгрузитьПоправилу" из спр. Контрагенты в спр. КонтактныеЛицаПартнеров, Источник обязательно должен быть пустым? В спр. Контрагенты есть почти все данные, которые надо перенести.
#20 by Ёпрст
нет
#21 by DenYuliya
Читаю: "Описание функции ВыгрузитьПоПравилу. Функция ВыгрузитьПоПравилу используется для выгрузки объекта в xml-узел и возвращает узел ссылки на этот объект. В процессе выгрузки эта функция вызывается из: -ПВД, когда объект из выборки получен и необходимо произвести его конвертацию. -ПКО, когда необходимо выгрузить связанную с выгружаемым объектом информацию."   Смотрю пример в . Там вообще ни одного из этих вариантов... Из обработчика "ПослеВыгрузкиВФайл" ПКО вызывается Алгоритм. А уже из Алгоритма функция ВыгрузитьПоПравилу. Почему это именно так сделано? Для сокращения кол-ва кода в ПКО и упрощения читабельности?
#22 by Ёпрст
да. Применение алгоритмов - уменьшение кода в правилах при выгрузке. Ну и читабельность, правка кода проще.
#23 by DenYuliya
Т.е по-сути используется первый вариант , с выгрузкой в ПВД?
#24 by DenYuliya
А почему в данном случае нельзя сделать ПКО "Контрагенты_КонтактныеЛицаПартнеров", с Источником спр.Контрагенты, Приемником спр. КонтактныеЛицаПартнеров. Для данного ПКО создать ПКС с пустым Источником, прописать заполнение Свойств. Потом из ПКО "Контрагенты_Партнеры", в обработчике "ПослеВыгрузки"  - ВыгрузитьПоПравилу(Источник,,,,"Контрагенты_КонтактныеЛицаПартнеров"); ? Что-то все крайне непонятно с этим "ВыгрузитьПоПравилу"
#25 by Ёпрст
делать можно как угодно. Обычно, делают как-быстрее и как-проще и как-умеют.
#26 by DenYuliya
а зачем в примере сделано тремя ПКО, с одинаковыми Источниками и Приемниками (Сотрудники_Физлица), а не то же самое в одном ПКО?
#27 by Йохохо
из-за сложного поиска т.к. 1 ко многим там, там же поучительный пример как работать с ключом выгружаемых. Одно обеспечивает перенос кадровых, другое корректный поиск из документов и т.д. Всё по ТЗ)
#28 by DenYuliya
жесть...там черт ногу сломит))). А я считала, что один ко многим в контексте КД - это как в "Типовых примерах", один источник - в разные приемники...
#29 by Йохохо
там один ко многим во многих смыслах, кроме справочников еще и элементы. То что в ЗИК один сотр, в ЗУП может стать двумя, но одно физлицо. И требования еще, с одной стороны "кадровые за весь период", с другой "движения и остатки за выбранный"
#30 by DenYuliya
, о, это как раз мой случай, действительно. Из одного Контрагента -> несколько КонтактныхЛицКонтрагента, спасиб.
#31 by DenYuliya
до меня только при повторном прочтение дошло, что в выражение "Все по ТЗ" речь не о ТаблицеЗначений))))
#32 by DenYuliya
можно вас еще спросить? Просто не уверена, верно ли я делаю... Смотрю ваш пример "ЗиК -ЗуП". Заполнение идет из регистров, и в алгоритме "ПослеВыгрузкиФизЛицаВФайл" идет ВыгрузитьПоправилу + ПКО соответствующего регистра, с пустым Источником и Приемником  тип РегистрСведений Т.е на каждый создаваемы СписокЗначений - свое отдельное ПКО. Например: и так далее. ПКО Регистров вызываются в Алгоритме через ВыгрузитьПоПравилу Алгоритм вызывается в ПКО "Физлица", в обработчике "послеВыгрузкиВФайл". Все верно? У меня есть Источник (спр.Контрагенты), есть Приемник(спр.КонтактныеЛица). Никаких регистров, ПКО для которых можно было бы создать, нет. В Источнике есть условно 5 разных "наборов" реквизитов, из которых в Приемнике надо создать 5 разных элементов с одним и тем же "Владельцем" (спр.Ссылка.Контрагент). 1) Я создала алгоритм "ВыгрузитьКонтрагентаВКонтактныеЛица" 2) В ПКО "Контрагенты_КонтактныеЛица" прописала в обработчике "послеВыгрузкиВФайл" вызов этого алгоритма: ВыгрузитьКонтрагентаВКонтактныеЛица; *правильно?* Дальше не совсем понимаю, что делать. вариант1 Мне в алгоритме прописывать к каждому из 5 наборов в ВыгрузитьПоПравилу "ссылку" на мое ПКО "Контрагенты_КонтактныеЛица" (то, из которого я вызываю этот алгоритм), одну и ту же 5 раз? Код в алгоритме такой: вариант2 Создать отдельные ПКО для каждой из 5 "групп", именно для использовать в ВыгрузитьПоПравилу? Тогда будет вызываться не 5 раз "само из себя" ПКО Контрагенты_КонтактныеЛица, а 5 разных ПКО для каждого "набора" свое: 1)ПКО Контрагенты_КонтактныеЛица_Рукль ВыгрузитьПоПравилу(Контрагенты_КонтактныеЛица_Рукль); 2)ПКО Контрагенты_КонтактныеЛица_РукльПродаж ВыгрузитьПоПравилу(Контрагенты_КонтактныеЛица_РукльПродаж); В этом случае код в "алгоритме" будет такой: Если ПустаяСтрока(Источник.ФИОРуководителя) = 0 Тогда     и т.д. еще 3 раза. В правильную ли сторону я вообще "смотрю" и какой из вариантов быстрее и проще, второй, наверное?
#33 by DenYuliya
ссорь за такое количество текста... Мне бы один раз понять, как оно вообще работает...
#34 by igorPetrov
Попробовать книжки почитать или курсы пройти, не вариант?
#35 by DenYuliya
таким оригинальным советом можно вообще на любой вопрос ответить. Ах, да - еще есть гениальный совет "погугли" Не поверите, вот прямо перед собой держу книжку Бояркина, открытую на стр.81. Понимания не очень добавляет.
#36 by igorPetrov
Жаль конечно, курсы попробуйте.
#37 by DenYuliya
А по делу - можете подсказать? Нет - ну увы. Дело добровольное, конечно. Только вот никогда не могла понять прикола, когда человек совет спрашивает, причем не такой уж и общий. А "советчики" начинают - "погугли", "почитай", "позови специалиста" и т.д. Я если не знаю/не хочу подсказывать, просто и не отвечаю (*так и напрашивается "не умничаю"*)... Курсы это хорошо и правильно. Только не быстро. В книге Бояркина рассматривается вариант использования ПВД, а ранее было сказано, что можно как из ПВД вызывать,  так и из алгоритмов. Описания разницы/приоритетности этих методов нигде не нашла. Если вы можете поделиться ссылкой, где бы рассматривался аналогичный вопрос, а не общее описание "ВыгрузитьпоПравиллу - это" - буду благодарна и тут же ознакомлюсь.
#38 by DenYuliya
Хотя насчет почему из алгоритма, вызываемого из ПКО, а не из ПВД, я поняла. из ПВД, когда объект из выборки получен и необходимо произвести его конвертацию. из ПКО, когда необходимо выгрузить связанную с выгружаемым объектом информацию.
#39 by Ёпрст
просто 5 раз выгружай по одному правилу, можешь, в ПослеВыгрузки запихать это.
#40 by Ёпрст
вот, как пример, выгрузка контактной информации всё это в ПКО Клиентосы в ПослеВыгрузки
#41 by Ёпрст
+40 в ПКО КонтактнаяИнформация, источник пусто, на всех полях в свойствах стоит галка - получить из входящих данных. Усё
#42 by DenYuliya
так у меня же разные реквизиты, выходит создаются 5 СЗ, но - в 1 правиле?
#43 by DenYuliya
И я еще один момент не могу понять...У меня в итоге в любом случае должно быть как минимум 2 ПКО, верно? Условно так: 1) ПКО "Контрагенты_КонтактныеЛица", с заполнеными Источником и Приемником, и ВыгрузитьПоПравилу(,,,, "Контакты") в обработчике 2) ПКО "Контакты", с пустым источником и приемником "КонтактныеЛица", собственно вызываемов из п. 1) Не может же ПКО само себя вызывать функцией ВыгрузитьПоПравилу?
#44 by Ёпрст
не особо читал, что тебе там нужно :)
#45 by Ёпрст
можешь и так. Никто тебя не ограничивает созданием ПКО
#46 by Ёпрст
ВыгрузитьПоПравилу - это просто хрень, которая позволяет выгружать связанную информацию из ПКО, или то что нужно из ПВД напимер, в ПКО номенклатура, выгрузить потом все подчиненные единицы измерения, или в ПВД Реализация выгрузить чать реализаций по одноум правилу. а часть по другому. И т.д. Не понимаю, в чем там у тебя сложность
#47 by DenYuliya
, Сложность: Если образно брать структуру Источника (спр.Контрагенты), и Приемника(спр.КонтактЛица) Источник: - ДолжностьРукляРукляПродаж и т.д -  5 одинаковых по своей сути "набора" реквизитов. Приемник: В итоге, из одного Источника => 5 разных приемников. Не могу понять, мне надо делать 5 разных ПКО, для каждого свой СЗ.  Или ПКО - один, и в него все 5 СЗ пихать? Ведь каждый из 5 "наборов" - это разные реквизиты в Источнике.
#48 by DenYuliya
немного не то. В приведенном примере в каждой итерации цикла выгружаются один и тот же состав реквизитов. А у меня - в каждой итерации - свой состав. Если я правильно понимаю принцип.
#49 by Ёпрст
1 пко и в клиентосах 5 раз выгрузить по правилу с разным составом. усё
#50 by DenYuliya
*в клиентосах*)))). Спасибо, щас попробую.
#51 by DenYuliya
*щас в меня тапки полетят* А ПКЗ для основного ПКО Контрагенты_КонтактныеЛица заполнять надо? В них тоже надо прописывать в операторах, или просто добавить с пустым источником?
#52 by DenYuliya
Неа((. Пусто. Ошибок нет, но ничего не выгружается
#53 by user-ok
Источником может быть список значений
#54 by DenYuliya
Структура сейчас такая: ПКО Контрагенты_КонтактныеЛица, в нем Приемник - контакт. лица. Ваш совет насчет СЗ в качестве источника относится к ПКО "Контакты"?
#55 by user-ok
В ПКО Источник - пустой ПКС "Должность" ... и так далее Если справочник подчиненный - не забудь подобным образом передать владельца немного извратно. но рабочее
#56 by DenYuliya
спасибо, сейчас попробую. "В ПКО Источник - пустой" - это в ПКО "Контакты"? (то, которое вызывается), или в в вызываемом, и в обоих? И что делать с ПКС в "основном" ПКО? ("Контрагенты_Контакты") Пустыми их оставлять? Я попробовала вообще не заполнять те, которые есть в созданном СЗ, и добавить только созданные "по умолчанию" - тишина((. Ошибок нет, но и не выгружается ничего.
#57 by DenYuliya
несколько вариантов перепробовала, и во всех в файле данных пусто (не выгружается). 1 вариант: В ПКО Контрагенты_Контакты в ПослеВыгрузкиВФайл вызов Алгоритма ПослеВыгрузкиКонтактныхЛицВФайл; В ПКС "Владелец" в "ПередВыгрузкой" Значение = Источник;
#58 by DenYuliya
вариант2: В каждом из ПКС ПКО "Контакты", в обработчике "ПередВыгрузкой" указано: Значение = Источник.Получить("должностьПоВизитке"); и т.д. - по аналогии. Это я пыталась сделать, как советовал . Тоже пусто.
#59 by Йохохо
незапоминатьвыгруженныезначения и пора уже освоить отладчик
#60 by Ёпрст
(57,58) ВыгрузитьПоПравилу(Источник,                                  Приемник,
#61 by Ёпрст
пихать в Источник СЗ как то не очень, пихай в ВходящиеДанные. и в ПКО КонтактыКонтрагентов поставь галки - получитьИЗ входящих данных у всех свойств, которые ты в СЗ положила. Усё.
#62 by Ёпрст
+ ВыгрузитьПоПравилу вызывай в ПослеВыгрузки
#63 by Ёпрст
ЗЫ: и нет уверенности, что Источник доступен в Алгоритмах просто так. Возможно, нужно его хотя -бы в параметры Алгоритмов пихать явно
#64 by DenYuliya
Может тогда просто не использовать Алгоритмы, а прописывать код прямо в ПослеВыгрузки "как по книжкам"? Попробую так. Пы.сы. галка"не запоминать данные" ничего не изменила.
#65 by Ёпрст
см. (60,61).
#66 by DenYuliya
Вот. Ты прямо мой вопрос опередил! В Типовых правилах через "входящие данные" выгрузка в партнерах, хотела так попробовать
#67 by DenYuliya
(60, 61) опять та же фигня(((. Пусто в файле выгрузки, ошибок в процессе выгрузки нет. Мдя((.
#68 by Ёпрст
ты хоть что выгружаешь то ? ПВД есть от этого пко ?
#69 by Ёпрст
в ПослеВыгрузки заходит ? Отладчиком, не пробовала сымотреть ?
#70 by DenYuliya
нет... *дико краснею* Где-то далеко выше я поднимала вопрос ПВД. Короче я поняла, что если есть вызов ВыгрузитьПоПравилу из ПКО - то ПВД не надо... Создала, с объектом выборки Контрагенты, указала правило Контрагенты_КонтактныеЛица, тип выборки - стандартная. Загружается, не все правильно (ссылка на контрагента не создается), но все же. Я идиотка...Как так можно было????
#71 by Ёпрст
пвд можно не писать, если выгружаешь зависимые объекты как реквизиты по ссылке, например, выгружаешь документы, в которых есть ссылка на Контрагенты.
#72 by Ёпрст
в твоём случае, для проверки правила, нужно было создать ПВД - клиентосы, и выгружать хотя бы одного, смотреть как выгружается-загружается связанная инфа Конт Данные.
#73 by DenYuliya
"Если справочник подчиненный - не забудь подобным образом передать владельца" Владелец ведь передается просто как "Значение = Источник"? В Приемнике реквизит Владелец есть, а в Источнике нет, надо просто ссылку на Источник передавать. И еще такой вопрос. Я так поняла, что в "изначальном" ПКО (например Контрагенты_Контакты) ПКС надо добавлять те, которые не добавлены в СписокЗначений и "вызываемое" ПКО (в моем случае ПКО "Контаркты")? А если я в ПКО "Контакты" (и в СЗ соответственно) добавлю поля Наименование и Владелец, то по каким полям мне осуществлять поиск в "изначальном" ПКО? Так-то надо по "Наименованию" и "Владельцу", но если я еще раз добавлю ПКС "наименование", но с пустым Источником, не приведет ли это к дублям?
#74 by DenYuliya
стыдоба....я поняла. Ну блин, теперь хоть что-то сдвинулось.
#75 by Йохохо
брр "Я так поняла, что в "изначальном" ПКО (например Контрагенты_Контакты) ПКС надо добавлять те, которые не добавлены в СписокЗначений и "вызываемое" ПКО (в моем случае ПКО "Контаркты")?" в ПКО передан источник и входящие, если галка, то входящие, если Значение= то кодом, иначе Источник[]
#76 by DenYuliya
Ой))), объяснила я кошмарно, конечно. если делать как в Грубо говоря, можно ли в ПКС "Контр-Контакты" добавить ПКС из ПКО "Контакты"? Смотрю по примерам в типовых правилах, там везде по-отдельности, часть в одном, часть в другом.
#77 by DenYuliya
это к
#78 by Йохохо
список ПКС это это строки ТЧ, не надо грубо, кушать не могу
#79 by DenYuliya
Я стараюсь понятно спросить... Если я в ПКО "Контакты" добавлю ПКС "Наименование" (не важно, из ВходящихДанных оно будет заполняться там, или из Источника) - могу ли я добавить то же Наименование в ПКС для ПКО Контр_Контакты? Или это приведет к ошибкам?
#80 by Йохохо
ПКС "Наименование" это ПКС, Наименование это строка? слишком простой вопрос, чтобы его понять)
#81 by DenYuliya
Наименование - это строка. Стандартный реквизит Приемника Реквизиты "ФИО Руководителя", "ФИО Руководителя продаж" и т.д. в источнике Логично, как мне кажется, делать поиск по нему.
#82 by Йохохо
кто то слишком мудрит, подозреваю вопрос в избавлении от зацикленности
#83 by DenYuliya
возможно... От дублей и от пустых значений. так грузится сейчас. А должно только 2 и 3 снизу. Потому что у остальных Контрагентов нет Контактных лиц. Я написала в ПКО Конт_Контакты в обработчике ПередВыгрузкрой ....    Но как-то условие игнорится((
#84 by user-ok
>>Владелец ведь передается просто как "Значение = Источник"? в моем примере в источнике СЗ, а никак не Контрагент. Хотя уважаемый Ёпрст правильно подсказал что лучше СЗ запихнуть в ИсходящиеДанные, тогда в Источник можно положить самого контрагента.
#85 by DenYuliya
Ёпрст советовал во ВходящиеДанные пихать. ВходящиеДанные - они по тому же принципу создаются (создание СпискаЗначений в обработчике ПКО Конт_Контакты), только с галочкой "ПолучатьИзВходящихДанных" в ПКО "Контакты"? + в ПКС "Владелец" указываю ПКО "Контрагенты_Партнеры". Только он не передается все равно
#86 by DenYuliya
К   ну и передаются ВходДанные  ВыгрузитьПоПравилу(,,СЗ,,"КонтактыКонтрагентов"); , а не ВыгрузитьПоПравилу(СЗ,,,,"КонтактыКонтрагентов"); Это я про разницу СЗ и ВходДанных.
#87 by Йохохо
нет разницы же, ведь входящие СЗ. Входящие исходящие весело меняются местами иногда
#88 by Йохохо
ИсходящиеДанные - Произвольный - произвольные вспомогательные данные. Данные передаются по следующим правилам:
#89 by Йохохо
не надо так проверять, надо открыть хмл выгруженных данных редактором текстовым (пока маленький любой пойдет, большой отлично но неудобно открывает 1с) и посчитать количество записей где Объект СправочникСсылка.КонтактыКонтрагентов. Потом подумать и мб полезть в отладчик, придет понимание
#90 by DenYuliya
Ну вот((. Вообще какая-то фигня теперь. Те 4 строки, где есть ФИО и Должность - да, все верно и без дублей, и лишнего тоже нет. Только Владелец там не заполнен. А другие 5 строк - в них есть Владельцы (по 1 на каждого Контрагента в базе). Но больше ничего нет))).
#91 by DenYuliya
похоже где-то я неправильно указываю поиск или соответствия. Такое обычно в запросах при неверном указание Связей
#92 by DenYuliya
В общем, такое чувство, как будто ПКО "Контр_Контакты" и "Контакты" отрабатывают независимо друг от друга. Создаются заполненные согласно ПКО "Контакты" элементы, не дублируются и даже лишних нет, и все, что проложено в передаваемый СЗ - загружается. Кроме ссылки на сам объект, который должен конвертироваться во Владельца в Приемнике. И создаются по элементу на каждого существующего в базе контрагента, у которого не заполнено ничего, кроме того самого  Владельца. Это если в ПКО "Контр_Контакты" в ПКС "Владелец" указать Значение = Источник; Что-то меня гложет подозрение, что передавать ссылку "на самого себя" во ВходящиеДанные так - неверно: В ПКО Контр_Контакты В ПКО "Контакты" для ПКС "Владелец" галка "получать из входящих данных"
#93 by DenYuliya
Ну в общем задача решена. Если вдруг кому понадобится, ниже решение: ПКО "Контр_КонтактныеЛица", обработчик "ПослеВыгрузкиВФайл": В ПКО "Контакты" созданы ПКС, Приемник спр.КонтактныеЛица, Источник - пустой. В ПКС для ПКО "Контр_Контакты" Поиск и Галка "получать из вход данных" у "Наименования", больше ПКС нет. В ПКС для ПКО "Контакты" галка поиска нигде не стоит, "получать из вход данных" -тоже. В обработчике "ПередВыгрузкой" каждого из ПКС: Значение = Источник.Получить("Владелец"); (для ПКС Владелец) Значение = Источник.Получить("Наименование"); (для ПКС Наимаенование), и т.д. Для ссылочных данных в моем случае это Автор и Владелец) - в ПКС выбрано ПКО (то, по которому выгружаются эти объекты).
#94 by DenYuliya
, почему-то из обработчика "ПослеВыгрузки", и если передавать СписокЗначений в ВыгрузитьПоПравилу не как Источник, а как ВходящиеДанные - все получалось не корректно...
#95 by DenYuliya
Ребята, еще такой маааленький вопрос... Для заполнения Контактной информации в этой же задаче (в Источнике строковые реквизиты тел- почта для Контактных лиц, в Приемнике - "Контактная информация контактных лиц"), можно ли по аналогии с остальными реквизитами, заполнять КИ? То есть в ПКО Контр_Контакты в СписокЗначений пихать телефон и эл.почту, а потом через то же самое ВыгрузитьПоПравилу пихать в ПКО "Контакты"? Или это надо отдельное Правило, и вызывать/заполнять его из ПКГС "КонтактнаяИнформация"? Хм...может понятнее будет так - можно ли передать значения в КИ, минуя ПКГС, сразу же в ПКС? Блин, не знаю, как спросить понятнее. Типовое решение какое-то мутное, и там нет для "КонтактныхЛицПартнера", а в интернете все разбираемые примеры, которые я нашла - для КИ в регистре сведений
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С