|
Конвертация данных: создание нескольких элементов справочника из одного. | ☑ | ||
---|---|---|---|---|
0
DenYuliya
03.11.17
✎
13:42
|
Добрый день.
Подскажите пожалуйста, "куда копать", может как загуглить свой вопрос, чтобы не так подробно, как ниже?? Наверняка такая задача уже 100 раз разбиралась... Есть конфа - Источник (ТиС, 7.7), и конфа-Приемник (УТ 11) В Источнике есть добавленные реквизиты строкового типа (на вкладке каждого эл-та спр. Контрагенты): Должность отдел продаж; ФИО Должности отдел продаж; Тел. отдел продаж. Должность отдел закупок; ФИО Должности отдел закупок; Тел. отдел закупок и т.д. В итоге в каждом эт-те справочника контр. 5 таких строк (в них разные данные). В УТ 11 есть аналогичный по смыслу спр-к "Контактные лица партнеров", с аналогичными реквизитами (должность, ФИО, тел и т.д). Только вот я не могу понять, как мне сделать, чтобы каждый из наборов реквизитов переносились в новый элемент спр. "Контактные лица партнеров", чтобы "на выходе" на основание одного эл-та "Контрагенты" в ТиС у меня получалось 5 разных эл-тов "Контактные лица партнеров" в КА? |
|||
1
DenYuliya
03.11.17
✎
13:45
|
Или надо делать 5 разных ПКО, по 1 на каждый "набор"?
|
|||
2
DrShad
03.11.17
✎
13:49
|
нужно в качестве источника данных указывать выборку из запроса
|
|||
3
DenYuliya
03.11.17
✎
13:50
|
В ПКО, или в ПКС?
|
|||
4
Йохохо
03.11.17
✎
13:50
|
РС = СоздатьОбъект("СписокЗначений");
РС.Установить("Должность", "Должность отдел продаж"); ВыгрузитьПоПравилу(РС,,,,"Контакты"); РС.Установить("Должность", "Должность отдел закупок"); ВыгрузитьПоПравилу(РС,,,,"Контакты"); |
|||
5
Йохохо
03.11.17
✎
13:51
|
запятые не считал
|
|||
6
DrShad
03.11.17
✎
13:52
|
в ПКО естественно
|
|||
7
DenYuliya
03.11.17
✎
13:52
|
Спасибо, погуглю "Выгрузить По правилу"...
|
|||
8
Йохохо
03.11.17
✎
13:53
|
(7) в модуле для 7.7 ктрл+F
|
|||
9
DenYuliya
03.11.17
✎
13:54
|
(6) ага, уже поняла... Я себе представляла это немного по-другому, но проверить не успела...
Ссорь за глупые вопросы, когда-нибудь я непременно освою КД и перестану такие задавать. |
|||
10
DenYuliya
03.11.17
✎
13:54
|
(8) эм...не поняла?
|
|||
11
DrShad
03.11.17
✎
13:56
|
(9) да вы, голубушка, неисправимый оптимист
|
|||
12
DenYuliya
03.11.17
✎
13:56
|
В каком из модулей, в самой конфе, или в КД?
|
|||
13
DenYuliya
03.11.17
✎
13:56
|
(11):) я буду стараться, чес слово)))!
|
|||
14
DrShad
03.11.17
✎
13:57
|
(13) как говорится, не бывает поздно - бывает уже не нужно
дерзайте |
|||
15
Йохохо
03.11.17
✎
14:00
|
(10) там надо гуглить ВыгрузитьПоПравилу )
https://cloud.mail.ru/public/HdFA/9JXST9ruy готовый красивый пример в ЗИК ЗУП ПКО вроде физические лица все данные, там вызывается алгоритм ПослеВыгрузкиФизЛиц. Можно прямо передрать (12) ну там файлик такой выгружается если поставить галку выгружать текст модуля ляля для 7.7 |
|||
16
DenYuliya
03.11.17
✎
14:03
|
(15) а, да, галку знаю такую, и файлик такой знаю.
За пример спасиб большое, скачала - лезу изучать. |
|||
17
Marik1274
03.11.17
✎
14:27
|
Отправил вам на почту ссылку на курсы по КД 2.0
Удачи ) |
|||
18
DenYuliya
03.11.17
✎
15:22
|
(17) огроменное спасибо!!! вечером скачаю и - все выхи на изучение!
|
|||
19
DenYuliya
16.11.17
✎
11:37
|
День добрый! Подскажите плиз, в случае использования "ВыгрузитьПоправилу" из спр. Контрагенты в спр. КонтактныеЛицаПартнеров, Источник обязательно должен быть пустым?
В спр. Контрагенты есть почти все данные, которые надо перенести. |
|||
20
Ёпрст
16.11.17
✎
11:41
|
(19) нет
|
|||
21
DenYuliya
16.11.17
✎
12:27
|
Читаю:
"Описание функции ВыгрузитьПоПравилу(). Функция ВыгрузитьПоПравилу() используется для выгрузки объекта в xml-узел и возвращает узел ссылки на этот объект. В процессе выгрузки эта функция вызывается из: -ПВД, когда объект из выборки получен и необходимо произвести его конвертацию. -ПКО, когда необходимо выгрузить связанную с выгружаемым объектом информацию." http://catalog.mista.ru/public/402469/ Смотрю пример в (15). Там вообще ни одного из этих вариантов... Из обработчика "ПослеВыгрузкиВФайл" ПКО вызывается Алгоритм. А уже из Алгоритма функция ВыгрузитьПоПравилу(). Почему это именно так сделано? Для сокращения кол-ва кода в ПКО и упрощения читабельности? |
|||
22
Ёпрст
16.11.17
✎
12:31
|
(21) да.
Применение алгоритмов - уменьшение кода в правилах при выгрузке. Ну и читабельность, правка кода проще. |
|||
23
DenYuliya
16.11.17
✎
12:34
|
(22) Т.е по-сути используется первый вариант (21), с выгрузкой в ПВД?
|
|||
24
DenYuliya
16.11.17
✎
12:35
|
А почему в данном случае нельзя сделать ПКО "Контрагенты_КонтактныеЛицаПартнеров", с Источником спр.Контрагенты, Приемником спр. КонтактныеЛицаПартнеров.
Для данного ПКО создать ПКС с пустым Источником, прописать заполнение Свойств. Потом из ПКО "Контрагенты_Партнеры", в обработчике "ПослеВыгрузки" - ВыгрузитьПоПравилу(Источник,,,,"Контрагенты_КонтактныеЛицаПартнеров"); ? Что-то все крайне непонятно с этим "ВыгрузитьПоПравилу" |
|||
25
Ёпрст
16.11.17
✎
13:06
|
(24) делать можно как угодно. Обычно, делают как-быстрее и как-проще и как-умеют.
|
|||
26
DenYuliya
16.11.17
✎
13:33
|
(15) а зачем в примере сделано тремя ПКО, с одинаковыми Источниками и Приемниками (Сотрудники_Физлица), а не то же самое в одном ПКО?
|
|||
27
Йохохо
16.11.17
✎
13:38
|
(26) из-за сложного поиска т.к. 1 ко многим там, там же поучительный пример как работать с ключом выгружаемых. Одно обеспечивает перенос кадровых, другое корректный поиск из документов и т.д. Всё по ТЗ)
|
|||
28
DenYuliya
16.11.17
✎
14:17
|
(27) жесть...там черт ногу сломит))).
А я считала, что один ко многим в контексте КД - это как в "Типовых примерах", один источник - в разные приемники... |
|||
29
Йохохо
16.11.17
✎
14:37
|
(28) там один ко многим во многих смыслах, кроме справочников еще и элементы. То что в ЗИК один сотр, в ЗУП может стать двумя, но одно физлицо. И требования еще, с одной стороны "кадровые за весь период", с другой "движения и остатки за выбранный"
|
|||
30
DenYuliya
16.11.17
✎
15:12
|
(29), о, это как раз мой случай, действительно. Из одного Контрагента -> несколько КонтактныхЛицКонтрагента, спасиб.
|
|||
31
DenYuliya
16.11.17
✎
15:50
|
(27) до меня только при повторном прочтение дошло, что в выражение "Все по ТЗ" речь не о ТаблицеЗначений))))
|
|||
32
DenYuliya
17.11.17
✎
12:14
|
(29) можно вас еще спросить?
Просто не уверена, верно ли я делаю... Смотрю ваш пример "ЗиК -ЗуП". Заполнение идет из регистров, и в алгоритме "ПослеВыгрузкиФизЛицаВФайл" идет ВыгрузитьПоправилу() + ПКО соответствующего регистра, с пустым Источником и Приемником тип РегистрСведений Т.е на каждый создаваемы СписокЗначений - свое отдельное ПКО. Например: ФИОФизлица = = СоздатьОбъект("СписокЗначений"); ///заполненине СЗ ВыгрузитьПоПравилу(ФИОФизлица, , , , "ФИОФизЛиц"); ПаспортныеДанные = СоздатьОбъект("СписокЗначений"); ////заполнение ВыгрузитьПоПравилу(ПаспортныеДанные, , , , "ПаспортныеДанныеФизЛиц"); и так далее. ПКО Регистров вызываются в Алгоритме через ВыгрузитьПоПравилу() Алгоритм вызывается в ПКО "Физлица", в обработчике "послеВыгрузкиВФайл". Все верно? У меня есть Источник (спр.Контрагенты), есть Приемник(спр.КонтактныеЛица). Никаких регистров, ПКО для которых можно было бы создать, нет. В Источнике есть условно 5 разных "наборов" реквизитов, из которых в Приемнике надо создать 5 разных элементов с одним и тем же "Владельцем" (спр.Ссылка.Контрагент). 1) Я создала алгоритм "ВыгрузитьКонтрагентаВКонтактныеЛица" 2) В ПКО "Контрагенты_КонтактныеЛица" прописала в обработчике "послеВыгрузкиВФайл" вызов этого алгоритма: ВыгрузитьКонтрагентаВКонтактныеЛица(); *правильно?* Дальше не совсем понимаю, что делать. вариант1 Мне в алгоритме прописывать к каждому из 5 наборов в ВыгрузитьПоПравилу() "ссылку" на мое ПКО "Контрагенты_КонтактныеЛица" (то, из которого я вызываю этот алгоритм), одну и ту же 5 раз? Код в алгоритме такой: Если ПустаяСтрока(Источник.ФИОРуководителя) = 0 Тогда Руководитель = СоздатьОбъект("СписокЗначений"); Руководитель.Установить("Наименование",Источник.ФИОРуководителя); Руководитель.Установить("ДолжностьПоВизитке",Источник.ДолжностьРуководителя); Руководитель.Установить("ДатаРождения",Источник.ДатаРуководителя); Руководитель.Установить("ЭлПочта",Источник.ПочтаРуководителя); Руководитель.Установить("Телефон", Источник.Телефон1); ВыгрузитьПоПравилу(Руководитель,,,,"Контрагенты_КонтактныеЛица"); КонецЕсли; Если ПустаяСтрока(Источник.ФИОРукПродаж) = 0 Тогда РукПродаж = СоздатьОбъект("СписокЗначений"); РукПродаж.Установить("Наименование",Источник.ФИОРукПродаж); РукПродаж.Установить("ДолжностьПоВизитке",Источник.ДолжностьРукПродаж); РукПродаж.Установить("ДатаРождения",Источник.ДатаРукПродаж); Руководитель.Установить("ЭлПочта",Источник.ПочтаРукПродаж); Руководитель.Установить("Телефон", Источник.Телефон2); ВыгрузитьПоПравилу(РукПродаж,,,,"Контрагенты_КонтактныеЛица "); КонецЕсли; вариант2 Создать отдельные ПКО для каждой из 5 "групп", именно для использовать в ВыгрузитьПоПравилу()? Тогда будет вызываться не 5 раз "само из себя" ПКО Контрагенты_КонтактныеЛица, а 5 разных ПКО для каждого "набора" свое: 1)ПКО Контрагенты_КонтактныеЛица_Рукль ВыгрузитьПоПравилу(Контрагенты_КонтактныеЛица_Рукль); 2)ПКО Контрагенты_КонтактныеЛица_РукльПродаж ВыгрузитьПоПравилу(Контрагенты_КонтактныеЛица_РукльПродаж); В этом случае код в "алгоритме" будет такой: Если ПустаяСтрока(Источник.ФИОРуководителя) = 0 Тогда Руководитель = СоздатьОбъект("СписокЗначений"); Руководитель.Установить("Наименование",Источник.ФИОРуководителя); Руководитель.Установить("ДолжностьПоВизитке",Источник.ДолжностьРуководителя); Руководитель.Установить("ДатаРождения",Источник.ДатаРуководителя); Руководитель.Установить("ЭлПочта",Источник.ПочтаРуководителя); Руководитель.Установить("Телефон", Источник.Телефон1); ВыгрузитьПоПравилу(Руководитель,,,,"Контрагенты_КонтактныеЛицаРукль"); КонецЕсли; Если ПустаяСтрока(Источник.ФИОРукПродаж) = 0 Тогда РукПродаж = СоздатьОбъект("СписокЗначений"); РукПродаж.Установить("Наименование",Источник.ФИОРукПродаж); РукПродаж.Установить("ДолжностьПоВизитке",Источник.ДолжностьРукПродаж); РукПродаж.Установить("ДатаРождения",Источник.ДатаРукПродаж); Руководитель.Установить("ЭлПочта",Источник.ПочтаРукПродаж); Руководитель.Установить("Телефон", Источник.Телефон2); ВыгрузитьПоПравилу(РукПродаж,,,,"Контрагенты_КонтактныеЛица Рукльпродаж"); КонецЕсли; и т.д. еще 3 раза. В правильную ли сторону я вообще "смотрю" и какой из вариантов быстрее и проще, второй, наверное? |
|||
33
DenYuliya
17.11.17
✎
12:22
|
ссорь за такое количество текста... Мне бы один раз понять, как оно вообще работает...
|
|||
34
igorPetrov
17.11.17
✎
12:23
|
(33) Попробовать книжки почитать или курсы пройти, не вариант?
|
|||
35
DenYuliya
17.11.17
✎
12:35
|
(34) таким оригинальным советом можно вообще на любой вопрос ответить. Ах, да - еще есть гениальный совет "погугли" Не поверите, вот прямо перед собой держу книжку Бояркина, открытую на стр.81.
Понимания не очень добавляет. |
|||
36
igorPetrov
17.11.17
✎
12:51
|
(35) Жаль конечно, курсы попробуйте.
|
|||
37
DenYuliya
17.11.17
✎
13:00
|
(36) А по делу - можете подсказать?
Нет - ну увы. Дело добровольное, конечно. Только вот никогда не могла понять прикола, когда человек совет спрашивает, причем не такой уж и общий. А "советчики" начинают - "погугли", "почитай", "позови специалиста" и т.д. Я если не знаю/не хочу подсказывать, просто и не отвечаю (*так и напрашивается "не умничаю"*)... Курсы это хорошо и правильно. Только не быстро. В книге Бояркина рассматривается вариант использования ПВД, а ранее было сказано, что можно как из ПВД вызывать, так и из алгоритмов. Описания разницы/приоритетности этих методов нигде не нашла. Если вы можете поделиться ссылкой, где бы рассматривался аналогичный вопрос, а не общее описание "ВыгрузитьпоПравиллу - это" - буду благодарна и тут же ознакомлюсь. |
|||
38
DenYuliya
17.11.17
✎
13:24
|
Хотя насчет почему из алгоритма, вызываемого из ПКО, а не из ПВД, я поняла.
из ПВД, когда объект из выборки получен и необходимо произвести его конвертацию. из ПКО, когда необходимо выгрузить связанную с выгружаемым объектом информацию. |
|||
39
Ёпрст
17.11.17
✎
14:43
|
(32) просто 5 раз выгружай по одному правилу, можешь, в ПослеВыгрузки запихать это.
|
|||
40
Ёпрст
17.11.17
✎
14:44
|
вот, как пример, выгрузка контактной информации
всё это в ПКО Клиентосы в ПослеВыгрузки Запрос = Новый Запрос(" |ВЫБРАТЬ | * |ИЗ | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Объект = &Объект"); Если Источник.ССылка = Источник Тогда Запрос.УстановитьПараметр("Объект", Источник); Иначе Запрос.УстановитьПараметр("Объект", Источник.ССылка); КонецЕсли; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ВыгрузитьПоПравилу(,,Выборка, , "КонтактнаяИнформация"); КонецЦикла; |
|||
41
Ёпрст
17.11.17
✎
14:46
|
+40 в ПКО КонтактнаяИнформация, источник пусто, на всех полях в свойствах стоит галка - получить из входящих данных. Усё
|
|||
42
DenYuliya
17.11.17
✎
14:59
|
(39) так у меня же разные реквизиты, выходит создаются 5 СЗ, но - в 1 правиле?
|
|||
43
DenYuliya
17.11.17
✎
14:59
|
(41) И я еще один момент не могу понять...У меня в итоге в любом случае должно быть как минимум 2 ПКО, верно?
Условно так: 1) ПКО "Контрагенты_КонтактныеЛица", с заполнеными Источником и Приемником, и ВыгрузитьПоПравилу(,,,, "Контакты") в обработчике 2) ПКО "Контакты", с пустым источником и приемником "КонтактныеЛица", собственно вызываемов из п. 1) Не может же ПКО само себя вызывать функцией ВыгрузитьПоПравилу()? |
|||
44
Ёпрст
17.11.17
✎
15:00
|
(42) не особо читал, что тебе там нужно :)
|
|||
45
Ёпрст
17.11.17
✎
15:01
|
(43) можешь и так. Никто тебя не ограничивает созданием ПКО
|
|||
46
Ёпрст
17.11.17
✎
15:03
|
ВыгрузитьПоПравилу - это просто хрень, которая позволяет выгружать связанную информацию из ПКО, или то что нужно из ПВД
напимер, в ПКО номенклатура, выгрузить потом все подчиненные единицы измерения, или в ПВД Реализация выгрузить чать реализаций по одноум правилу. а часть по другому. И т.д. Не понимаю, в чем там у тебя сложность |
|||
47
DenYuliya
17.11.17
✎
15:38
|
(42), (46)
Сложность: Если образно брать структуру Источника (спр.Контрагенты), и Приемника(спр.КонтактЛица) Источник: - Контрагент - ФиоРукля - ДолжностьРукля - ФиоРукляПродаж - ДолжностьРукляРукляПродаж и т.д - 5 одинаковых по своей сути "набора" реквизитов. Приемник: - Родитель - Фио - Должность В итоге, из одного Источника => 5 разных приемников. Не могу понять, мне надо делать 5 разных ПКО, для каждого свой СЗ. Или ПКО - один, и в него все 5 СЗ пихать? Ведь каждый из 5 "наборов" - это разные реквизиты в Источнике. |
|||
48
DenYuliya
17.11.17
✎
16:53
|
(40) немного не то.
В приведенном примере в каждой итерации цикла выгружаются один и тот же состав реквизитов. А у меня - в каждой итерации - свой состав. Если я правильно понимаю принцип. |
|||
49
Ёпрст
17.11.17
✎
16:56
|
1 пко и в клиентосах 5 раз выгрузить по правилу с разным составом. усё
|
|||
50
DenYuliya
17.11.17
✎
16:59
|
*в клиентосах*)))).
Спасибо, щас попробую. |
|||
51
DenYuliya
17.11.17
✎
17:26
|
*щас в меня тапки полетят*
А ПКЗ для основного ПКО Контрагенты_КонтактныеЛица заполнять надо? В них тоже надо прописывать в операторах, или просто добавить с пустым источником? |
|||
52
DenYuliya
17.11.17
✎
17:37
|
Неа((. Пусто. Ошибок нет, но ничего не выгружается
|
|||
53
user-ok
17.11.17
✎
18:02
|
Источником может быть список значений
|
|||
54
DenYuliya
17.11.17
✎
18:19
|
(53)
Структура сейчас такая: ПКО Контрагенты_КонтактныеЛица, в нем вызов ВыгрузитьПоПравилу(,,,, "Контакты") ПКО "Контакты". Источник- пустой Приемник - контакт. лица. Ваш совет насчет СЗ в качестве источника относится к ПКО "Контакты"? |
|||
55
user-ok
17.11.17
✎
21:49
|
спКонтакт = СоздатьОбъект("СписокЗначений");
спКонтакт.Установить("Должность", "Менеджер по закупкам"); спКонтакт.Установить("ФИО", Источник.ФИОЗакупочника); спКонтакт.Установить("Телефон", Источник.ТелефонЗакупочника); ВыгрузитьПоПравилу(спКонтакт ,,,, "Контакты"); спКонтакт.Установить("Должность", "Менеджер по продажам"); спКонтакт.Установить("ФИО", Источник.ФИОПродажника); спКонтакт.Установить("Телефон", Источник.ТелефонПродажника); ВыгрузитьПоПравилу(спКонтакт ,,,, "Контакты"); В ПКО Источник - пустой ПКС "Должность" В "ПередВыгрузкой": Значение = Источник.Получить("Должность"); ПКС "ФИО" Значение = Источник.Получить("ФИО"); ... и так далее Если справочник подчиненный - не забудь подобным образом передать владельца немного извратно. но рабочее |
|||
56
DenYuliya
20.11.17
✎
10:01
|
(55) спасибо, сейчас попробую.
"В ПКО Источник - пустой" - это в ПКО "Контакты"? (то, которое вызывается), или в в вызываемом, и в обоих? И что делать с ПКС в "основном" ПКО? ("Контрагенты_Контакты") Пустыми их оставлять? Я попробовала вообще не заполнять те, которые есть в созданном СЗ, и добавить только созданные "по умолчанию" - тишина((. Ошибок нет, но и не выгружается ничего. |
|||
57
DenYuliya
20.11.17
✎
11:35
|
несколько вариантов перепробовала, и во всех в файле данных пусто (не выгружается).
1 вариант: http://dropmefiles.com/urAAS В ПКО Контрагенты_Контакты в ПослеВыгрузкиВФайл вызов Алгоритма ПослеВыгрузкиКонтактныхЛицВФайл(); В ПКС "Владелец" в "ПередВыгрузкой" Значение = Источник; |
|||
58
DenYuliya
20.11.17
✎
11:57
|
вариант2:
http://dropmefiles.com/Zvk7W В каждом из ПКС ПКО "Контакты", в обработчике "ПередВыгрузкой" указано: Значение = Источник.Получить("должностьПоВизитке"); и т.д. - по аналогии. Это я пыталась сделать, как советовал (55). Тоже пусто. |
|||
59
Йохохо
20.11.17
✎
12:11
|
незапоминатьвыгруженныезначения и пора уже освоить отладчик
|
|||
60
Ёпрст
20.11.17
✎
12:27
|
(57,58)
ВыгрузитьПоПравилу(Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО, УзелСсылки, ТолькоПолучитьУзелСсылки, ПКО, ЭтоПравилоСГлобальнойВыгрузкойОбъектов, ВыборкаДляВыгрузкиДанных) |
|||
61
Ёпрст
20.11.17
✎
12:29
|
пихать в Источник СЗ как то не очень, пихай в ВходящиеДанные.
и в ПКО КонтактыКонтрагентов поставь галки - получитьИЗ входящих данных у всех свойств, которые ты в СЗ положила. Усё. |
|||
62
Ёпрст
20.11.17
✎
12:29
|
+ ВыгрузитьПоПравилу вызывай в ПослеВыгрузки()
|
|||
63
Ёпрст
20.11.17
✎
12:31
|
ЗЫ: и нет уверенности, что Источник доступен в Алгоритмах просто так. Возможно, нужно его хотя -бы в параметры Алгоритмов пихать явно
|
|||
64
DenYuliya
20.11.17
✎
12:32
|
Может тогда просто не использовать Алгоритмы, а прописывать код прямо в ПослеВыгрузки "как по книжкам"? Попробую так.
Пы.сы. галка"не запоминать данные" ничего не изменила. |
|||
65
Ёпрст
20.11.17
✎
12:33
|
(64) см. (60,61).
|
|||
66
DenYuliya
20.11.17
✎
12:35
|
Вот. Ты прямо мой вопрос опередил! В Типовых правилах через "входящие данные" выгрузка в партнерах, хотела так попробовать
|
|||
67
DenYuliya
20.11.17
✎
14:21
|
(60, 61) опять та же фигня(((.
Пусто в файле выгрузки, ошибок в процессе выгрузки нет. http://dropmefiles.com/Eurw4 Мдя((. |
|||
68
Ёпрст
20.11.17
✎
14:51
|
(67) ты хоть что выгружаешь то ?
ПВД есть от этого пко ? |
|||
69
Ёпрст
20.11.17
✎
14:51
|
в ПослеВыгрузки заходит ?
Отладчиком, не пробовала сымотреть ? |
|||
70
DenYuliya
20.11.17
✎
15:13
|
(67) нет... *дико краснею*
Где-то далеко выше я поднимала вопрос ПВД. Короче я поняла, что если есть вызов ВыгрузитьПоПравилу() из ПКО - то ПВД не надо... Создала, с объектом выборки Контрагенты, указала правило Контрагенты_КонтактныеЛица, тип выборки - стандартная. Загружается, не все правильно (ссылка на контрагента не создается), но все же. Я идиотка...Как так можно было???? |
|||
71
Ёпрст
20.11.17
✎
15:35
|
(70) пвд можно не писать, если выгружаешь зависимые объекты как реквизиты по ссылке,
например, выгружаешь документы, в которых есть ссылка на Контрагенты. |
|||
72
Ёпрст
20.11.17
✎
15:36
|
в твоём случае, для проверки правила, нужно было создать ПВД - клиентосы, и выгружать хотя бы одного, смотреть как выгружается-загружается связанная инфа Конт Данные.
|
|||
73
DenYuliya
20.11.17
✎
15:37
|
(55) "Если справочник подчиненный - не забудь подобным образом передать владельца"
Владелец ведь передается просто как "Значение = Источник"? В Приемнике реквизит Владелец есть, а в Источнике нет, надо просто ссылку на Источник передавать. И еще такой вопрос. Я так поняла, что в "изначальном" ПКО (например Контрагенты_Контакты) ПКС надо добавлять те, которые не добавлены в СписокЗначений и "вызываемое" ПКО (в моем случае ПКО "Контаркты")? А если я в ПКО "Контакты" (и в СЗ соответственно) добавлю поля Наименование и Владелец, то по каким полям мне осуществлять поиск в "изначальном" ПКО? Так-то надо по "Наименованию" и "Владельцу", но если я еще раз добавлю ПКС "наименование", но с пустым Источником, не приведет ли это к дублям? |
|||
74
DenYuliya
20.11.17
✎
15:38
|
(72) стыдоба....я поняла.
Ну блин, теперь хоть что-то сдвинулось. |
|||
75
Йохохо
20.11.17
✎
15:45
|
(73) брр "Я так поняла, что в "изначальном" ПКО (например Контрагенты_Контакты) ПКС надо добавлять те, которые не добавлены в СписокЗначений и "вызываемое" ПКО (в моем случае ПКО "Контаркты")?"
в ПКО передан источник и входящие, если галка, то входящие, если Значение= то кодом, иначе Источник[] |
|||
76
DenYuliya
20.11.17
✎
16:04
|
Ой))), объяснила я кошмарно, конечно.
если делать как в (55) Грубо говоря, можно ли в ПКС "Контр-Контакты" добавить ПКС из ПКО "Контакты"? Смотрю по примерам в типовых правилах, там везде по-отдельности, часть в одном, часть в другом. |
|||
77
DenYuliya
20.11.17
✎
16:09
|
это к (76) http://dropmefiles.com/iee92
|
|||
78
Йохохо
20.11.17
✎
16:22
|
(76) список ПКС это это строки ТЧ, не надо грубо, кушать не могу
|
|||
79
DenYuliya
20.11.17
✎
16:34
|
Я стараюсь понятно спросить...
Если я в ПКО "Контакты" добавлю ПКС "Наименование" (не важно, из ВходящихДанных оно будет заполняться там, или из Источника) - могу ли я добавить то же Наименование в ПКС для ПКО Контр_Контакты? Или это приведет к ошибкам? |
|||
80
Йохохо
20.11.17
✎
16:39
|
(79) ПКС "Наименование" это ПКС, Наименование это строка? слишком простой вопрос, чтобы его понять)
|
|||
81
DenYuliya
20.11.17
✎
16:43
|
Наименование - это строка.
Стандартный реквизит Приемника Реквизиты "ФИО Руководителя", "ФИО Руководителя продаж" и т.д. в источнике Логично, как мне кажется, делать поиск по нему. |
|||
82
Йохохо
20.11.17
✎
16:52
|
(81) кто то слишком мудрит, подозреваю вопрос в избавлении от зацикленности
|
|||
83
DenYuliya
20.11.17
✎
17:12
|
(82) возможно...
От дублей и от пустых значений. http://dropmefiles.com/zZZWW так грузится сейчас. А должно только 2 и 3 снизу. Потому что у остальных Контрагентов нет Контактных лиц. Я написала в ПКО Конт_Контакты в обработчике ПередВыгрузкрой() СЗ = СоздатьОбъект("СписокЗначений"); Если ПустоеЗначение(Источник.ФИОРуководителя) = 0 Тогда СЗ.Установить("Наименование", Источник.ФИОРуководителя); СЗ.Установить("Владелец", Источник); .... ВыгрузитьПоПравилу(СЗ,,,,"КонтактыКонтрагентов"); КонецЕсли; Но как-то условие игнорится(( |
|||
84
user-ok
20.11.17
✎
17:21
|
(73) >>Владелец ведь передается просто как "Значение = Источник"?
в моем примере в источнике СЗ, а никак не Контрагент. Хотя уважаемый Ёпрст правильно подсказал что лучше СЗ запихнуть в ИсходящиеДанные, тогда в Источник можно положить самого контрагента. |
|||
85
DenYuliya
20.11.17
✎
17:29
|
(84) Ёпрст советовал во ВходящиеДанные пихать.
ВходящиеДанные - они по тому же принципу создаются (создание СпискаЗначений в обработчике ПКО Конт_Контакты), только с галочкой "ПолучатьИзВходящихДанных" в ПКО "Контакты"? + в ПКС "Владелец" указываю ПКО "Контрагенты_Партнеры". Только он не передается все равно |
|||
86
DenYuliya
20.11.17
✎
17:37
|
К (85) ну и передаются ВходДанные ВыгрузитьПоПравилу(,,СЗ,,"КонтактыКонтрагентов"); , а не
ВыгрузитьПоПравилу(СЗ,,,,"КонтактыКонтрагентов"); Это я про разницу СЗ и ВходДанных. |
|||
87
Йохохо
20.11.17
✎
18:05
|
(86) нет разницы же, ведь входящие СЗ. Входящие исходящие весело меняются местами иногда
|
|||
88
Йохохо
20.11.17
✎
18:10
|
ИсходящиеДанные - Произвольный - произвольные вспомогательные данные. Данные передаются по следующим правилам:
1. ПВД.ИсходящиеДанные -> ПКО.ВходящиеДанные 2. ПКО.ВходящиеДанные -> ПКС.ВходящиеДанные 3. ПКС.ИсходящиеДанные -> ПКО.ВходящиеДанные |
|||
89
Йохохо
20.11.17
✎
18:18
|
(83) не надо так проверять, надо открыть хмл выгруженных данных редактором текстовым (пока маленький любой пойдет, большой отлично но неудобно открывает 1с) и посчитать количество записей где Объект СправочникСсылка.КонтактыКонтрагентов. Потом подумать и мб полезть в отладчик, придет понимание
|
|||
90
DenYuliya
20.11.17
✎
18:31
|
http://dropmefiles.com/EcQqE
Ну вот((. Вообще какая-то фигня теперь. Те 4 строки, где есть ФИО и Должность - да, все верно и без дублей, и лишнего тоже нет. Только Владелец там не заполнен. А другие 5 строк - в них есть Владельцы (по 1 на каждого Контрагента в базе). Но больше ничего нет))). |
|||
91
DenYuliya
20.11.17
✎
18:36
|
похоже где-то я неправильно указываю поиск или соответствия. Такое обычно в запросах при неверном указание Связей
|
|||
92
DenYuliya
21.11.17
✎
12:24
|
В общем, такое чувство, как будто ПКО "Контр_Контакты" и "Контакты" отрабатывают независимо друг от друга.
Создаются заполненные согласно ПКО "Контакты" элементы, не дублируются и даже лишних нет, и все, что проложено в передаваемый СЗ - загружается. Кроме ссылки на сам объект, который должен конвертироваться во Владельца в Приемнике. И создаются по элементу на каждого существующего в базе контрагента, у которого не заполнено ничего, кроме того самого Владельца. Это если в ПКО "Контр_Контакты" в ПКС "Владелец" указать Значение = Источник; Что-то меня гложет подозрение, что передавать ссылку "на самого себя" во ВходящиеДанные так - неверно: В ПКО Контр_Контакты СЗ.Установить("Владелец", Источник); ВыгрузитьПоПравилу(,,СЗ,,"Контакты"); В ПКО "Контакты" для ПКС "Владелец" галка "получать из входящих данных" |
|||
93
DenYuliya
21.11.17
✎
16:01
|
Ну в общем задача решена.
Если вдруг кому понадобится, ниже решение: ПКО "Контр_КонтактныеЛица", обработчик "ПослеВыгрузкиВФайл": СЗ = СоздатьОбъект("СписокЗначений"); Если ПустоеЗначение(Источник.ФИОРуководителя) = 0 Тогда СЗ.Установить("Наименование", Источник.ФИОРуководителя); СЗ.Установить("ДолжностьПоВизитке", Источник.ДолжностьРуководителя); СЗ.Установить("ДатаРождения", Источник.ДатаРуководителя); СЗ.Установить("Комментарий", Источник.КомментарийКонтакта); СЗ.Установить("Автор", Источник.Проект); СЗ.Установить("Владелец", Источник); ВыгрузитьПоПравилу(СЗ,,,,"Контакты"); КонецЕсли; Если ПустоеЗначение(Источник.ФИОРукПродаж) = 0 Тогда СЗ.Установить("Наименование", Источник.ФИОРукПродаж); СЗ.Установить("ДолжностьПоВизитке", Источник.ДолжностьРукПродаж); СЗ.Установить("ДатаРождения", Источник.ДатаРукПродаж); СЗ.Установить("Комментарий", Источник.КомментарийКонтакта); СЗ.Установить("Автор", Источник.Проект); СЗ.Установить("Владелец", Источник); ВыгрузитьПоПравилу(СЗ,,,,"Контакты"); КонецЕсли; В ПКО "Контакты" созданы ПКС, Приемник спр.КонтактныеЛица, Источник - пустой. https://yadi.sk/i/m9Ry8tge3PtoHu В ПКС для ПКО "Контр_Контакты" Поиск и Галка "получать из вход данных" у "Наименования", больше ПКС нет. https://yadi.sk/i/De4MCRdW3PtoH5 В ПКС для ПКО "Контакты" галка поиска нигде не стоит, "получать из вход данных" -тоже. В обработчике "ПередВыгрузкой" каждого из ПКС: Значение = Источник.Получить("Владелец"); (для ПКС Владелец) Значение = Источник.Получить("Наименование"); (для ПКС Наимаенование), и т.д. https://yadi.sk/i/0_r3m7xA3PtoHd Для ссылочных данных в моем случае это Автор и Владелец) - в ПКС выбрано ПКО (то, по которому выгружаются эти объекты). https://yadi.sk/i/okSr6ZDa3PtoGi |
|||
94
DenYuliya
21.11.17
✎
16:04
|
(61), (62) почему-то из обработчика "ПослеВыгрузки", и если передавать СписокЗначений в ВыгрузитьПоПравилу() не как Источник, а как ВходящиеДанные - все получалось не корректно...
|
|||
95
DenYuliya
22.11.17
✎
12:12
|
Ребята, еще такой маааленький вопрос...
Для заполнения Контактной информации в этой же задаче (в Источнике строковые реквизиты тел- почта для Контактных лиц, в Приемнике - "Контактная информация контактных лиц"), можно ли по аналогии с остальными реквизитами, заполнять КИ? То есть в ПКО Контр_Контакты в СписокЗначений пихать телефон и эл.почту, а потом через то же самое ВыгрузитьПоПравилу() пихать в ПКО "Контакты"? Или это надо отдельное Правило, и вызывать/заполнять его из ПКГС "КонтактнаяИнформация"? Хм...может понятнее будет так - можно ли передать значения в КИ, минуя ПКГС, сразу же в ПКС? Блин, не знаю, как спросить понятнее. Типовое решение какое-то мутное, и там нет для "КонтактныхЛицПартнера", а в интернете все разбираемые примеры, которые я нашла - для КИ в регистре сведений |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |