|
Текст запроса для построителя, фигурные скобки не понятно как подправить | ☑ | ||
---|---|---|---|---|
0
e053nk
21.03.18
✎
11:39
|
УТ 10.3, внешний отчет на базе стандартного отчета "Продажи".
В нем указан свой текст построителя запроса: /code ТекстЗапроса = "ВЫБРАТЬ | ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток,0) КАК Остаток, | ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,0) КАК ОстатокРезерв, | ПродажиОбороты.ДокументПродажи, | ПродажиОбороты.Контрагент, | ПродажиОбороты.КоличествоОборот КАК КоличествоОборот, | ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот, | ПродажиОбороты.СтоимостьБезСкидокОборот КАК СтоимостьБезСкидокОборот, | ПродажиОбороты.НДСОборот КАК НДСОборот, | ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоЕдиницОтчетов, | ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоБазовыхЕдиниц, | ВЫБОР | КОГДА ПродажиОбороты.СтоимостьБезСкидокОборот = 0 | ТОГДА 0 | ИНАЧЕ (ПродажиОбороты.СтоимостьБезСкидокОборот - ПродажиОбороты.СтоимостьОборот) / ПродажиОбороты.СтоимостьБезСкидокОборот * 100 | КОНЕЦ КАК ПроцентСкидки, | ПродажиОбороты.СтоимостьБезСкидокОборот - ПродажиОбороты.СтоимостьОборот КАК СуммаСкидки, | ПродажиОбороты.Номенклатура, | ПродажиОбороты.СтоимостьОборот / ПродажиОбороты.КоличествоОборот КАК Цена, | ПродажиОбороты.СтоимостьБезСкидокОборот / ПродажиОбороты.КоличествоОборот КАК ЦенаБезСкидок |{ВЫБРАТЬ | Остаток, | ОстатокРезерв, | ДокументПродажи.*, | Контрагент.*, | КоличествоОборот, | СтоимостьОборот, | СтоимостьБезСкидокОборот, | НДСОборот, | КоличествоЕдиницОтчетов, | КоличествоБазовыхЕдиниц, | ПроцентСкидки, | СуммаСкидки, | Номенклатура.*, | Цена, | ЦенаБезСкидок} |ИЗ | РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, ,) КАК ПродажиОбороты | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон,) КАК ТоварыНаСкладахОстатки | ПО ПродажиОбороты.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаКон, ) КАК ТоварыВРезервеНаСкладахОстатки | ПО ПродажиОбороты.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура |ГДЕ | ПродажиОбороты.КоличествоОборот <> 0 |{ГДЕ | ТоварыНаСкладахОстатки.Номенклатура.*, | ТоварыНаСкладахОстатки.КоличествоОстаток, | ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, | ПродажиОбороты.ДокументПродажи.*, | ПродажиОбороты.Контрагент.*, | ПродажиОбороты.КоличествоОборот, | ПродажиОбороты.СтоимостьОборот, | ПродажиОбороты.СтоимостьБезСкидокОборот, | ПродажиОбороты.НДСОборот, | (ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент) КАК КоличествоЕдиницОтчетов, | (ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК КоличествоБазовыхЕд, | (ВЫБОР | КОГДА ПродажиОбороты.СтоимостьБезСкидокОборот = 0 | ТОГДА 0 | ИНАЧЕ (ПродажиОбороты.СтоимостьБезСкидокОборот - ПродажиОбороты.СтоимостьОборот) / ПродажиОбороты.СтоимостьБезСкидокОборот * 100 | КОНЕЦ) КАК ПроцентСкидки, | (ПродажиОбороты.СтоимостьБезСкидокОборот - ПродажиОбороты.СтоимостьОборот) КАК СуммаСкидки, | ПродажиОбороты.Номенклатура.*, | ПродажиОбороты.ЗаказПокупателя.*, | ПродажиОбороты.Подразделение.*, | ПродажиОбороты.Организация.*, | (ПродажиОбороты.СтоимостьОборот / ПродажиОбороты.КоличествоОборот) КАК Цена, | (ПродажиОбороты.СтоимостьБезСкидокОборот / ПродажиОбороты.КоличествоОборот) КАК ЦенаБезСкидок} |{УПОРЯДОЧИТЬ ПО | Контрагент.*, | Номенклатура.*, | ДокументПродажи.*, | ПродажиОбороты.Организация.*} |ИТОГИ | СУММА(Остаток), | СУММА(ОстатокРезерв), | СУММА(КоличествоОборот), | СУММА(СтоимостьОборот), | СУММА(СтоимостьБезСкидокОборот), | СУММА(НДСОборот), | СУММА(КоличествоЕдиницОтчетов), | СУММА(КоличествоБазовыхЕдиниц), | МАКСИМУМ(ПроцентСкидки), | СУММА(СуммаСкидки), | СУММА(Цена), | СУММА(ЦенаБезСкидок) |ПО | ОБЩИЕ |{ИТОГИ ПО | ДокументПродажи.*, | Контрагент.*, | Номенклатура.*} |АВТОУПОРЯДОЧИВАНИЕ"; /code В результате выводится информация по продажам, только тех позиции,которые есть на остатках на конечную дату отчета.. Нужно исправить так что бы выводились все продажи,включая и позиции с нулевыми остатками. Пробовал ,согласно http://catalog.mista.ru/public/185880/ заменить блок условий витруальных таблиц на /code |ИЗ | РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, ,{Номенклатура.* КАК НоменклатураОтбор} ) КАК ПродажиОбороты | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон,{Номенклатура.* КАК НоменклатураОтбор} ) КАК ТоварыНаСкладахОстатки | ПО ПродажиОбороты.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаКон,{Номенклатура.* КАК НоменклатураОтбор} ) КАК ТоварыВРезервеНаСкладахОстатки | ПО ПродажиОбороты.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура /code ничего не изменилось. Как нужно подправить код, что бы получить все продажи (и нулевые остатки тоже)? И еще этот отчет выполняется ооооооооооочень долго, несколько минут крутит(за любой период). Создается впечатление что он все продажи сначала себе запихивает, а затем отфильтровывает все необходимое. Но , как я понимаю, условие указано верно (Номенклатура в группе из списка). Стандартный отчет продажи с этой же аналитикой и периодом- сек 10 выполняется |
|||
1
savaB
21.03.18
✎
11:54
|
ПОЛНОЕ СОЕДИНЕНИЕ
|
|||
2
FIXXXL
21.03.18
✎
11:57
|
|{ГДЕ
| ТоварыНаСкладахОстатки.Номенклатура.*, исправь на |{ГДЕ | ПродажиОбороты.Номенклатура.*, |
|||
3
e053nk
21.03.18
✎
12:09
|
(2) В тексте эта строка есть, ниже только по конструкции "ГДЕ. Закомментил строку- жду выполнение отчет в, что то вообще тормозит отчет
|
|||
4
Михаил Козлов
21.03.18
✎
12:11
|
Или вообще убрать регистры ТоварыНаСкладах и ТоварыВРезерве.
Например, взять типовой отчет по продажам. |
|||
5
e053nk
21.03.18
✎
12:26
|
(2) После закомментирования строки
| ТоварыНаСкладахОстатки.Номенклатура.*, в секции"ГДЕ" -отчте сформировался ноормально, вышли и нулевые остатки. Спасибо большое! Теперь , если можно, с точки теории работы построителя запроса ,объясните мне -почему так работает этот механизм? Т.е. что там внутри происходит, что при указании | ТоварыНаСкладахОстатки.Номенклатура.*, отчет под другому работает.Как я понимаю в фигурных скобках указываются ВОЗМОЖНЫЕ поля для использования в построителе (в той или иной его секции) , но НЕОБЯЗАТЕЛЬНЫЕ. Тогда почему срабатывает отбор по наличию товаров на конец даты? И еще ,почему этот запрос так долго отрабатывает-может в тексте запроса лишнее что указано? |
|||
6
e053nk
21.03.18
✎
12:33
|
О, победил торомознутость отчета. Он реально все продажи сначала выбирал и все остатки, а потом отфильтровывал по указанной группе. Сейчас 3 сек -отчет выведен
|
|||
7
FIXXXL
21.03.18
✎
12:44
|
(5) ты же указал Номенклатуру брать из "правой" таблицы
ну и Построитель расстарался :) |
|||
8
Михаил Козлов
21.03.18
✎
13:07
|
(0) Не хотите использовать штатный отчет по продажам 10.3?
В нем вообще никакого запроса нет. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |