КД2 Перенос остатков с регистра Хозрасчетный
Добрый день! Есть задача перенести остатки с регистра бухгалтерии Хозрасчетный в Приемник в виде документов Отприходование товаров. Учет ведется по нескольким организациям, кучу подразделений и складов. Создаю ПКО с пустым Источником в ПВД описываю алгоритм ПереОбработкой
Вопрос: как создать в Приемнике столько документов Оприходования товаров сколько остатков в разрезе Организации, Подразделения и Склад
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ДатаОстатков", Новый Граница(ДатаВыгрузки, ВидГраницы.Включая));
Запрос.УстановитьПараметр("СписокСчетов", СписокСчетов);
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
| ХозрасчетныйОстатки.Субконто2 КАК Склад,
| ХозрасчетныйОстатки.Организация КАК Организация,
| ХозрасчетныйОстатки.Подразделение КАК Подразделение,
| ХозрасчетныйОстатки.СуммаОстаток КАК Сумма,
| ХозрасчетныйОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОстатков, Счет В (&СписокСчетов), , ) КАК ХозрасчетныйОстатки";
ПоказатьВопрос: как создать в Приемнике столько документов Оприходования товаров сколько остатков в разрезе Организации, Подразделения и Склад
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Выгружать отдельно с помощью ВыгрузитьПоПравилу() по каждой комбинации.
Сделайте Итоги по Организации + подразделению + Складу и обходите выборку по группировкам.
Сделайте Итоги по Организации + подразделению + Складу и обходите выборку по группировкам.
ВыборкаПоОрганизации = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоОрганизации.Следующий() Цикл
ВыборкаПоПодразделениям = ВыборкаПоОрганизации.Выбрать(ОбходРезульататЗапроса.ПоГруппировкам);
Пока ВыборкаПоПодразделениям.Следующий() Цикл
ВыборкаПоСкладам = ВыборкаПоПодразделениям.Выбрать();
Пока ВыборкаПоСкладам.Следующий() Цикл
ВыгрузитьПоПравилу()
КонецЦикла;
КонецЦикла;
КонецЦикла;
Показать
(3) На сколько понял вопрос: нет. ПВД для элементов справочников делать нет необходимости. Нужны ПКО/ПКС для этих справочников, ВыгрузитьПоПравилу() использует именно ПКО/ПКС для выгрузки самих значений.
ПВД нужно только в том случае, если вы собираетесь отдельно выгрузить элементы какого-то конкретного справочника путем выбора его в настройках УниверсальногоОбмена перед выгрузкой данных.
ПВД нужно только в том случае, если вы собираетесь отдельно выгрузить элементы какого-то конкретного справочника путем выбора его в настройках УниверсальногоОбмена перед выгрузкой данных.
ДатаВыгрузки = КонецДня(Параметры.ДатаОкончания);
ИсходящиеДанные = Новый Структура;
СписокСчетов = Новый СписокЗначений;
СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.05.1"));
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ДатаОстатков", Новый Граница(ДатаВыгрузки, ВидГраницы.Включая));
Запрос.УстановитьПараметр("СписокСчетов", СписокСчетов);
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
| ХозрасчетныйОстатки.Субконто2 КАК Склад,
| ХозрасчетныйОстатки.Организация КАК Организация,
| ХозрасчетныйОстатки.Подразделение КАК Подразделение,
| ХозрасчетныйОстатки.СуммаОстаток КАК Сумма,
| ХозрасчетныйОстатки.КоличествоОстаток КАК Количество,
| ХозрасчетныйОстатки.СуммаОстаток/ХозрасчетныйОстатки.КоличествоОстаток КАК Цена
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОстатков, Счет В (&СписокСчетов), , ) КАК ХозрасчетныйОстатки
|ИТОГИ ПО
| Организация,
| Подразделение,
| Склад";
ОстаткиТоваров = Новый ТаблицаЗначений;
ОстаткиТоваров.Колонки.Добавить("Количество");
ОстаткиТоваров.Колонки.Добавить("Номенклатура");
ОстаткиТоваров.Колонки.Добавить("Сумма");
ОстаткиТоваров.Колонки.Добавить("Цена");
ВыборкаПоОрганизации = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоОрганизации.Следующий() Цикл
ВыборкаПоПодразделению = ВыборкаПоОрганизации.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоПодразделению.Следующий() Цикл
ВыборкаПоСкладам = ВыборкаПоПодразделению.Выбрать();
Пока ВыборкаПоСкладам.Следующий() Цикл
Строка = ОстаткиТоваров.Добавить();
Строка.Номенклатура = ВыборкаПоСкладам.Номенклатура;
Строка.Количество = ВыборкаПоСкладам.Количество;
Строка.Сумма = ВыборкаПоСкладам.Сумма;
Строка.Цена = ВыборкаПоСкладам.Цена;
ИсходящиеДанные.Вставить("Склад", ВыборкаПоСкладам.Склад);
КонецЦикла;
ИсходящиеДанные.Вставить("Дата", ДатаВыгрузки);
ИсходящиеДанные.Вставить("Организация", ВыборкаПоОрганизации.Организация);
ИсходящиеДанные.Вставить("Подразделение", ВыборкаПоПодразделению.Подразделение);
ИсходящиеДанные.Вставить("Комментарий", "Перенос остатков товаров из Бухгалтерии на " + Строка(ДатаВыгрузки));
ИсходящиеДанные.Вставить("Товары", ОстаткиТоваров);
ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "ВводНачальныхОстатков");
КонецЦикла;
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот