|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
Loko
14.12.23
✎
06:11
|
Есть простой запрос. Выбираю остатки товара по дням. Если был на остатке, то 1, если нет, то 0. Потом суммирую это поле (1 и 0), т.е. получаю сколько дней был на остатке товар. В консоли все норм считает сумму. А в СКД упорно просто 1 показывает. Помогите)
ВЫБРАТЬ ТЗОстатки.Номенклатура КАК Номенклатура, ВЫБОР КОГДА ТЗОстатки.КоличествоОстаток > 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК ДнейВРасчете, ТЗОстатки.Склад КАК Склад, ТЗОстатки.Дата КАК Дата ПОМЕСТИТЬ ТЗОСТ ИЗ ТЗОстатки КАК ТЗОстатки ; ////// ВЫБРАТЬ ТЗОст.Номенклатура КАК Номенклатура, СУММА(ТЗОст.ДнейВРасчете) КАК ДНИ ИЗ ТЗОСТ КАК ТЗОст СГРУППИРОВАТЬ ПО ТЗОст.Номенклатура |
|||
1
rphosts
14.12.23
✎
07:41
|
(0) проверь, что у тебя запросы идентичны, для начала и если так - проверь что входящие данные совпадают
|
|||
2
Loko
14.12.23
✎
07:55
|
(1) запросы совпадают. вот запрос полностью:
ВЫБРАТЬ РАЗЛИЧНЫЕ РегламентированныйПроизводственныйКалендарь.Дата КАК Дата ПОМЕСТИТЬ Дни ИЗ РегистрСведений.ДанныеПроизводственногоКалендаря КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.Дата МЕЖДУ &НачПериода И &КонПериода ; //////////// ВЫБРАТЬ Движения.Номенклатура КАК Номенклатура, ДНИ.Дата КАК Дата, СУММА(ВЫБОР КОГДА Движения.Период = &НачПериода ТОГДА Движения.ВНаличииКонечныйОстаток ИНАЧЕ ВЫБОР КОГДА Движения.Период <= ДНИ.Дата ТОГДА Движения.ВНаличииОборот ИНАЧЕ 0 КОНЕЦ КОНЕЦ) КАК КоличествоОстаток ПОМЕСТИТЬ ТЗОстаткиПоДням ИЗ Дни КАК ДНИ ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты( &НачПериода {(&НачПериода)}, &КонПериода {(&КонПериода)}, День, , Номенклатура В ИЕРАРХИИ (&СписокНоменклатуры) И Склад В ИЕРАРХИИ (&СкладыПродажи)) КАК Движения ПО (Движения.Период <= ДНИ.Дата) СГРУППИРОВАТЬ ПО Движения.Номенклатура, ДНИ.Дата ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТЗОстатки.Номенклатура КАК Номенклатура, СУММА(ВЫБОР КОГДА ТЗОстатки.КоличествоОстаток > 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК ВНаличииДней ИЗ ТЗОстаткиПоДням КАК ТЗОстатки СГРУППИРОВАТЬ ПО ТЗОстатки.Номенклатура |
|||
3
Loko
14.12.23
✎
07:56
|
в консоли все норм отрабатывает. показывает количество дней товара на остатках. если все 30 дней был, то покажет 30. а в СКд этот запрос вставляю. Ресурс сумма для поля ВНаличииДней. И показывает 1 для всех товаров (где хотя бы 1 день был на остатке).
|
|||
4
MaximSh
14.12.23
✎
09:30
|
(3) сделай не через ВТ ТЗОстаткиПоДням , а через вложенный запрос
|
|||
5
MaximSh
14.12.23
✎
09:47
|
(3) или убери в ВТ и последнем запросе агрегат Сумма. В СКД поле ВНаличииДней добавь в Ресурсы. В Настройке выводи только по группировке Номенклатура
|
|||
6
KJlag
14.12.23
✎
09:51
|
(4) вложенные запросы.. бррр
как вспомню "провалиться во вложенный запрос, провалиться там во вложенный запрос и так далее" |
|||
7
Loko
14.12.23
✎
09:55
|
(4) получилось!
ВЫБРАТЬ РАЗЛИЧНЫЕ РегламентированныйПроизводственныйКалендарь.Дата КАК Дата ПОМЕСТИТЬ Дни ИЗ РегистрСведений.ДанныеПроизводственногоКалендаря КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.Дата МЕЖДУ &НачПериода И &КонПериода ; ///////////////// ВЫБРАТЬ ВложенныйЗапрос.Номенклатура КАК Номенклатура, СУММА(ВЫБОР КОГДА ВложенныйЗапрос.КоличествоОстаток > 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК ВНаличииДней ИЗ (ВЫБРАТЬ Движения.Номенклатура КАК Номенклатура, ДНИ.Дата КАК Дата, СУММА(ВЫБОР КОГДА Движения.Период = &НачПериода ТОГДА Движения.ВНаличииКонечныйОстаток ИНАЧЕ ВЫБОР КОГДА Движения.Период <= ДНИ.Дата ТОГДА Движения.ВНаличииОборот ИНАЧЕ 0 КОНЕЦ КОНЕЦ) КАК КоличествоОстаток ИЗ Дни КАК ДНИ ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты( &НачПериода {(&НачПериода)}, &КонПериода {(&КонПериода)}, День, , Номенклатура В ИЕРАРХИИ (&СписокНоменклатуры) И Склад В ИЕРАРХИИ (&СкладыПродажи)) КАК Движения ПО (Движения.Период <= ДНИ.Дата) СГРУППИРОВАТЬ ПО Движения.Номенклатура, ДНИ.Дата) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Номенклатура |
|||
8
Loko
14.12.23
✎
09:56
|
(5) я так тоже делал. не получалось
|
|||
9
Loko
14.12.23
✎
09:57
|
(7) + странное. мне нужно было агрегат МАКСИМУМ вернуть. а он возвращает 1. заменил на СУММА и она возвращает именно то, что мне нужно - МАКСИМУМ. ниче не понимаю.. но работает. спасибо!
|
|||
10
Loko
14.12.23
✎
10:00
|
(9) МАКСИМУМ из складов.
|
|||
11
Loko
14.12.23
✎
10:02
|
(5) а нет. так не делал. так тоже работает)
|
|||
12
MaximSh
14.12.23
✎
10:06
|
(8) Странно.
1. В запросе вообще без агрегатов, это задача ресурсов 2. поле ВНаличииДней в Ресурс, суммирование. 3. Настройка одна группировка по полю Номенклатура. Отчет Выбранные поля: ВНаличииДней и Номенклатура Запрос такой ВЫБРАТЬ Движения.Номенклатура КАК Номенклатура, ДНИ.Дата КАК Дата, ВЫБОР КОГДА Движения.Период = &НачПериода ТОГДА Движения.ВНаличииКонечныйОстаток ИНАЧЕ ВЫБОР КОГДА Движения.Период <= ДНИ.Дата ТОГДА Движения.ВНаличииОборот ИНАЧЕ 0 КОНЕЦ КОНЕЦ КАК КоличествоОстаток ПОМЕСТИТЬ ТЗОстаткиПоДням ИЗ Дни КАК ДНИ ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачПериода {(&НачПериода)}, &КонПериода {(&КонПериода)}, День, , Склад В ИЕРАРХИИ (&СкладыПродажи)) КАК Движения ПО (Движения.Период <= ДНИ.Дата) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТЗОстатки.Номенклатура КАК Номенклатура, ВЫБОР КОГДА ТЗОстатки.КоличествоОстаток > 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК ВНаличииДней ИЗ ТЗОстаткиПоДням КАК ТЗОстатки |
|||
13
Loko
14.12.23
✎
10:07
|
(12) да, работает. спасибо)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |