|
Выгрузка регистра накопления, конвертация данных | ☑ | ||
---|---|---|---|---|
0
Mary01
18.05.22
✎
07:49
|
Привет всем!
Подскажите пожалуйста как исправить ошибку. Задача - выгрузить данные регистра накопления НачисленияУдержанияПоСотрудникам из одной базы ЗУП в другую, документ регистратор переносить не нужно, но регистр не записывает данные без регистратора, поэтому в качестве регистратора создаю документ ПереносДанных. В ПВД регистра НачисленияУдержанияПоСотрудникам в процедуре ПередОбработкой я написала: Запрос = Новый Запрос( "ВЫБРАТЬ | НачисленияУдержанияПоСотрудникам.Период КАК Период, | НачисленияУдержанияПоСотрудникам.Регистратор КАК Регистратор, | НачисленияУдержанияПоСотрудникам.НомерСтроки КАК НомерСтроки, | НачисленияУдержанияПоСотрудникам.Активность КАК Активность, | НачисленияУдержанияПоСотрудникам.Организация КАК Организация, | НачисленияУдержанияПоСотрудникам.ФизическоеЛицо КАК ФизическоеЛицо, .... тут еще куча реквизитов | НачисленияУдержанияПоСотрудникам.МестоПолученияДохода КАК МестоПолученияДохода, | НачисленияУдержанияПоСотрудникам.ВидДоходаИсполнительногоПроизводства КАК ВидДоходаИсполнительногоПроизводства |ИЗ | РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК НачисленияУдержанияПоСотрудникам |ГДЕ | НачисленияУдержанияПоСотрудникам.Период МЕЖДУ &ДатаНачала И &ДатаОкончания | |итоги ПО | НачисленияУдержанияПоСотрудникам.Регистратор"); Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ДатаНачала)); Запрос.УстановитьПараметр("ДатаОкончания", КОнецДня(ДатаОкончания)); Таб = Новый ТаблицаЗначений(); Таб.Колонки.Добавить("Активность"); Таб.Колонки.Добавить("ВидДоходаИсполнительногоПроизводства"); Таб.Колонки.Добавить("ГруппаНачисленияУдержанияВыплаты"); Таб.Колонки.Добавить("ДанныеМежрасчетногоПериода"); ... тут еще куча колонок Таб.Колонки.Добавить("ФизическоеЛицо"); выборкаРег = запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); пока выборкаРег.Следующий() цикл выборка = выборкаРег.Выбрать(); пока выборка.Следующий() цикл Стр = Таб.Добавить(); ЗаполнитьЗначенияСвойств(Стр,выборка); КонецЦикла; ТаблицаИменРегистров = Новый ТаблицаЗначений(); ТаблицаИменРегистров.Колонки.Добавить("Имя"); ТаблицаИменРегистров.Колонки.Добавить("Представление"); СтрокаТаблицы = ТаблицаИменРегистров.Добавить(); СтрокаТаблицы.Имя = "НачисленияУдержанияПоСотрудникам"; СтрокаТаблицы.Представление = "Начисления удержания по сотрудникам"; Регистратор = выборкаРег.Регистратор; ИсходящиеДанные = Новый Структура; ИсходящиеДанные.Вставить("Номер", Регистратор.Номер); ИсходящиеДанные.Вставить("Дата", Регистратор.Дата); ИсходящиеДанные.Вставить("ПериодРегистрации", Регистратор.Дата); ИсходящиеДанные.Вставить("Организация", Регистратор.Организация); ИсходящиеДанные.Вставить("ТаблицаРегистровНакопления", ТаблицаИменРегистров); ИсходящиеДанные.Вставить("НачисленияУдержанияПоСотрудникам", Таб); ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "ПереносДанных"); Таб.Очистить(); КонецЦикла; При выгрузке ошибка: Ошибка получения значения свойства объекта (по имени свойства источника) ПКО = ПереносДанных (Документ: Перенос данных) ПКС = 1 (Дата --> Дата) Объект = (Не определено) СвойствоПриемника = Дата (Дата) ОписаниеОшибки = Получение элемента по индексу для значения не определено ПозицияМодуля = {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9948)}:Значение = ОбъектДляПолученияДанных[ИмяСвойства]; {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(10495)}:ПолучитьЗначениеСвойства(Значение, ОбъектКоллекции, ПКО, ПКС, ВходящиеДанные, Источник); {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1924)}:ВыгрузитьСвойства(Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКО, ПКО.СвойстваПоиска, {(114)}:ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "ПереносДанных"); {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(11256)}:Выполнить(Правило.ПередОбработкой); {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(11440)}:ВыгрузитьДанныеПоПравилу(ПравилоВыгрузки); {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(11435)}:ОбработатьПравилаВыгрузки(ПравилоВыгрузки.Строки, СоответствиеУзловПланаОбменаИСтрокВыгрузки); {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(13430)}:ОбработатьПравилаВыгрузки(КоллекцияПравилаВыгрузки().Строки, СоответствиеУзловИПравилВыгрузки); {Обработка.УниверсальныйОбменДаннымиXML.Форма.УправляемаяФорма.Форма(1616)}:ОбъектДляСервера.ВыполнитьВыгрузку(); |
|||
1
Mary01
18.05.22
✎
08:02
|
Дата --> Дата
И такая ситуация не только с реквизитом Дата, но и Номер, Организация и остальные реквизиты шапки |
|||
2
Ёпрст
18.05.22
✎
09:34
|
(0)
в самом пко хоть стоят галки - получать из входящих данных ? брать последний документ в качестве регистратора..моветон |
|||
3
Ёпрст
18.05.22
✎
09:35
|
создавать кучку колонок - тоже, когда оно само, через запрос.выполнить().выгрузить() умеет, только выкинуть итоги оттуда и регистратор
|
|||
4
hhhh
18.05.22
✎
11:08
|
(3) регистратор же тоже должен быть в наборе.
|
|||
5
Ёпрст
18.05.22
✎
12:49
|
(4) И ? она всё равно берёт другой вид документ-а, в самом этом наборе он не нужен, проще задать его фиксированным параметром.
|
|||
6
Mary01
18.05.22
✎
12:49
|
Исправила: в синхронизации свойств нужно было поставить галочки "Получить из входящих данных".
|
|||
7
Mary01
18.05.22
✎
12:49
|
(2) Да, спасибо, так сделала и заработало.
А какой тогда документ использовать? |
|||
8
Mary01
18.05.22
✎
12:51
|
(4) добавлю, а где его обрабатывать после?
|
|||
9
Mary01
18.05.22
✎
12:51
|
(5) Где это задается и как потом использовать?
|
|||
10
Mary01
18.05.22
✎
12:52
|
(3) тут согласна.
|
|||
11
Ёпрст
18.05.22
✎
12:58
|
(9) если это одноразовый обмен, то забудь
|
|||
12
Ёпрст
18.05.22
✎
13:00
|
если нет, то ты каждый раз своим кодом в (0) будешь создавать новый док "переносданных" из последнего регистратора..ну и задвоишь/затроишь движуху
|
|||
13
Mary01
18.05.22
✎
13:00
|
Как присвоить документу УИД такой же как в базе-источнике? Допустим, в источнике был документ НачислениеЗарплаты, а в приемнике создан ПереносДанных, как второму документу присвоить УИД первого? В исходящие данные добавила:
ИсходящиеДанные.Вставить("УИД", Регистратор.УникальныйИдентификатор()); |
|||
14
Mary01
18.05.22
✎
13:00
|
(11) не одноразовый
|
|||
15
Ёпрст
18.05.22
✎
13:02
|
(14) и период, поди, как нарастающий со времен цара гороха ?
|
|||
16
Mary01
18.05.22
✎
13:03
|
(12) поэтому хочу присвоить переносу данных УИД из источника, но непонятно как
|
|||
17
Mary01
18.05.22
✎
13:04
|
(15) почему? период любой задать можно, там параметры - ДатаНачала, ДатаОкончания, отбор в пределах этого периода
|
|||
18
Aleksey
18.05.22
✎
13:10
|
(16) например http://unnoesso.blogspot.com/2021/10/21-guid.html
|
|||
19
Ёпрст
18.05.22
✎
13:17
|
(18) ну, ей не совсем то надо, хотя, можно и это решение использовать.
Ей надо всегда писать в один док, насколько я понял из (0) Проще гуид дока хранить параметром и привет, ну или при загрузке искать тот единственный док и его использовать как регистратор. |
|||
20
Ёпрст
18.05.22
✎
13:19
|
Хотя, непонятна цель такой "свёртки", писало бы сразу один в один в базу, ну или хотя бы, в запросе в (0) сворачивала показатели по всем измерениям.
|
|||
21
Mary01
18.05.22
✎
13:35
|
(19) нет, док не один, сколько документов в источнике столько и в приемнике
|
|||
22
Mary01
18.05.22
✎
13:39
|
(20) Цель - выгружать данные по начислениям из нескольких баз в одну. В документах-регистраторах много данных, которые в новой базе не нужны, от этих документов нужна только дата, номер, организация (чтоб понимать из какого источника документ пришел) и его движения по начислениям
|
|||
23
hhhh
18.05.22
✎
14:04
|
(21) тогда передавай регистратор тоже по обмену. перенос документа твой регистратор в документ Перенос данных. И (4) тогда пойдет.
|
|||
24
Mary01
18.05.22
✎
14:15
|
(23) что имеется в виду?
ИсходящиеДанные.Вставить("Объект", Регистратор); или ВыгрузитьПоПравилу(Регистратор, , ИсходящиеДанные, , "ПереносДанных"); или http://unnoesso.blogspot.com/2021/10/21-guid.html ? |
|||
25
hhhh
18.05.22
✎
14:18
|
(24) ВыгрузитьПоПравилу(Регистратор, , ИсходящиеДанные, , "ПереносДанных");
и в правиле заполнить источник |
|||
26
Mary01
18.05.22
✎
14:55
|
(25) Спасибо! Заработало как надо, не задваивает при повторной загрузке!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |