![]() |
|
Перенос регистра сведений через КД с изменением структуры | ☑ | ||
---|---|---|---|---|
0
Dwarrior
13.02.19
✎
15:07
|
Здравствуйте!
Переношу из Источника регистр сведений с регистратором в Получатель, в регистр сведений без регистратора. Проблема в том, что из Источника выгружается РегистрСведенийЗапись, а нужно сделать РегистрСведенийНаборЗаписей, чтобы в Получателе все загрузилось успешно. Вопрос - как это сделать в Источнике, если там отбор по регистратору? Сейчас я ПередВыгрузкой разбираю исходный набор записей на отдельные записи и ВыгружаюПоПравилу(), набором с регистратором выгружается, но криво загружается в Получатель. Чего хочется - чтобы в выгруженном xml были объекты РегистрСВеденийНаборЗаписей с отбором по измерениям, как это существует в Получателе. Такой файл загрузится в Получателе. |
|||
1
hhhh
13.02.19
✎
15:10
|
(0) в правилах выгрузки произвольный алгоритм. и там запрос не по регистраторам, а по нужным измерениям.
|
|||
2
Dwarrior
13.02.19
✎
15:23
|
(1) Ну это обмен по правилам, работает ли запрос с произвольным алгоритмом в таких условиях? Из чего выбирать?
Запрос вернет набор полей - Номенклатура, Цена и пр. Сейчас я почти так и делаю - создаю Структуру с полями Номенклатура и Цена, заполняю и ВыгружаюПоПравилу(). Выгружается Запись, а не НаборЗаписей. То же самое происходит, если выгружать вместо Структуры РегистрСВеденийЗапись - в xml попадает Запись. По моему мнению, так происходит потому, что в Источнике ничего не известно про структуру регистра в Получателе, в правилах тоже ничего нет, только реквизиты линейным списком. Поэтому об отборе по Номенклатуре в Источнике ничего не известно. Может можно как-тио использовать многоуровневую структуру? Типа Запись = Новый Структура("Отбор,НаборЗаписей", Новый Структура("Номенклатура"), Новый Массив)? |
|||
3
Dwarrior
14.02.19
✎
09:38
|
Коллеги, апну пожалуй
|
|||
4
scanduta
14.02.19
✎
09:43
|
(1) +1
Делай произвольный алгоритм получай нужные тебе поля , формируй набор записей и используй процедуру ВыгрузитьРегистр(..) |
|||
5
Dwarrior
14.02.19
✎
10:04
|
(4) О! Кажется то что нужно, спасибо! Не знал, что есть такая функция:) Отпишусь по результату
|
|||
6
Dwarrior
14.02.19
✎
10:54
|
(5) Все получилось, спасибо! Именно к этому я и пришел - создать искусственную структуру, аналогичную набору записей в Получателе. Но не знал как сделать. Спасибо scanduta за подсказку!
Вот мой код, перед выгрузкой в ПВД регистра: //Формируем искуственную структуру-шаблон, аналогичную РегистрСВеденийНаборЗаписей Строки = Новый ТаблицаЗначений; Строки.Колонки.Добавить("Период"); Строки.Колонки.Добавить("Номенклатура"); Строки.Колонки.Добавить("ФорматМагазина"); Строки.Колонки.Добавить("РазрешеныЗакупки"); Строки.Колонки.Добавить("РазрешеныПродажи"); Строки.Колонки.Добавить("Активность"); Строки.Колонки.Добавить("Документ"); Строки.Добавить(); Отбор = Новый ТаблицаЗначений; Отбор.Колонки.Добавить("Имя"); Отбор.Колонки.Добавить("Значение"); Отбор.Колонки.Добавить("Использование"); СтрокаОтбора = Отбор.Добавить(); СтрокаОтбора.Имя = "Номенклатура"; СтрокаОтбора.Использование = Истина; СтрокаОтбора = Отбор.Добавить(); СтрокаОтбора.Имя = "ФорматМагазина"; СтрокаОтбора.Использование = Истина; ШаблонНЗ = Новый Структура("Отбор, Строки"); ШаблонНЗ.Отбор = Отбор; ШаблонНЗ.Строки = Строки; //Каждую запись из набора представляем как набор записей Для каждого Запись из Объект Цикл НЗ = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(ШаблонНЗ)); СтрокаОтбора = НЗ.Отбор.Найти("Номенклатура"); СтрокаОтбора.Значение = Запись.Номенклатура; СтрокаОтбора = НЗ.Отбор.Найти("ФорматМагазина"); СтрокаОтбора.Значение = Запись.ОбъектПланирования; СтрокаНабора = НЗ.Строки[0]; ЗаполнитьЗначенияСвойств(СтрокаНабора, Запись); СтрокаНабора.ФорматМагазина = Запись.ОбъектПланирования; СтрокаНабора.Документ = сокрлп(Объект.Отбор.Регистратор.Значение); ВыгрузитьРегистр(НЗ, , , , "АссортиментДТС"); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |