Имя: Пароль:
1C
 
Конвертация данных: создание нескольких элементов справочника из одного.
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
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
Ребята, еще такой маааленький вопрос...
Для заполнения Контактной информации в этой же задаче (в Источнике строковые реквизиты тел- почта для Контактных лиц, в Приемнике - "Контактная информация контактных лиц"),

можно ли по аналогии с остальными реквизитами, заполнять КИ?

То есть в ПКО Контр_Контакты в СписокЗначений пихать телефон и эл.почту, а потом через то же самое ВыгрузитьПоПравилу() пихать в ПКО "Контакты"?

Или это надо отдельное Правило, и вызывать/заполнять его из ПКГС "КонтактнаяИнформация"?
Хм...может понятнее будет так - можно ли передать значения в КИ, минуя ПКГС, сразу же в ПКС?

Блин, не знаю, как спросить понятнее.
Типовое решение какое-то мутное, и там нет для "КонтактныхЛицПартнера", а в интернете все разбираемые примеры, которые я нашла - для КИ в регистре сведений
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.