Выгрузка в регистр сведений

1. SeverBaP 5 18.04.14 17:17 Сейчас в теме
Как реализовать выгрузку данных результата запроса в регистр сведений? Нужно передать остатки товаров в регистр сведений другой базы с очисткой этого регистра, есть примеры?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DJDUH 17 18.04.14 17:35 Сейчас в теме
3. SeverBaP 5 18.04.14 17:47 Сейчас в теме
(2) DJDUH, обыкновенный запрос, через алгоритмы\запросы (СКД нет)
4. SeverBaP 5 18.04.14 17:47 Сейчас в теме
(2) DJDUH, через конвертацию данных
5. Olga12 61 18.04.14 18:17 Сейчас в теме
1)Остатки товаров обычно хранятся в регистре накоплений.
2)Если все-таки в регистр сведений надо записывать то какой регистр независимый или подчиненный регистратору?
6. SeverBaP 5 18.04.14 23:43 Сейчас в теме
(5) kn, там нет оперативного учета, используется регистр сведений независимый.
Смотри вложение. Это правда урезанная версия но для примера сойдет.
7. Olga12 61 19.04.14 08:17 Сейчас в теме
Почистить независимый регистр сведений - если весь то
НаборЗаписей = РегистрыСведений.ЗдесьИмяРегистра.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
если с отбором то надо перед Записать, установить отбор.

Перенести можно так При выгрузке в ПВД обойдя результат запроса сформировать ИсходящиеДанные с полями, которые есть в РС,потом
использовать ВыгрузитьПоПравилу,
Более подробно:
1)Создать ПКО где объект источник - пусто, объект приемник - твой регистр сведений, допустим Правило конвертации будет называться "ИМяРегистраСведений"
2)Создать ПВД с ОбъектВыборки - пусто, способ выборки Произвольный алгоритм, Правило конвертации - что выше -"ИмяРегистраСведений".В ПВД в ПередВыгрузкой прописать обход результата запроса и заполнение Структуры - ИсходящиеДанные

Пока Выборка.Следующий() Цикл
ИсходящиеДанные = Новый Структура;
далее все нужные измерения,ресурсы,реквизиты надо заполнить(кроме Активности по-моему, у Активности в ПКС помтавить флажок отключить)далее пример, как основа
ИсходящиеДанные.Вставить("Имя", Выборка.Имя);
ИсходящиеДанные.Вставить("Фамилия", Выборка.Фамилия);
ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "ИМяРегистраСведений");

КонецЦикла

Может можно и короче если надо сразу очистить и создать записи

НаборЗаписей.Загрузить(Таб);
НаборЗаписей.Записать();
а Таб - из ИсходящихДанных
8. SeverBaP 5 25.04.14 15:40 Сейчас в теме
(7) kn, в ПВД прописал перед выгрузкой:
Запрос = Новый запрос();
Запрос.текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
               |	ВложенныйЗапрос.Склад КАК МестоХранения,
               |	ВложенныйЗапрос.Номенклатура КАК Номенклатура,
               |	СУММА(ВложенныйЗапрос.КоличествоОстаток - ВложенныйЗапрос.КоличествоВРезерве) КАК Количество
               |ИЗ
               |	(ВЫБРАТЬ
               |		ТоварыНаСкладахОстатки.Склад КАК Склад,
               |		ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
               |		ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
               |		0 КАК КоличествоВРезерве
               |	ИЗ
               |		РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, {(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры, (СерияНоменклатуры).* КАК СерияНоменклатуры}) КАК ТоварыНаСкладахОстатки
               |	
               |	ОБЪЕДИНИТЬ ВСЕ
               |	
               |	ВЫБРАТЬ
               |		ТоварыВРезервеНаСкладахОстатки.Склад,
               |		ТоварыВРезервеНаСкладахОстатки.Номенклатура,
               |		0,
               |		ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток
               |	ИЗ
               |		РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаКон, {(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры, (СерияНоменклатуры).* КАК СерияНоменклатуры, (ДокументРезерва).* КАК ДокументОснование}) КАК ТоварыВРезервеНаСкладахОстатки) КАК ВложенныйЗапрос
               |
               |СГРУППИРОВАТЬ ПО
               |	ВложенныйЗапрос.Склад,
               |	ВложенныйЗапрос.Номенклатура
               |
               |УПОРЯДОЧИТЬ ПО
               |	МестоХранения,
               |	Номенклатура";
