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