|
Конвертация. Перенос данных из независимого рег. св. доп. свойства справочника | ☑ | ||
---|---|---|---|---|
0
elevika
09.12.19
✎
11:02
|
Уважаемые, нужна помощь. Имеются две нестандартные конфы. В источнике есть независимый непериодический РС: изм. Номенклатура, ресурсы Комплект (спр. Комплеты) и Коллекция (спр. Коллекции).
Во приемнике данные о Компелкта и Коллекциях (такие же спр., как в источнике) являются доп. свойствами, т.е. находятся в РС ЗначенияСвойствОбъектов. Написала правила. Сделала ПКО "КомплектыКоллекцияВСвойство" без источника, приемник РС ЗначенияСвойстОбъектов. ПКС указала для Объект,Свойство,Значение - получить из входящих. ПВД ПередВыгрузкой заношу данные в ИсходящиеДанные и выгружаю по правилу ИсходящиеДанные = Новый Структура; ИсходящиеДанные.Вставить("Свойство","00125"); // Колекция ИсходящиеДанные.Вставить("Значение",Объект.Коллекция); ИсходящиеДанные.Вставить("Объект",Объект.Номенклатура); ВыгрузитьПоПравилу(,,ИсходящиеДанные,,"КомплектыКоллекцияВСвойство"); ИсходящиеДанные = Новый Структура; ИсходящиеДанные.Вставить("Свойство","00166"); // Комплект ИсходящиеДанные.Вставить("Значение",Объект.Комплект); ИсходящиеДанные.Вставить("Объект",Объект.Номенклатура); ВыгрузитьПоПравилу(,,ИсходящиеДанные,,"КомплектыКоллекцияВСвойство"); В при файловом обмене все ОК, при обмене через план-обмен ошибки: ПВД = КомплектыИКоллекции Объект = РегистрСведенийНаборЗаписей.КомплектыИКоллекции (Регистр сведений набор записей: КомплектыИКоллекции) Обработчик = ПередВыгрузкойОбъектаВыборки ОписаниеОшибки = Поле объекта не обнаружено (Коллекция) |
|||
1
Ёпрст
09.12.19
✎
11:05
|
а через план обмена твоего пвд нету
|
|||
2
Ёпрст
09.12.19
✎
11:05
|
там выгружаются зарегистрированные к обмену объекты
|
|||
3
Ёпрст
09.12.19
✎
11:07
|
своё выгрузить по правилу, запихни в ПКО номенклатуры, например, чтоб вместе с ней и свойства летели
|
|||
4
Ёпрст
09.12.19
✎
11:09
|
Ну у меня, в После Выгрузки в ПКО клиентосов,, так, например, воткнуто:
|
|||
5
elevika
09.12.19
✎
11:13
|
(1) Есть ПВД: Источник РС КомплектыИКоллеции (из конфы-источника) и ПКО "КомплектыКоллекцияВСвойство" (которое без источника)
В файловом режиме же срабатывает |
|||
6
Ёпрст
09.12.19
✎
11:15
|
(5) еще раз, при выгрузку через планОбмена, пвд не участвуют.. не доходит ?
|
|||
7
elevika
09.12.19
✎
11:24
|
(4) У меня проблема, что я выгружаю Регистр, он независимый, т.е. нет регистратора, в ПКО которого я могла бы вставить "ПослеВыгрузки"
|
|||
8
elevika
09.12.19
✎
11:26
|
(6) План обмена доходит до ПВД, но выдает ошибку:
ПВД = Карат_НоменклатураКомплектовИКоллекций Объект = РегистрСведенийНаборЗаписей.НоменклатураКомплектовИКоллекций (Регистр сведений набор записей: Номенклатура Комплектов и Коллекций) Обработчик = ПередВыгрузкойОбъектаВыборки ОписаниеОшибки = Поле объекта не обнаружено (Коллекция) т.е. застревает на строчке ИсходящиеДанные.Вставить("Объект",Объект.Номенклатура); Не находит реквизит Номенклатура в наборе записей регистра. |
|||
9
elevika
09.12.19
✎
11:28
|
(8) перепутала строчки. застревает на строке
ИсходящиеДанные.Вставить("Значение",Объект.Комплект); На самом деле, не важно, какой реквизит объекта будет читаться - не может найти любой |
|||
10
Ёпрст
09.12.19
✎
11:41
|
(7) вставляй в ПКО Номенклатура
|
|||
11
Ёпрст
09.12.19
✎
11:41
|
в После Выгрузки
|
|||
12
Ёпрст
09.12.19
✎
11:43
|
Хотя вообще непонятно, почему сразу ПКО на этот РС не создать ?
|
|||
13
elevika
09.12.19
✎
11:52
|
(10) Тогда у меня будет выгружаться каждый раз порядка 2 тыс. записей. А мне надо тока те записи РС, которые реально изменялись, а это происходит редко и мало.
|
|||
14
Ёпрст
09.12.19
✎
11:52
|
(13) см (12)
|
|||
15
elevika
09.12.19
✎
11:56
|
(12) Не знаю как...
Источник РС, приемник РС ЗначенияСвойствОбъектов в ПКС получается источник-приемник номенклатура-объект комплект-значение .... - свойство В свойстве затык. Его можно получить только на стороне загрузки в спр. ПВХ по коду или наименованию. Не могу передать его параметрами из процедур выгрузки. Пробовала через ВходящиеДанные/ИсходящиеДанные... не получилось. |
|||
16
Ёпрст
09.12.19
✎
11:59
|
(15) ну, а как сейчас у тебя, через ВыгрузитьПоПравилу оно у тебя определяется ?
|
|||
17
Ёпрст
09.12.19
✎
12:00
|
ты же можешь просто наименование ПВХ туда передать и всё, через Значение = "Вася" в ПередВыгрузкой .. усё, оно само, потом подставит нужный тип при загрузке
|
|||
18
Ёпрст
09.12.19
✎
12:01
|
в пкс у этого свойства поставь Значение = "тут нужное наименование свойства"
|
|||
19
Ёпрст
09.12.19
✎
12:04
|
ну и , можешь еще до кучи создать ПКО на планвида характеристик свой до кучи и его указать в качестве правила в ПКС в РС
|
|||
20
elevika
09.12.19
✎
12:08
|
Так просто? Ща попробую.. Ещё вопрос: у меня в источнике два рекв. - Комплект и Коллекция. В приемнике один - Значение. В ПКС две строки?
Комплект = Значение Коллекция = Значение |
|||
21
Ёпрст
09.12.19
✎
12:17
|
(20) если 2 значения, то выгружай в 2 свойства, в ПередВыгрузкой в ПКО РС делай выгрузить по правилу тогда
|
|||
22
Ёпрст
09.12.19
✎
12:18
|
Или, если только 2, то можно через 2 ПКО
|
|||
23
Ёпрст
09.12.19
✎
12:18
|
в первом, Комплект, во втором Значение
|
|||
24
elevika
09.12.19
✎
14:08
|
не могу с двумя значениями справиться ((
Сделала два ПВД (одинаковые источник и приемник, но разные ПКО, и разные наименования) Сделала два ПКО: для Комплектов и для Коллекций. В каждом из них в ПКС "Свойство" ПередВыгрузкой Значение="...." (код соотвествующего свойства). Срабатывает первое ПВД. |
|||
25
elevika
09.12.19
✎
14:11
|
Пробую второй вариант
Один ПВД (источник и приемник - соответствующие регистры) ПКО ПередВыгрузкой код: ИсходящиеДанные = Новый Структура; ИсходящиеДанные.Вставить("Свойство","00125"); // Колекция ИсходящиеДанные.Вставить("Значение",Источник.Коллекция); ИсходящиеДанные.Вставить("Объект",Источник.Номенклатура); ВыгрузитьПоПравилу(,,ИсходящиеДанные,,"КомплектыКоллекцияВСвойство"); ИсходящиеДанные = Новый Структура; ИсходящиеДанные.Вставить("Свойство","00166"); // Комплект ИсходящиеДанные.Вставить("Значение",Источник.Комплект); ИсходящиеДанные.Вставить("Объект",Источник.Номенклатура); ВыгрузитьПоПравилу(,,ИсходящиеДанные,,"КомплектыКоллекцияВСвойство"); Для ПКС указала ПолучатьИзВходящих Ошибка ПКО - пустой Источник |
|||
26
Ёпрст
09.12.19
✎
14:20
|
(25) забудь ты про пвд :)
|
|||
27
elevika
09.12.19
✎
14:21
|
(26) ???
Его по любому делать. В (25) я описала код для ПКО |
|||
28
elevika
09.12.19
✎
14:40
|
Если делать два ПКО (для каждого свойства свое), то тогда и два ПВД?
|
|||
29
Ёпрст
09.12.19
✎
14:40
|
дай правила поглядеть
|
|||
30
Ёпрст
09.12.19
✎
14:40
|
(28) если выгружаешь через план обмена , то пвд не нужны
|
|||
31
elevika
09.12.19
✎
14:56
|
(30) Я никогда не связывалась с Планом обмена, т.ч. это новости для меня. Объясни механизм.
Если я создам только ПКО без ПВД, то они не подключатся, т.к. нигде нет на них ссылок. Как это работает? |
|||
32
Ёпрст
09.12.19
✎
14:58
|
(31) в плане обмена регистрируются объекты к выгрузке, по правилам ПКО они выгружаются, всё собственна. Можешь еще налепить свои Правила Регистрации объектов
|
|||
33
Ёпрст
09.12.19
✎
14:59
|
Пвд там нема, он нужен только для универсальнойвыгрузки
|
|||
34
elevika
09.12.19
✎
15:01
|
(32) Попробовала сделать два ПКО и ни одного ПВД. Не сработал обмен вообще
Добавляю ПВД со ссылкой на какого-то ПКО, все срабатывает по этому ПКО Добавляю второй ПВД со ссылкой на второй ПКО, отрабатывает тока первый, второй игнорирует |
|||
35
Ёпрст
09.12.19
✎
15:13
|
(34) через план обмена ?
|
|||
36
Ёпрст
09.12.19
✎
15:14
|
и записи регистра сведений при этом помечены к выгрузке ?
|
|||
37
Ёпрст
09.12.19
✎
15:14
|
и выгружаешь через обработку ОбменДаннымиXML ?
|
|||
38
Cyberhawk
09.12.19
✎
15:15
|
"мне надо тока те записи РС, которые реально изменялись, а это происходит редко и мало" // Как планируешь отбирать из этого регистра такие записи?
|
|||
39
elevika
09.12.19
✎
15:17
|
да, все через План Обмена.
Есть запись РС, которая помечена к выгрузке. Подгружаю правила в План. Делаю Синхронизацию. Отрабатывает норм, пометка с РС к выгрузке снимается. Но в приемнике данных нет (это если правила совсем без ПВД, если есть хоть 1 ПВД со ссылкой на ПКО, то отрабатывается первое) ЗЫ. Зато мне теперь понятно, почему правила файлового обмена не сработали в Плане - там код был в ПДВ. За это спасибо |
|||
40
elevika
09.12.19
✎
15:18
|
(38) их изменения регистрируются в нужном Узле
|
|||
41
Cyberhawk
09.12.19
✎
15:19
|
(40) Как это согласуется с "Я никогда не связывалась с Планом обмена" из (31)?
|
|||
42
Cyberhawk
09.12.19
✎
15:20
|
"понятно, почему правила файлового обмена не сработали в Плане - там код был в ПДВ" // Если в ПВД указан произвольный алгоритм, а не выборка из конкретной таблицы, то такие ПВД ЕМНИП каждый раз выполняются и в обмене по планам обмена, по крайней мере в обвязке не на БСП
|
|||
43
elevika
09.12.19
✎
15:24
|
(41) Все бывает впервые. Никогда такого не было и вот опять ))
|
|||
44
elevika
09.12.19
✎
15:28
|
(42) Это выборка из объекта-регистра.
Так подскажи, как сделать выгрузку в два разных свойства? |
|||
45
elevika
09.12.19
✎
15:43
|
Вобщем, основная проблема на данный момент - конвертировать одну запись РС в две
|
|||
46
Cyberhawk
09.12.19
✎
15:44
|
Способов много
|
|||
47
elevika
09.12.19
✎
15:46
|
(46) оценный ценный ответ!
|
|||
48
elevika
10.12.19
✎
11:35
|
Больше ни у кого нет советов по конвертации одно записи РС в две разных? РС независимый, т.е. без регистратора
|
|||
49
Ёпрст
10.12.19
✎
14:57
|
(48) правила выложи свои
|
|||
50
mistеr
10.12.19
✎
15:16
|
(45) В ПВД два раза ВыгрузитьПоПравилу() - что может быть проще?
|
|||
51
elevika
10.12.19
✎
15:23
|
(49) В каком виде? Что именно?
|
|||
52
elevika
10.12.19
✎
15:26
|
(50) Это бег по кругу. С этого я и начала. При файловом обмене все ОК. Через план обмена ПВД не отрабатывается, т.к. там стандартная обрабтка. А заменить стандратную на Произольный алгоритм не могу, т.к. мне надо, чтобы отрабатывалась текущая запись регистра, именно та, кот. была изменена и зарегина для переноса в др. базу
|
|||
53
mistеr
10.12.19
✎
15:40
|
(52) Ну хорошо, не в ПВД, а в ПКО ПередВыгрузкой.
|
|||
54
elevika
10.12.19
✎
15:45
|
(49)ПКО1 и ПКО2 почти одинаковы: источник=РС из базы-источника. Приемник=РС базы-приемника
Отличаются только одним ПКС "Свойство" в которое в каждом из правил я пишу ПередВыгрузкой свое значение Если в ПКО1 ПередВыгрузкой (да и ПослеВыгрузки пробовала) пишу вызов ПКО2 ВыгрузитьПоПравилу(Источник,,,,"КоллекцииВСвойство",,,); т.е. вроде должно отработаться ПКО2 и ПКО1 при обмене ошибка ВНЕШНЕЕ СОЕДИНЕНИЕ: Ошибка при загрузке данных: {Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(9604)}: Поле объекта не обнаружено (ДополнительныеСвойства) |
|||
55
elevika
10.12.19
✎
15:45
|
(53) см (54)
|
|||
56
Ёпрст
10.12.19
✎
15:51
|
(41) в КД нажимаешь сохранить правила, получаешь xml файлик, его кидаешь на файлопомойку, ссылку сюда
|
|||
57
elevika
10.12.19
✎
16:03
|
||||
58
mistеr
10.12.19
✎
16:03
|
(55) Ошибка где-то в правилах не означает, что подход не рабочий.
Еще раз опишу. 1. ПКО1 для ЗначенияСвойствОбъектов без источника. 2. ПКО2 с источником КомплектыИКоллекции и приемником что угодно, например ЗначенияСвойствОбъектов. В ПКО2 Перед выгрузкой 2 раза формируем структуру для ПКО1 и выгружаем ВыгрузитьПоПравилу() с ПКО1. Затем Отказ = Истина. |
|||
59
elevika
10.12.19
✎
16:23
|
(58) Так это уже подробнее. Не поняла "...2 раза формируем структуру для ПКО1..."
Зачем второй раз? И зачем структуру, если передаем источник? |
|||
60
mistеr
10.12.19
✎
16:24
|
(59) Тебе же нужно одну запись в две. Передаем не источник, а структуру приемника.
|
|||
61
elevika
10.12.19
✎
16:26
|
(60) да, это я затупила ))
|
|||
62
mistеr
10.12.19
✎
16:29
|
СтруктураДопСвойство = Новый Структура("Объект,Свойство,Значение", Источник.Номенклатура, "00125", Источник.Коллекция);
ВыгрузитьПоПравилу(СтруктураДопСвойство, , , , "ЗначенияСвойствОбъектов"); |
|||
63
runoff_runoff
10.12.19
✎
16:29
|
там же в ошибке явно сказано, что требуется РегистрСведенийНаборЗаписей, а не одна запись
перед выгрузкой в исходящих данных нужен массив структур, таблица значений или выборка запроса с нужными полями |
|||
64
elevika
10.12.19
✎
16:43
|
(58) та же ошибка
ВНЕШНЕЕ СОЕДИНЕНИЕ: Ошибка при загрузке данных: {Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(9604)}: Поле объекта не обнаружено (ДополнительныеСвойства) |
|||
65
hhhh
10.12.19
✎
16:48
|
(64) в (58) ничего нет про ДополнительныеСвойства, это вы уже сами всобачили.
|
|||
66
elevika
10.12.19
✎
16:50
|
(62) В ВыгрузитьПоПравилу Структуру не первым реквизитом (Источник), а третьим - ВходящиеДанные?
В этом случае ошибка из (64) |
|||
67
elevika
10.12.19
✎
16:50
|
(65) Так в том то и дело, что у меня нет никаких упоминаний "ДополнительныеСвойства"....
|
|||
68
elevika
10.12.19
✎
16:53
|
(63) это вы про ошибку из начального поста? Там другая причина. В плане обмена не отрабатывается ПВД со стандартной обработкой, поэтому в ПКО входящие данные не передавались
|
|||
69
elevika
10.12.19
✎
17:00
|
(62) в ПКО "ЗначенияСвойстОбъектов" для всех ПКС "ПолучитьИзВходящих"?
|
|||
70
runoff_runoff
10.12.19
✎
17:02
|
надо использовать функцию ВыгрузитьРегистр()
|
|||
71
elevika
10.12.19
✎
17:04
|
(70) У меня регистры совсем не совпадают по структуре
|
|||
72
hhhh
10.12.19
✎
17:07
|
(69) а у вас как? не для всех?
|
|||
73
elevika
10.12.19
✎
17:13
|
(72) для всех ((
|
|||
74
runoff_runoff
10.12.19
✎
17:15
|
Отбор = Новый ТаблицаЗначений;
Отбор.Колонки.Добавить("Имя"); Отбор.Колонки.Добавить("Значение"); Отбор.Колонки.Добавить("Использование"); Строки = Новый ТаблицаЗначений; Строки.Колонки.Добавить("Объект"); Строки.Колонки.Добавить("Свойство"); Строки.Колонки.Добавить("Значение"); СтруктураНабораЗаписей = Новый Структура("Отбор, Строки", Отбор, Строки); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка); Запрос.Текст = Запросы.ЗаказПоставщику_СвойстваГотовыхФильтров.Текст; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Отбор.Очистить(); СтрокаОтбор = Отбор.Добавить(); СтрокаОтбор.Имя = "Объект"; СтрокаОтбор.Значение = Выборка.Объект; СтрокаОтбор.Использование = Истина; СтрокаОтбор = Отбор.Добавить(); СтрокаОтбор.Имя = "Свойство"; СтрокаОтбор.Значение = Выборка.Свойство; СтрокаОтбор.Использование = Истина; Строки.Очистить(); ЗаполнитьЗначенияСвойств(Строки.Добавить(), Выборка); ВыгрузитьРегистр(СтруктураНабораЗаписей, , , Истина, "ДополнительныеСведения"); КонецЦикла; |
|||
75
hhhh
10.12.19
✎
17:15
|
(73) и для всех пкс задано свое пко, ПКО Номенклатура, ПКО коллекции?
|
|||
76
runoff_runoff
10.12.19
✎
17:16
|
а запрос вот такой простой
ВЫБРАТЬ ДополнительныеСведения.Объект, ДополнительныеСведения.Свойство, ДополнительныеСведения.Значение ИЗ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения ГДЕ {тут что-то, какие-то условия} |
|||
77
hhhh
10.12.19
✎
17:21
|
(76) читал (0) ? Там написано
В источнике есть независимый непериодический РС: изм. Номенклатура, ресурсы Комплект (спр. Комплеты) и Коллекция (спр. Коллекции). |
|||
78
elevika
10.12.19
✎
17:24
|
(75) нет, этого не требуется в данные момент. Все данные по ссылкам в базе есть. Но даже если прописать ПКО, ничего не меняется. Пробовалось неоднократно. Проблема не в этом ((
|
|||
79
hhhh
10.12.19
✎
17:27
|
(78) пко обязательно пропишите. а то Объект он составной реквизит, хрен его знает по какому правилу они будет преобразовываться. Также и Значение.
|
|||
80
hhhh
10.12.19
✎
17:30
|
(78) а точно там РС ЗначенияСвойствОбъектов? Вообще-то свойства обычно находятся в ТЧ ДополнительныеРеквизиты справочника Номенклатура.
|
|||
81
elevika
10.12.19
✎
17:31
|
(79) Значение - из двух разных справочников, т.ч. ПКО не пропишешь
Свойство - передаю код ПВХ, т.ч. тоже без ПКО |
|||
82
elevika
10.12.19
✎
17:33
|
(80) У нас наверное разные конфигурации. В моей - точно РС ЗначениеСвойстОбъектов. И в режиме файлового обмена то, что написано в (0) отбрабатывает на ура. Проблемы начались при использовании Плана обменов, т.к. там ПВД не отрабатываются
|
|||
83
hhhh
10.12.19
✎
17:37
|
(81) как это из двух.? Говорите же Номенклатура
|
|||
84
elevika
10.12.19
✎
17:38
|
(83) Номенклатура - это Объект, а значение - либо Коллекция, либо Комплект. Потому и надо две записи регистра из одной-источника
|
|||
85
scanduta
10.12.19
✎
18:00
|
(0)
(70) правильный ответ в (70) все делается просто |
|||
86
elevika
10.12.19
✎
18:07
|
(85) я так понимаю, чтобы ВыгрузитьВРегистр все значения реквизитов должны быть ссылками.
У меня в реквизит Свойство передается код ПВХ, который только при загрузке превращается в ссылку на объект ПВХ |
|||
87
mistеr
10.12.19
✎
18:53
|
(69) Нет, входящие данные здесь не нужны. Код (62) я использовал не раз.
|
|||
88
Ёпрст
10.12.19
✎
19:03
|
Так, для начала
https://cloud.mail.ru/public/3Gfw/98d8ymdwb |
|||
89
elevika
11.12.19
✎
09:59
|
(87) Этот вариант отрабатывает правила, но ошибка выдается на этапе загрузки объекта. В конфе-приемнике в стандартной Обработка.КонвертацияОбъектовИнформационныхБаз в функции ПрочитатьОбъект() есть строка:
Объект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); Вот на ней и затыкается, пишет, что ДополнительныеСвойства у объекта не обнаружены ДополнительныеСвойства - это свойство кот. есть почти у всех объектов конфигурации, в т.ч. и у всех рег. сведений. Не пойму, почему так происходит... |
|||
90
elevika
11.12.19
✎
10:01
|
(88) не поняла в чем отличие этого варианта от того, что я выложила... Может, я невнимательна, но не вижу.
|
|||
91
elevika
11.12.19
✎
10:42
|
(87) Через файловый обмен все отрабатывается отлично! А через план обменов - увы (см. ошибку в (89))
|
|||
92
Ёпрст
11.12.19
✎
10:46
|
(90) Но пробовала хоть ?
|
|||
93
elevika
19.12.19
✎
17:07
|
Вернулась к этой теме.
Вариант (62) в файловом варианте обмена отрабатывает. А в варианте через план обмена ошибка: ВНЕШНЕЕ СОЕДИНЕНИЕ: Ошибка при загрузке данных: {Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(9604)}: Поле объекта не обнаружено (ДополнительныеСвойства) Ошибка на стороне загрузки. ДополнительныеСвойства - это предопределенное свойство почти всех объектов конфы. У всех регистров оно точно есть. Не могу понять, что не так. Уже сломала голову. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |