Конвертация справочника с несколькими верхними уровнями

1. Natalito 20.11.13 11:34 Сейчас в теме
Добрый день. Конвертация данных (2.1.7.1). Создаю правила для переноса документа из бух 8 в нетиповую бух 7.7. Нужно элемент спр."номенклатура" перенести в группу (наименование этой группы - есть наименование переносимого элемента), далее из этого же элемента у этой группы создать элемент (то есть у него родитель - группа "<наименование переносимого элемента из 8>"). Плюс у этой группы должен быть родитель "группа 2" (наименование к примеру "Товары"), а у этой группы - родитель "группа 3" (наименование к примеру "номенклатура"). ТО есть структура:

группа "Номенклатура"
группа "Товары"
группа "<наименование переносимого элемента из 8>"
элемент "Какой-то"


У меня получается реализовать
группа "<наименование переносимого элемента из 8>"
элемент "Какой-то"

но вот выше уровни не создает...
данную реализацию получаю с помощью ИсходящихДанных. В ПКО для элемента в родителе указываю Исходящие данные и для наименования указываю наименование источника, в ПКО для родителя в ПКС "наименование" ставлю "получить из входящих данных". Пробовала аналогично и для верхних уровней, не получается. Отдельно для каждого уровня создала ПКО родителя. И в значении ПКС "Наименование" указывала моё наименование. Тоже не вышло... Не очень ясно наверно выяснилась, но если кто понял и знает как мне помочь, ответьте, пожалуйста...
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
9. adva 45 20.11.13 12:02 Сейчас в теме
Хотя из (1) не видно, что Вы в ИсходящиеДанные передаете также и РОдителя
10. Natalito 20.11.13 12:13 Сейчас в теме
(9) adva, количество уровней не ограничено. (9) немного не поняла, как в ИсходящиеДанные передать Родителя??? У меня в ПКОэлемента в ПКС родитель написано:

ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("Наименование", Источник.НаименованиеПолное);
ИмяПКО = "Номенклатура";

Но в этом ПКС не указано ПКОгруппаэлемента в поле "Правило"
12. adva 45 20.11.13 12:21 Сейчас в теме
(10) надо так:

ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("Наименование", Источник.НаименованиеПолное);
ИсходящиеДанные.Вставить("Родитель", ЗначениеРодителя);
ИмяПКО = "Номенклатура";

Здесь ЗначениеРодителя это:

Если по правилу ПКОноменклатура выгружается только один родитель, то можно указать к примеру 1 (или нужное наименование родителя). Иначе можно попробовать указать "Новый Структура("Наименование, Родитель", ..., ...)
2. adva 45 20.11.13 11:43 Сейчас в теме
В итоге такие ПКО имеются?:

ПКОноменклатура

ПКОтовары
ПКС.Родитель - ПКОноменклатура

ПКОгруппаэлемента
ПКС.Родитель - ПКОтовары

ПКОэлемента
ПКС.Родитель - ПКОгруппаэлемента
4. Natalito 20.11.13 11:57 Сейчас в теме
3. adva 45 20.11.13 11:45 Сейчас в теме
Вместо ИсходящиеДанные можно так делать в ПКС: Значение = Новый Структура("Наименование, Родитель", ..., ...) (перечислить все свойства, имеющиеся в соответствующем ПКО). Хотя может для 7.7 это и не сработает
5. Natalito 20.11.13 11:57 Сейчас в теме
(3) adva, сейчас попробую так.
6. adva 45 20.11.13 11:59 Сейчас в теме
(5) если (2/) уже имеется в и ПКС для родителей указаны ПКО вышестоящих уровней, и при этом не отрабатывает, то думаю (3) тоже не поможет
7. adva 45 20.11.13 11:59 Сейчас в теме
А в приемнике не ограничено количество уровней?
8. adva 45 20.11.13 12:00 Сейчас в теме
В 7.7 уровни всегда ограничены каким то числом. Количество уровней в данном случае больше 3 ?
11. Natalito 20.11.13 12:14 Сейчас в теме
а в ПКО "Номенклатура" в ПКС "наименование" стоит галочка "получить из входящих данных. Может входящие-исходящие данные только для верхнего уровня применимы?
13. adva 45 20.11.13 12:23 Сейчас в теме
Можно в принципе родителя не указывать, но ПКС для родителя в любом случае должно быть, и в нем можно указать Значение = ... , а также указать нужное ПКО
16. Natalito 20.11.13 12:25 Сейчас в теме
(13) adva, ааа, теперь кажется начинаю понимать в чем моя ошибка. попробую сделать как вы говорите, спасибо!
14. adva 45 20.11.13 12:25 Сейчас в теме
Еще возможно надо будет указывать КлючВыгружаемыхДанных в событии ПередВыгрузкой для ПКО
15. adva 45 20.11.13 12:25 Сейчас в теме
Это чтобы много раз родители не выгружались
17. adva 45 20.11.13 12:33 Сейчас в теме
Еще раз. Имеем (может чего-то упущу, но примерно так):

ПКОноменклатура
ПКС.Наименование
ПКС.ЭтоГруппа (ПередВыгрузкой: Значение = Истина)

ПКОтовары
ПКС.Родитель - ПКОноменклатура (ПередВыгрузкой Значение = Новый Структура("Наименование", "Номенклатура"))
ПКС.Наименование
ПКС.ЭтоГруппа (ПередВыгрузкой: Значение = Истина)

ПКОгруппаэлемента
ПКС.Родитель - ПКОтовары (ПередВыгрузкой Значение = Новый Структура("Наименование", "Товары"))
ПКС.Наименование
ПКС.ЭтоГруппа (ПередВыгрузкой: Значение = Истина)

ПКОэлемента
ПКС.Наименование
ПКС.Родитель - ПКОгруппаэлемента(ПередВыгрузкой: Значение = Новый Структура("Наименование", Источник.Наименование))
ПКС.ЭтоГруппа (ПередВыгрузкой: Значение = Ложь)
18. Natalito 20.11.13 13:54 Сейчас в теме
(17) adva, если пишу Значение = Новый Структура("Наименование", Источник.Наименование), то ругается уже на этапе выгрузки из 8. А на исходящие данные не ругается. Может в ПКОэлемента указать родителя. Я вот не оч поняла, какое ЗначениеРодителя вы имели ввиду в (12)...
19. adva 45 20.11.13 14:14 Сейчас в теме
20. adva 45 20.11.13 14:14 Сейчас в теме
Правила выложить можете?
21. adva 45 20.11.13 14:18 Сейчас в теме
И уточните, ПКОтовары только одно, или по этому правилу должно выгрузиться несколько групп? Тот же вопрос относится к ПКОноменклатура
22. Natalito 20.11.13 15:57 Сейчас в теме
24. Natalito 20.11.13 17:36 Сейчас в теме
(22) Natalito, поняла в чем ошибка. написала вместо НаименованиеПолное - ПолноеНаименование. Теперь так ругается Начало выгрузки: 20.11.2013 17:39:15

Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = Номенклатура (Справочник: Номенклатура)
ПКС = 5 (БазоваяЕдиницаИзмерения --> ЕдиницаИзмерения)
Объект = Структура (Структура)
СвойствоПриемника = ЕдиницаИзмерения (СправочникСсылка.ЕдиницыИзмерений)
ОписаниеОшибки = Поле объекта не обнаружено (БазоваяЕдиницаИзмерения)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8284)
КодСообщения = 13

Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1694)}: Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = Номенклатура (Справочник: Номенклатура)
ПКС = 5 (БазоваяЕдиницаИзмерения --> ЕдиницаИзмерения)
Объект = Структура (Структура)
СвойствоПриемника = ЕдиницаИзмерения (СправочникСсылка.ЕдиницыИзмерений)
ОписаниеОшибки = Поле объекта не обнаружено (БазоваяЕдиницаИзмерения)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8284)
КодСообщения = 13


Как понимаю в структура надо добавить ещё значения для единицы измерения
23. Natalito 20.11.13 16:01 Сейчас в теме
Здесь ПКО Партия - это для элемента
ПКО Номенклатура - это для группы элемента (родителя элемента)
ПКО НоменклатураГруппа - это для родителя родителя
ПКО НоменклатураГруппаВерхнийУровень - родителя родителя родителя
25. Natalito 20.11.13 17:38 Сейчас в теме
ВСё! Ура! Получилось!!! Спасибо за ответы!
26. Natalito 20.11.13 17:42 Сейчас в теме
только теперь три папки верхнего уровня создает... эммм
27. adva 45 21.11.13 08:31 Сейчас в теме
(26) про это тоже отмечал, используйте уникальный КлючВыгружаемыхДанных в каждой из групп (обычно это строка, состоящая из реквизитов поиска, например так, КлючВыгружаемыхДанных = "" + Источник.Наименование + Источник.ЭтоГруппа
29. Natalito 21.11.13 09:42 Сейчас в теме
(27) adva, правила смотреть пока не надо) надеюсь, что у самой получится добить. КлючВыгружаемыхДанных, эммм, сейчас попробую.
28. adva 45 21.11.13 08:32 Сейчас в теме
Правила уже не нужно смотреть?
30. Natalito 21.11.13 13:35 Сейчас в теме
Сделала КлючВыгружаемыхДанных, но вот с верхним уровнем никак не получается. Создает верхнюю группу, хоть убей!!! Хотя загружает всё в уже существующую, но вот при каждой загрузке всё равно пустая верхняя группа... Уважаемый adva может вы всё же посмотрите правила?
31. adva 45 21.11.13 14:35 Сейчас в теме
Для родителей там вообще объект источник задавать не надо, только приемник
32. adva 45 21.11.13 14:36 Сейчас в теме
И КлючВыгружаемыхДанных Вы не там задаете
33. adva 45 21.11.13 14:37 Сейчас в теме
Сейчас попробую набросать (проверять естественно не буду)
34. adva 45 21.11.13 14:38 Сейчас в теме
Только момент не понятен, почему у Вас все партии называются "/Нет/Стронг" ?
35. adva 45 21.11.13 14:40 Сейчас в теме
В этом случае правильная выгрузка может происходить далеко не всегда
36. adva 45 21.11.13 14:41 Сейчас в теме
Или требуется, чтобы выгружалась только одна партия с данным наименованием?
37. adva 45 21.11.13 14:44 Сейчас в теме
Хотя бы комментарий в справочники НоменлатураИПартииТМЦ имеется?
38. adva 45 21.11.13 14:50 Сейчас в теме
Комментарии к файлу:

ПКО Партии
ПКС.Наименование (поиск) (Значение = "/Нет/Стронг")
ПКО.ЭтоГруппа (поиск)
ПКО.Родитель (здесь не нужно задавать КлючВыгружаемыхДанных).
т.к. для всех партий реквизиты происка одинаковы, то при выгрузке они будут сливаться в один элемент (только если в первый раз были выгружены все партии одновременно, возможен вариант, что они будут искаться по ссылкам, а не по реквизитам поиска, но это только при использовании правил для планов обмена)

КлючВыгружаемыхДанных задается в событии ПередВыгрузкой ПКО, а не ПКС (смотрите "Информация по обработчикам", там это указано)
39. adva 45 21.11.13 14:51 Сейчас в теме
Уточните пожалуйста, как должны выгуржаться элементы по ПКО Партия. Иначе не смогу предложить правильный вариант
40. Natalito 21.11.13 14:55 Сейчас в теме
Для вышестоящей группы с ПКО Номенклатура, родителя Партии - всего одна партия выгружается с наименованием /Нет/___. Комментарий у справочника имеется
42. adva 45 21.11.13 15:03 Сейчас в теме
(40) тогда, если я правильно понял, добавьте для ПКО Партия в качестве реквизита поиска Родителя, иначе поиск будет не корректен
41. adva 45 21.11.13 15:01 Сейчас в теме
Вот примерно так, должно быть (возможны ошибки, т.к. не проверял)
43. adva 45 21.11.13 15:04 Сейчас в теме
Для остальных ПКО по номенклатуре тоже наверное имеет смысл добавить в поиск родителя. Они же у Вас всегда будут в одной и той же жестко заданной группе?
44. adva 45 21.11.13 15:05 Сейчас в теме
И если будете родителя добавлять в реквизиты поиска, там где нужно указать КлючВыгружаемыхДанных приплюсуйте родителя (его код или наименвоание)
45. Natalito 21.11.13 15:25 Сейчас в теме
(44) adva, ура!!! спасибо огромное! чуть-чуть поправила и всё получилось как я хотела!!! напишите мне в личку ваш номер телефона, я хочу вас немного отблагодарить)
46. Natalito 21.11.13 15:32 Сейчас в теме
а тему удалить можно? или хотя бы файлы?
47. adva 45 22.11.13 06:30 Сейчас в теме
Свой выложенный файл удалил
48. Natalito 22.11.13 09:43 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот