|
КД2 Перенос регистра сведений (СрезПоследних) в документ Корректировка записей регистров | ☑ | ||
|---|---|---|---|---|
|
0
St-Anger
09.02.22
✎
18:34
|
Добрый день.
Возникла необходимость перенести с базы УПП (источник) последние цены контрагентов в новую базу УПП (приемник). Сначала пробовал через обработку Выгрузка и загрузка данных XML, там есть возможность сделать срез на дату. Но подтягиваются документы установки цен со всеми связанными данными. А засорять новую базу ненужной информацией не хотелось бы. Поэтому решил организовать обмен через Универсальный обмен данными в формате XML. Для этого начал разрабатывать правило обмена данными. Идея была такая: произвольным запросом в ПВД получать срез цен на текущую дату и выгружать выборку в параметр "ВыборкаДанных". После чего перед загрузкой данных в приемник создавать документ "Корректировка записей регистров", передавать в параметры, и в ПКО после загрузки подставлять этот документ корректировки вместо регистратора. В ПКС регистратор отключен. При такой схеме выгрузка и загрузка проходит без ошибок, но в документе "Корректировка записей регистров" и в РС ЦеныНоменклатурыКонтрагентов остается только одна последняя запись. Скорее всего из-за того, что РС подчинен регистратору и при каждой загрузке записи РС идет перезапись регистратора с единственной записью РС (поправьте, если не так). То есть нужно записывать все записи РС сразу через набор записей. Поэтому решил собирать все записи РС в одну ТЗ: в конвертации перед загрузкой данных определил ТЗ с колонками, соответствующими полям РС, а в ПКО после загрузки записываю поля РС в ТЗ и отменяю загрузку в приемник (Отказ = Истина). В конвертации после загрузки данных создаю новый документ "Корректировка записей регистров", создаю набор записей РС ЦеныНоменклатурыКонтрагентов, устанавливаю отбор по регистратору (созданной корректировке), загружаю таблицу с движениями и записываю. Код взял с типовой обработки Свертка базы: ДокОст = сбСформироватьШапкуДокументаВводаОстатков(ТекРег, ДатаСвертки, ТипРегистра); НаборЗаписей = РегистрыСведений[ТекРег.Имя].СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ДокОст); НаборЗаписей.Загрузить(ТабДвиж); НаборЗаписей.Записать(); При такой схеме все проходит как нужно. Но что-то мне кажется, что можно сделать проще, без этих костылей. Поэтому и обращаюсь за помощью. |
|||
|
1
DrShad
09.02.22
✎
18:45
|
я бы создал документы Установка цен номенклатуры
|
|||
|
2
St-Anger
09.02.22
✎
18:49
|
(1) В каждом таком документе нужно будет дополнительно заполнять контрагентов и их типы цен и на каждого контрагента будет отдельный документ-регистратор. В общем больше головняка, а смысла в этом нет.
|
|||
|
3
DrShad
09.02.22
✎
18:52
|
сорри не увидел про контрагентов, тогда норм
|
| Форум | Правила | Описание | Секции | Поиск |