Всем привет!
Нужна помощь в реализации Обработки(БУ), которая должна рассчитывать себестоимость списанных товаров уже после проведения. Как реализовать сам механизм?
Я так понимаю, что берется Расходная за определенный период, Выборка идет по признаку Проведен=ИСТИНА, Далее выборка РегитраБУх.Остатки и там надо искать остатки на момент каждого документа, но... не выходит, это уже просто накиданный код. Нужен хотя бы сам механизм как наложить отбор в регистре по каждому документу. Нужен перебор или Выгрузка?
Процедура Себестоимость(НачалоПериода, КонецПериода) Экспорт
//Сообщить(НачалоПериода);//Передаю из формы Обработки
//Сообщить(КонецПериода);
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
| РасходнаяНакладнаяСписокНоменклатуры.Количество КАК КоличествоДок,
| РасходнаяНакладнаяСписокНоменклатуры.СрокГодности КАК СрокГодности,
| РасходнаяНакладнаяСписокНоменклатуры.Ссылка.МоментВремени
|ПОМЕСТИТЬ ДокТЧ
|ИЗ
| Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
|ГДЕ
| РасходнаяНакладнаяСписокНоменклатуры.Ссылка.Проведен = ИСТИНА
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| СрокГодности
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДокТЧ.Номенклатура КАК Номенклатура,
| ДокТЧ.СрокГодности,
| ДокТЧ.КоличествоДок,
| ЕСТЬNULL(УправленческийОстатки.КоличествоОстатокДт, 0) КАК КоличествоОстаток,
| ЕСТЬNULL(УправленческийОстатки.СуммаОстатокДт, 0) КАК СуммаОстаток
|ИЗ
| ДокТЧ КАК ДокТЧ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки(&МоментВремени, Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары), , ) КАК УправленческийОстатки
| ПО ДокТЧ.Номенклатура = УправленческийОстатки.Субконто1
|
|УПОРЯДОЧИТЬ ПО
| ДокТЧ.МоментВремени
|ИТОГИ ПО
| Номенклатура";
ПериодВремени = Новый Массив;
ПериодВремени.Добавить(НачалоПериода);
ПериодВремени.Добавить(КонецПериода);
Запрос.УстановитьПараметр("МоментВремени", ПериодВремени);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНоменклатура.Следующий() Цикл
// Вставить обработку выборки ВыборкаНоменклатура
ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
КонецЦикла;
КонецЦикла;
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
//Дт.ПрибылиУбытки Кт.Товары
// Движение = Движения.Управленческий.Добавить();
// Движение.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
// Движение.СчетКт = ПланыСчетов.Управленческий.Товары;
// Движение.Период = Дата;
// Движение.КоличествоКт = ВыборкаДетальныеЗаписи.КоличествоДок;
// Движение.Сумма = ВыборкаДетальныеЗаписи.КоличествоСписанногоТовара / ВыборкаДетальныеЗаписи.КоличествоСписанногоТовара;
// Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаДетальныеЗаписи.Номенклатура;
// Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.СрокГодности] = ВыборкаДетальныеЗаписи.СрокГодности;
КонецПроцедуры