Запрос.УстановитьПараметр("ДатаКон",КонецДня(ТекущаяДата()));
ВыборкаДанных  = запрос.Выполнить().Выбрать();
Пока ВыборкаДанных.Следующий() Цикл
	ИсходящиеДанные	= Новый Структура("МестоХранения,Номенклатура,Количество");
	ИсходящиеДанные.МестоХранения	= ВыборкаДанных.МестоХранения.Ссылка;
	ИсходящиеДанные.Номенклатура	= ВыборкаДанных.Номенклатура.Ссылка;
	ИсходящиеДанные.Количество		= ВыборкаДанных.Количество;
	ВыгрузитьПоПравилу( , , ИсходящиеДанные, , "ОстаткиТоваров");
КонецЦикла;
Показать

в свойствах необходимо что-то делать ПКО?
9. SeverBaP 5 25.04.14 16:24 Сейчас в теме
(7) kn, короче выпадает на ошибке:
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(14357)}: Ошибка при вызове метода контекста (НайтиПоТипу)
			СтрокаТаблицы.ОбъектВыборкиМетаданные = Метаданные.НайтиПоТипу(СтрокаТаблицы.ОбъектВыборки);
по причине:
Несоответствие типов (параметр номер '1')
это значит что объект выборки не указан
10. Olga12 61 25.04.14 16:38 Сейчас в теме
1)Запрос с группировками, может обходить надо по-другому.
2)В ПКО ОстаткиТоваров - должны быть только свойства МестоХранения,Номенклатура,Количество, если есть другие то их тоже надо прописывать(про Активность писалось выше)
3)В ПКО ОстаткиТоваров - ОбъектИсточник должен быть пуст,объектПриемник - заполнен
и у всех свойств этого ПКО (МестоХранения,Номенклатура,Количество)без флага Отключенный, должен быть указан флаг ПолучитьизВходящихДанных.
Вроде все.
11. SeverBaP 5 25.04.14 17:11 Сейчас в теме
(10) kn, что-то я не догоняю. Все сделал как ты сказал но почему-то опять на те же грабли.
12. Olga12 61 26.04.14 10:14 Сейчас в теме
1)Активность не надо передавать, надо у Активности в ПКС поставить флажок Отключить!
2)Запрос с группировками, на уровне группировка Склад - нет Номенклатуры, надо обходить по-другому

ВыборкаДанных = запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаДанных.Следующий() Цикл

ИсходящиеДанные = Новый Структура("МестоХранения,Номенклатура,Количество");
ИсходящиеДанные.МестоХранения = ВыборкаДанных.МестоХранения.Ссылка;

Выборка1 = ВыборкаДанных.Выбрать();

Пока Выборка1.Следующий() Цикл
ИсходящиеДанные.Номенклатура = ВыборкаДанных.Номенклатура.Ссылка;
ИсходящиеДанные.Количество = ВыборкаДанных.Количество;
ВыгрузитьПоПравилу( , , ИсходящиеДанные, , "ОстаткиТоваров");
КонецЦикла;

КонецЦикла;

3)Если после этого ошибка останется, отладчиком надо смотреть.
и проверить что у регистра больше нет других измерений, ресурсов, все заполняем в стуктуре.
13. SeverBaP 5 06.05.14 15:46 Сейчас в теме
(12) kn, Через обработку универсальный обмен это работает, но через обмен не хочет выпадает на:
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(14357)}: Ошибка при вызове метода контекста (НайтиПоТипу)
            СтрокаТаблицы.ОбъектВыборкиМетаданные = Метаданные.НайтиПоТипу(СтрокаТаблицы.ОбъектВыборки);
по причине:
Несоответствие типов (параметр номер '1')


наверно какие-то особенности есть через план обмена*?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот