| 
    
        
     
     | 
    
  | 
Выгрузка регистра накопления, конвертация данных | ☑ | ||
|---|---|---|---|---|
| 
    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) Спасибо! Заработало как надо, не задваивает при повторной загрузке!     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |