![]() |
|
Как использовать итог в полях запроса? | ☑ | ||
---|---|---|---|---|
0
vasmedv
06.10.14
✎
08:21
|
Есть в УПП отчет Анализ заказа. В нашем ООО его немного переделали. Но все равно, он сделан на макетах.
А теперь заказчик захотел, чтобы в отчете были стандартные настройки, типа группировок и т.д. Шеф сказал, что нужно переделать отчет на СКД или на универсальный отчет. Я выбрал переход на СКД. Но возникла проблемма. В начале отчета выводился статус Заказа. (Выполнено, Невыполнено) Для формирования этого статуса сначала выполняется первый запрос И проверяется условие: <code> Если ТипЗаказа = "Покупателя" Тогда ВыгрузкаНом = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам); Если (ВыгрузкаНом.Строки.Итог("ПринятоНаСклад") = 0) И (ВыгрузкаНом.Строки.Итог("Продано") = 0) И (ВыгрузкаНом.Строки.Итог("ОформленоПеремещение") = 0) И (ВыгрузкаНом.Строки.Итог("ПереданоИзЦеха") = 0) И (ВыгрузкаНом.Строки.Итог("ГотовоВЦехе") = 0) И (ВыгрузкаНом.Строки.Итог("Выдано") = 0) Тогда ОбластьЗначение.Параметры.СостояниеЗаказа = "заказ НЕ ВЫПОЛНЕН"; ИначеЕсли (Окр(ВыгрузкаНом.Строки.Итог("Заказано"),2) = Окр(ВыгрузкаНом.Строки.Итог("Снято")+ВыгрузкаНом.Строки.Итог("ПринятоНаСклад")+ВыгрузкаНом.Строки.Итог("Продано")+ВыгрузкаНом.Строки.Итог("Выдано"),2)) //ИЛИ (Окр(ВыгрузкаНом.Строки.Итог("Заказано"),2) = Окр(ВыгрузкаНом.Строки.Итог("Снято")+ВыгрузкаНом.Строки.Итог("Продано"),2)) //ИЛИ (Окр(ВыгрузкаНом.Строки.Итог("Заказано"),2) = Окр(ВыгрузкаНом.Строки.Итог("Снято")+ВыгрузкаНом.Строки.Итог("Выдано"),2)) Тогда ОбластьЗначение.Параметры.СостояниеЗаказа = "заказ ВЫПОЛНЕН"; Иначе ОбластьЗначение.Параметры.СостояниеЗаказа = "заказ ВЫПОЛНЕН ЧАСТИЧНО"; КонецЕсли; КонецЕсли; </code> Как можно в СКД посчитать итог: ВыгрузкаНом.Строки.Итог("..."), чтобы вывести статус заказа? P.S.: Я не хочу дважды выполнять одинаковые запросы, чтобы получить итог и результат запроса. |
|||
1
b_ru
06.10.14
✎
08:59
|
>>P.S.: Я не хочу дважды выполнять одинаковые запросы, чтобы получить итог и результат запроса.
Делаешь запрос без итогов, складываешь во временную таблицу. Потом еще одним запросом считаешь итоги по этой таблице. Двойной работы не будет. |
|||
2
vasmedv
06.10.14
✎
10:19
|
Мысль интересная, надо подумать, сообразить. Полной картины не сформировал.
|
|||
3
vasmedv
06.10.14
✎
12:59
|
Создал новый внешний отчет "АнализПокупателейСКД_Новый".
Открыл схему компоновки данных. Добавил набор данных - запрос. Вставил запрос: <code> ВЫБРАТЬ РАЗРЕШЕННЫЕ ЗаказыПокупателей.Номенклатура КАК Номенклатура, ЗаказыПокупателей.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХраненияОстатков, ЗаказыПокупателей.Номенклатура.ВестиУчетПоХарактеристикам КАК НоменклатураВестиУчетПоХарактеристикам, ЗаказыПокупателей.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, СУММА(ВЫБОР КОГДА ЗаказыПокупателей.Регистратор = &Заказ ТОГДА ЗаказыПокупателей.Количество ИНАЧЕ 0 КОНЕЦ * 1) КАК Заказано, СУММА(ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ЗаказыПокупателей.Регистратор) <> ТИПЗНАЧЕНИЯ(ЗНАЧЕНИЕ(Документ.РеализацияТоваровУслуг.ПустаяСсылка)) И ЗаказыПокупателей.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) И ЗаказыПокупателей.Регистратор <> &Заказ ТОГДА -1 * ЗаказыПокупателей.Количество ИНАЧЕ 0 КОНЕЦ * 1) КАК Снято, СУММА(ВЫБОР КОГДА ЗаказыПокупателей.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА ЗаказыПокупателей.Количество ИНАЧЕ -1 * ЗаказыПокупателей.Количество КОНЕЦ * 1) КАК КонОстПоЗаказу ПОМЕСТИТЬ ВТЗаказыПокупателей ИЗ РегистрНакопления.ЗаказыПокупателей КАК ЗаказыПокупателей ГДЕ ЗаказыПокупателей.ЗаказПокупателя = &Заказ СГРУППИРОВАТЬ ПО ЗаказыПокупателей.Номенклатура, ЗаказыПокупателей.ХарактеристикаНоменклатуры, ЗаказыПокупателей.Номенклатура.ЕдиницаХраненияОстатков, ЗаказыПокупателей.Номенклатура.ВестиУчетПоХарактеристикам ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ ЗаказыПокупателей.Номенклатура КАК Номенклатура, ЗаказыПокупателей.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХраненияОстатков, ЗаказыПокупателей.Номенклатура.ВестиУчетПоХарактеристикам КАК НоменклатураВестиУчетПоХарактеристикам, ЗаказыПокупателей.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, СУММА(ЗаказыПокупателей.Заказано) КАК Заказано, СУММА(ЗаказыПокупателей.Снято) КАК Снято, СУММА(РазмещениеЗаказовПокупателей.КоличествоОстаток * 1) КАК ОсталосьСделать, СУММА(-1 * ТоварыКПолучениюНаСкладыОстатки.КоличествоОстаток * 1) КАК ПереданоИзЦеха, СУММА(ТоварыВРезервеНаСкладахОстаткиГотово.КоличествоОстаток * 1) КАК ГотовоВЦехе, СУММА(ТоварыВРезервеНаСкладахОстаткиПринято.КоличествоОстаток * 1) КАК ПринятоНаСклад, СУММА(ТоварыКПередачеСоСкладовОстаткиПродано.КоличествоОстаток * 1) КАК Продано, СУММА(ЗаказыПокупателей.КонОстПоЗаказу) КАК КонОстПоЗаказу, СУММА(ТоварыКПередачеСоСкладовОбороты.КоличествоРасход * 1) КАК Выдано, СУММА(ТоварыКПередачеСоСкладовОстаткиОформленоПеремещение.КоличествоОстаток * 1) КАК ОформленоПеремещение ИЗ ВТЗаказыПокупателей КАК ЗаказыПокупателей ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(&ДатаАнализа, ЗаказПокупателя = &Заказ) КАК РазмещениеЗаказовПокупателей ПО ЗаказыПокупателей.Номенклатура = РазмещениеЗаказовПокупателей.Номенклатура И ЗаказыПокупателей.ХарактеристикаНоменклатуры = РазмещениеЗаказовПокупателей.ХарактеристикаНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПолучениюНаСклады.Остатки( &ДатаАнализа, ДокументРезерва = &Заказ И (Склад.Подразделение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка) ИЛИ Склад.Подразделение.ВидПодразделения <> ЗНАЧЕНИЕ(Перечисление.ВидыПодразделений.ОсновноеПроизводство) И Склад.Подразделение.ВидПодразделения <> ЗНАЧЕНИЕ(Перечисление.ВидыПодразделений.ВспомогательноеПроизводство))) КАК ТоварыКПолучениюНаСкладыОстатки ПО ЗаказыПокупателей.ХарактеристикаНоменклатуры = ТоварыКПолучениюНаСкладыОстатки.ХарактеристикаНоменклатуры И ЗаказыПокупателей.Номенклатура = ТоварыКПолучениюНаСкладыОстатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки( &ДатаАнализа, ДокументРезерва = &Заказ И Склад.Подразделение <> ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка) И (Склад.Подразделение.ВидПодразделения = ЗНАЧЕНИЕ(Перечисление.ВидыПодразделений.ОсновноеПроизводство) ИЛИ Склад.Подразделение.ВидПодразделения = ЗНАЧЕНИЕ(Перечисление.ВидыПодразделений.ВспомогательноеПроизводство))) КАК ТоварыВРезервеНаСкладахОстаткиГотово ПО ЗаказыПокупателей.Номенклатура = ТоварыВРезервеНаСкладахОстаткиГотово.Номенклатура И ЗаказыПокупателей.ХарактеристикаНоменклатуры = ТоварыВРезервеНаСкладахОстаткиГотово.ХарактеристикаНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки( &ДатаАнализа, ДокументРезерва = &Заказ И (Склад.Подразделение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка) ИЛИ Склад.Подразделение.ВидПодразделения <> ЗНАЧЕНИЕ(Перечисление.ВидыПодразделений.ОсновноеПроизводство) И Склад.Подразделение.ВидПодразделения <> ЗНАЧЕНИЕ(Перечисление.ВидыПодразделений.ВспомогательноеПроизводство))) КАК ТоварыВРезервеНаСкладахОстаткиПринято ПО ЗаказыПокупателей.Номенклатура = ТоварыВРезервеНаСкладахОстаткиПринято.Номенклатура И ЗаказыПокупателей.ХарактеристикаНоменклатуры = ТоварыВРезервеНаСкладахОстаткиПринято.ХарактеристикаНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки( &ДатаАнализа, ТИПЗНАЧЕНИЯ(ДокументПередачи) = ТИПЗНАЧЕНИЯ(ЗНАЧЕНИЕ(Документ.РеализацияТоваровУслуг.ПустаяСсылка)) И ДокументПередачи.Сделка = &Заказ) КАК ТоварыКПередачеСоСкладовОстаткиПродано ПО ЗаказыПокупателей.Номенклатура = ТоварыКПередачеСоСкладовОстаткиПродано.Номенклатура И ЗаказыПокупателей.ХарактеристикаНоменклатуры = ТоварыКПередачеСоСкладовОстаткиПродано.ХарактеристикаНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки( &ДатаАнализа, ТИПЗНАЧЕНИЯ(ДокументПередачи) = ТИПЗНАЧЕНИЯ(ЗНАЧЕНИЕ(Документ.ПеремещениеТоваров.ПустаяСсылка)) И ДокументРезерва = &Заказ) КАК ТоварыКПередачеСоСкладовОстаткиОформленоПеремещение ПО ЗаказыПокупателей.Номенклатура = ТоварыКПередачеСоСкладовОстаткиОформленоПеремещение.Номенклатура И ЗаказыПокупателей.ХарактеристикаНоменклатуры = ТоварыКПередачеСоСкладовОстаткиОформленоПеремещение.ХарактеристикаНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.Обороты( , &ДатаАнализа, , ТИПЗНАЧЕНИЯ(ДокументПередачи) = ТИПЗНАЧЕНИЯ(ЗНАЧЕНИЕ(Документ.РеализацияТоваровУслуг.ПустаяСсылка)) И ДокументПередачи.Сделка = &Заказ) КАК ТоварыКПередачеСоСкладовОбороты ПО ЗаказыПокупателей.Номенклатура = ТоварыКПередачеСоСкладовОбороты.Номенклатура И ЗаказыПокупателей.ХарактеристикаНоменклатуры = ТоварыКПередачеСоСкладовОбороты.ХарактеристикаНоменклатуры СГРУППИРОВАТЬ ПО ЗаказыПокупателей.Номенклатура, ЗаказыПокупателей.Номенклатура.ЕдиницаХраненияОстатков, ЗаказыПокупателей.Номенклатура.ВестиУчетПоХарактеристикам, ЗаказыПокупателей.ХарактеристикаНоменклатуры </code> Это был слегка измененный запрос из функции "ПолучитьРезультатЗапросаПоНоменклатуре(Заказ, ДатаАнализа);" В нем уже есть временная таблица. Что вставлять во временную таблицу? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |