|
v8: По всей номенклатуре в последний раз остаток равен 0? | ☑ | ||
---|---|---|---|---|
0
EarthsSoul
30.09.11
✎
06:06
|
Мне нужно узнать по всем номенклатурам на всех складах когда в ПОСЛЕДНИЙ раз её остаток был равен 0... Вот не знаю как написать запрос, если например организация одна и искать для конкретной номенклатуры и конкретного склада то запрос примет вид
Запрос = Новый Запрос; Запрос.Текст="ВЫБРАТЬ ПЕРВЫЕ 1 | ВложенныйЗапрос.Номенклатура, | ВложенныйЗапрос.Склад, | ВложенныйЗапрос.КоличествоОстаток КАК КоличествоОстатокТекущий, | ПартииТоваровНаСкладахОстаткиИОбороты.Период КАК ДатаНачалаАнализа, | ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстатокДолженБытьНоль |ИЗ | (ВЫБРАТЬ | ПартииТоваровНаСкладахОстатки.Номенклатура КАК Номенклатура, | ПартииТоваровНаСкладахОстатки.Склад КАК Склад, | ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток | ИЗ | РегистрНакопления.ПартииТоваровНаСкладах.Остатки( | &АнализируемаяДата, | Номенклатура = &Номенклатура | И Склад = &Склад) КАК ПартииТоваровНаСкладахОстатки | ГДЕ | ПартииТоваровНаСкладахОстатки.КоличествоОстаток > 0) КАК ВложенныйЗапрос | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(, , Минута, , ) КАК ПартииТоваровНаСкладахОстаткиИОбороты | ПО ВложенныйЗапрос.Номенклатура = ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура | И ВложенныйЗапрос.Склад = ПартииТоваровНаСкладахОстаткиИОбороты.Склад |ГДЕ | ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток = 0 | |УПОРЯДОЧИТЬ ПО | ДатаНачалаАнализа УБЫВ"; Но если искать для всех складов и номенклатур, то ума не приложу как это делать. Ваши идеи? |
|||
1
skunk
30.09.11
✎
06:16
|
неправильная постановка вопроса ...
|
|||
2
EarthsSoul
30.09.11
✎
06:32
|
Все понял, оказывается просто :-)
"ВЫБРАТЬ | ПартииТоваровНаСкладахОстатки.Организация, | ПартииТоваровНаСкладахОстатки.Склад КАК Склад, | ПартииТоваровНаСкладахОстатки.Номенклатура КАК Номенклатура, | ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток |ПОМЕСТИТЬ НеНулеваяНоменклатура |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах.Остатки( | &АнализируемаяДата, | Номенклатура = &Номенклатура | И Склад = &Склад | И Организация = &Организация) КАК ПартииТоваровНаСкладахОстатки |ГДЕ | ПартииТоваровНаСкладахОстатки.КоличествоОстаток > 0 | |ИНДЕКСИРОВАТЬ ПО | Склад, | Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | МАКСИМУМ(ПартииТоваровНаСкладахОстаткиИОбороты.Период) КАК ДатаНачалаАнализа, | ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура, | ПартииТоваровНаСкладахОстаткиИОбороты.Склад |ИЗ | НеНулеваяНоменклатура КАК НеНулеваяНоменклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты( | , | , | Час, | , | Номенклатура = &Номенклатура | И Склад = &Склад | И Организация = &Организация) КАК ПартииТоваровНаСкладахОстаткиИОбороты | ПО НеНулеваяНоменклатура.Склад = ПартииТоваровНаСкладахОстаткиИОбороты.Склад | И НеНулеваяНоменклатура.Номенклатура = ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура | И НеНулеваяНоменклатура.Организация = ПартииТоваровНаСкладахОстаткиИОбороты.Организация |ГДЕ | ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток = 0 | |СГРУППИРОВАТЬ ПО | ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура, | ПартииТоваровНаСкладахОстаткиИОбороты.Склад"; |
|||
3
EarthsSoul
30.09.11
✎
06:33
|
Может будут тогда замечания по производительности запроса?
|
|||
4
Escander
30.09.11
✎
06:47
|
(3) берём остатки на конкретную дату а обороты за весь период?
Имхо, в первом запросе секция ГДЕ лишняя - регистр накопления не хранит пустых записей. Не? - хотя на производительности не скажется. А зачем периодичность час? Дня мало? |
|||
5
Starhan
30.09.11
✎
07:24
|
А если остатка нет на текущий момент?
|
|||
6
EarthsSoul
30.09.11
✎
07:33
|
Да номенклатура которой нет имеет значения, вот.. А периодичность час потому что пока не уверен что дня достаточно, позже выясню особенности данной базы...
На счет Где(4) как его можно обойти? |
|||
7
EarthsSoul
30.09.11
✎
07:48
|
Во
ВЫБРАТЬ ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура, ПартииТоваровНаСкладахОстаткиИОбороты.Склад, МАКСИМУМ(ПартииТоваровНаСкладахОстаткиИОбороты.Период) КАК Период ИЗ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты( , , Регистратор, , Номенклатура = &Номенклатура И Склад = &Склад И Организация = &Организация) КАК ПартииТоваровНаСкладахОстаткиИОбороты ГДЕ ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток = 0 СГРУППИРОВАТЬ ПО ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура, ПартииТоваровНаСкладахОстаткиИОбороты.Склад думаю так быстрее всего будет... |
|||
8
Starhan
30.09.11
✎
07:53
|
(6)Просто убрать условие
Если номенклатуры нет на остатке. Получишь дату последнего прихода. Что не равно по смыслу "Мне нужно узнать по всем номенклатурам на всех складах когда в ПОСЛЕДНИЙ раз её остаток был равен 0" |
|||
9
Starhan
30.09.11
✎
07:53
|
(8) к последнему запросу
|
|||
10
EarthsSoul
30.09.11
✎
08:02
|
тут уточню хочу что бы пользователь имел возможность задавать или не задавать номенклатуру и склад, мне нужно это для дальнейшей обработки, я так понимаю здесь надо не обязательно условие в построителе отчетов (который со вчерашнего дня осваиваю).
ПостроительПервый = Новый ПостроительОтчета; ПостроительПервый.Текст="ВЫБРАТЬ | ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура, | ПартииТоваровНаСкладахОстаткиИОбороты.Склад, | МАКСИМУМ(ПартииТоваровНаСкладахОстаткиИОбороты.Период) КАК Период |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты( | , | , | Регистратор, | , | Номенклатура = &Номенклатура | И Склад = &Склад | И Организация = &Организация) КАК ПартииТоваровНаСкладахОстаткиИОбороты |ГДЕ | ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток = 0 | |СГРУППИРОВАТЬ ПО | ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура, | ПартииТоваровНаСкладахОстаткиИОбороты.Склад"; ПостроительПервый.ЗаполнитьНастройки(); ПостроительПервый.Параметры.Вставить("Номенклатура",КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2].Значение); ПостроительПервый.Параметры.Вставить("Склад",КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[1].Значение); ПостроительПервый.Параметры.Вставить("АнализируемаяДата",КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Значение); ПостроительПервый.Параметры.Вставить("Организация",Справочники.Организации.НайтиПоКоду("000000001")); ПостроительПервый.Выполнить(); как указать что он условия номенклатуры и склада не обязательные? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |