|
Количество дней в месяце на начало которых свободный остаток = 0 | ☑ | ||
---|---|---|---|---|
0
kn
29.03.12
✎
07:07
|
Как построить такой запрос или где посмотреть что-то подобное, пока нашлось вот Книга знаний: v8: Запрос: количество дней наличия товара на складе за период.; , но там по одному регистру остаток смотрится, а мне надо (ТоварыНаСкладах-ТоварыВрезерве - ТоварыКПередачеСоСкладов)
|
|||
1
Рэйв
29.03.12
✎
07:12
|
сделай три запроса и соедини по дате
|
|||
2
kn
29.03.12
✎
07:24
|
там в примере разность дат считается так можно только для одного регистра по-моему, а как тут не пойму сделать
|
|||
3
Рэйв
29.03.12
✎
07:29
|
(2)Сделай таким образом для трех регистров три отдельных запроса и соедени их по полю Период. Получишь данные всех трех регистров в одной строке для одной записи.Ну а дальше чистая арифметика
|
|||
4
kn
29.03.12
✎
07:37
|
на каждый день месяца?
|
|||
5
kn
29.03.12
✎
07:38
|
в запосе примера смотрятся только даты изменения остатков, но у меня 3 регистра и даты изменения могут не совпадать
|
|||
6
Рэйв
29.03.12
✎
07:52
|
(5)Проверяй на ЕстьNull все цифры и там где не совпадут будут нули
|
|||
7
kn
29.03.12
✎
07:58
|
спасибо, попробую
|
|||
8
kn
03.04.12
✎
17:23
|
Вот получилось, но работает крайне медленно, как написать более быстрый запрос подскажите пожалуйста
ВЫБРАТЬ ВЫБОР КОГДА ЕСТЬNULL(ВложенныйЗапрос.КоличествоНачальныйОстатокПредыдущий, 0) - ЕСТЬNULL(ВложенныйЗапрос1.КоличествоНачальныйОстатокПредыдущий, 0) - ЕСТЬNULL(ВложенныйЗапрос2.КоличествоНачальныйОстатокПредыдущий, 0) = 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК СвободныйОстаток, НАЧАЛОПЕРИОДА(ВложенныйЗапрос3.ДатаКалендаря, МЕСЯЦ) КАК Месяц, ВложенныйЗапрос3.Номенклатура КАК Номенклатура ИЗ (ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура, РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура ПО (РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания) И (Номенклатура.ЭтоГруппа = ЛОЖЬ) И ((НЕ Номенклатура.Услуга)) И ((НЕ Номенклатура.ПометкаУдаления))) КАК ВложенныйЗапрос3 ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВложенныйЗапрос.Номенклатура КАК Номенклатура, ВЫБОР КОГДА ВложенныйЗапрос.ДатаКалендаря = ТоварыНаСкладахОстаткиИОбороты.Период ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток ИНАЧЕ ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КОНЕЦ КАК КоличествоНачальныйОстатокПредыдущий, ВложенныйЗапрос.ДатаКалендаря КАК ДатаКалендаря, ВложенныйЗапрос.Период КАК Период ИЗ (ВЫБРАТЬ ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, МАКСИМУМ(ТоварыНаСкладахОстаткиИОбороты.Период) КАК Период, РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты( &ДатаНачала, &ДатаОкончания, День, , (НЕ Номенклатура.Услуга) И (НЕ Номенклатура.ПометкаУдаления)) КАК ТоварыНаСкладахОстаткиИОбороты ПО (РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания) И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= ТоварыНаСкладахОстаткиИОбороты.Период И (ТоварыНаСкладахОстаткиИОбороты.Склад В (ВЫБРАТЬ СоставГруппДоступностиСкладов.Склад ИЗ РегистрСведений.СоставГруппДоступностиСкладов КАК СоставГруппДоступностиСкладов ГДЕ СоставГруппДоступностиСкладов.ГруппаДоступности = &ОсновныеСклады)) СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура, РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты( &ДатаНачала, &ДатаОкончания, День, , (НЕ Номенклатура.Услуга) И (НЕ Номенклатура.ПометкаУдаления)) КАК ТоварыНаСкладахОстаткиИОбороты ПО ВложенныйЗапрос.Период = ТоварыНаСкладахОстаткиИОбороты.Период И ВложенныйЗапрос.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура И (ТоварыНаСкладахОстаткиИОбороты.Склад В (ВЫБРАТЬ СоставГруппДоступностиСкладов.Склад ИЗ РегистрСведений.СоставГруппДоступностиСкладов КАК СоставГруппДоступностиСкладов ГДЕ СоставГруппДоступностиСкладов.ГруппаДоступности = &ОсновныеСклады))) КАК ВложенныйЗапрос ПО ВложенныйЗапрос3.Номенклатура = ВложенныйЗапрос.Номенклатура И ВложенныйЗапрос3.ДатаКалендаря = ВложенныйЗапрос.ДатаКалендаря ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВложенныйЗапрос.Номенклатура КАК Номенклатура, ВЫБОР КОГДА ВложенныйЗапрос.ДатаКалендаря = ТоварыВРезервеНаСкладахОстаткиИОбороты.Период ТОГДА ТоварыВРезервеНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток ИНАЧЕ ТоварыВРезервеНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КОНЕЦ КАК КоличествоНачальныйОстатокПредыдущий, ВложенныйЗапрос.ДатаКалендаря КАК ДатаКалендаря, ВложенныйЗапрос.Период КАК Период ИЗ (ВЫБРАТЬ ТоварыВРезервеНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, МАКСИМУМ(ТоварыВРезервеНаСкладахОстаткиИОбороты.Период) КАК Период, РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.ОстаткиИОбороты( &ДатаНачала, &ДатаОкончания, День, , (НЕ Номенклатура.Услуга) И (НЕ Номенклатура.ПометкаУдаления)) КАК ТоварыВРезервеНаСкладахОстаткиИОбороты ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= ТоварыВРезервеНаСкладахОстаткиИОбороты.Период И (РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания) И (ТоварыВРезервеНаСкладахОстаткиИОбороты.Склад В (ВЫБРАТЬ СоставГруппДоступностиСкладов.Склад ИЗ РегистрСведений.СоставГруппДоступностиСкладов КАК СоставГруппДоступностиСкладов ГДЕ СоставГруппДоступностиСкладов.ГруппаДоступности = &ОсновныеСклады)) СГРУППИРОВАТЬ ПО ТоварыВРезервеНаСкладахОстаткиИОбороты.Номенклатура, РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.ОстаткиИОбороты( &ДатаНачала, &ДатаОкончания, День, , (НЕ Номенклатура.Услуга) И (НЕ Номенклатура.ПометкаУдаления)) КАК ТоварыВРезервеНаСкладахОстаткиИОбороты ПО ВложенныйЗапрос.Номенклатура = ТоварыВРезервеНаСкладахОстаткиИОбороты.Номенклатура И ВложенныйЗапрос.Период = ТоварыВРезервеНаСкладахОстаткиИОбороты.Период И (ТоварыВРезервеНаСкладахОстаткиИОбороты.Склад В (ВЫБРАТЬ СоставГруппДоступностиСкладов.Склад ИЗ РегистрСведений.СоставГруппДоступностиСкладов КАК СоставГруппДоступностиСкладов ГДЕ СоставГруппДоступностиСкладов.ГруппаДоступности = &ОсновныеСклады))) КАК ВложенныйЗапрос1 ПО ВложенныйЗапрос3.Номенклатура = ВложенныйЗапрос1.Номенклатура И ВложенныйЗапрос3.ДатаКалендаря = ВложенныйЗапрос1.ДатаКалендаря ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВложенныйЗапрос.Номенклатура КАК Номенклатура, ВЫБОР КОГДА ВложенныйЗапрос.ДатаКалендаря = ТоварыКПередачеСоСкладовОстаткиИОбороты.Период ТОГДА ТоварыКПередачеСоСкладовОстаткиИОбороты.КоличествоНачальныйОстаток ИНАЧЕ ТоварыКПередачеСоСкладовОстаткиИОбороты.КоличествоКонечныйОстаток КОНЕЦ КАК КоличествоНачальныйОстатокПредыдущий, ВложенныйЗапрос.ДатаКалендаря КАК ДатаКалендаря, ВложенныйЗапрос.Период КАК Период ИЗ (ВЫБРАТЬ ТоварыКПередачеСоСкладовОстаткиИОбороты.Номенклатура КАК Номенклатура, МАКСИМУМ(ТоварыКПередачеСоСкладовОстаткиИОбороты.Период) КАК Период, РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.ОстаткиИОбороты( &ДатаНачала, &ДатаОкончания, День, , (НЕ Номенклатура.Услуга) И (НЕ Номенклатура.ПометкаУдаления)) КАК ТоварыКПередачеСоСкладовОстаткиИОбороты ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= ТоварыКПередачеСоСкладовОстаткиИОбороты.Период И (РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания) И (ТоварыКПередачеСоСкладовОстаткиИОбороты.Склад В (ВЫБРАТЬ СоставГруппДоступностиСкладов.Склад ИЗ РегистрСведений.СоставГруппДоступностиСкладов КАК СоставГруппДоступностиСкладов ГДЕ СоставГруппДоступностиСкладов.ГруппаДоступности = &ОсновныеСклады)) СГРУППИРОВАТЬ ПО ТоварыКПередачеСоСкладовОстаткиИОбороты.Номенклатура, РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.ОстаткиИОбороты( &ДатаНачала, &ДатаОкончания, День, , (НЕ Номенклатура.Услуга) И (НЕ Номенклатура.ПометкаУдаления)) КАК ТоварыКПередачеСоСкладовОстаткиИОбороты ПО ВложенныйЗапрос.Номенклатура = ТоварыКПередачеСоСкладовОстаткиИОбороты.Номенклатура И ВложенныйЗапрос.Период = ТоварыКПередачеСоСкладовОстаткиИОбороты.Период И (ТоварыКПередачеСоСкладовОстаткиИОбороты.Склад В (ВЫБРАТЬ СоставГруппДоступностиСкладов.Склад ИЗ РегистрСведений.СоставГруппДоступностиСкладов КАК СоставГруппДоступностиСкладов ГДЕ СоставГруппДоступностиСкладов.ГруппаДоступности = &ОсновныеСклады))) КАК ВложенныйЗапрос2 ПО ВложенныйЗапрос3.Номенклатура = ВложенныйЗапрос2.Номенклатура И ВложенныйЗапрос3.ДатаКалендаря = ВложенныйЗапрос2.ДатаКалендаря ИТОГИ СУММА(СвободныйОстаток) ПО Месяц, Номенклатура |
|||
9
kn
03.04.12
✎
18:31
|
вверх
|
|||
10
Fragster
гуру
03.04.12
✎
18:48
|
500 рублей
|
|||
11
kn
03.04.12
✎
18:56
|
книжки дешевле
|
|||
12
Fragster
гуру
03.04.12
✎
18:57
|
(11) ну так ты ж их не читаешь
|
|||
13
kn
03.04.12
✎
18:58
|
а все самое лучшее нам дается бесплатно
|
|||
14
kn
09.04.12
✎
17:19
|
Вот еще один вариант, тоже медленный, подскажите идею кому не трудно как написать более быстрый запрос
ВЫБРАТЬ СправочникНоменклатура.Ссылка КАК Номенклатура ПОМЕСТИТЬ ТабНоменклатура ИЗ Справочник.Номенклатура КАК СправочникНоменклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НАЧАЛОПЕРИОДА(ВложенныйЗапрос3.ДатаКалендаря, МЕСЯЦ) КАК МесяцДата, ВложенныйЗапрос3.Номенклатура КАК Номенклатура, ВЫБОР КОГДА ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(ВложенныйЗапрос4.Оборот, 0) - (ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(ВложенныйЗапрос5.Оборот, 0)) - (ЕСТЬNULL(ТоварыКПередачеСоСкладовОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(ВложенныйЗапрос6.Оборот, 0)) <= 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК СвободныйОстатокНеПоложителен ИЗ (ВЫБРАТЬ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря, ТабНоменклатура.Номенклатура КАК Номенклатура ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь, ТабНоменклатура КАК ТабНоменклатура ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания) КАК ВложенныйЗапрос3 ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря, СУММА(ЕСТЬNULL(ТоварыНаСкладахОбороты.КоличествоОборот, 0)) КАК Оборот, ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, День, ) КАК ТоварыНаСкладахОбороты ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря > ТоварыНаСкладахОбороты.Период ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания СГРУППИРОВАТЬ ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ТоварыНаСкладахОбороты.Номенклатура) КАК ВложенныйЗапрос4 ПО ВложенныйЗапрос3.ДатаКалендаря = ВложенныйЗапрос4.ДатаКалендаря И ВложенныйЗапрос3.Номенклатура = ВложенныйЗапрос4.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ СУММА(ЕСТЬNULL(ТоварыВРезервеНаСкладахОбороты.КоличествоОборот, 0)) КАК Оборот, РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря, ТоварыВРезервеНаСкладахОбороты.Номенклатура КАК Номенклатура ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, День, ) КАК ТоварыВРезервеНаСкладахОбороты ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря > ТоварыВРезервеНаСкладахОбороты.Период ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания СГРУППИРОВАТЬ ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ТоварыВРезервеНаСкладахОбороты.Номенклатура) КАК ВложенныйЗапрос5 ПО ВложенныйЗапрос3.ДатаКалендаря = ВложенныйЗапрос5.ДатаКалендаря И ВложенныйЗапрос3.Номенклатура = ВложенныйЗапрос5.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ СУММА(ЕСТЬNULL(ТоварыКПередачеСоСкладовОбороты.КоличествоОборот, 0)) КАК Оборот, РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря, ТоварыКПередачеСоСкладовОбороты.Номенклатура КАК Номенклатура ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.Обороты(&ДатаНачала, &ДатаОкончания, День, ) КАК ТоварыКПередачеСоСкладовОбороты ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря > ТоварыКПередачеСоСкладовОбороты.Период ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания СГРУППИРОВАТЬ ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ТоварыКПередачеСоСкладовОбороты.Номенклатура) КАК ВложенныйЗапрос6 ПО ВложенныйЗапрос3.ДатаКалендаря = ВложенныйЗапрос6.ДатаКалендаря И ВложенныйЗапрос3.Номенклатура = ВложенныйЗапрос6.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ПредДатаНачала, ) КАК ТоварыВРезервеНаСкладахОстатки ПО ВложенныйЗапрос3.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(&ПредДатаНачала, ) КАК ТоварыКПередачеСоСкладовОстатки ПО ВложенныйЗапрос3.Номенклатура = ТоварыКПередачеСоСкладовОстатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ПредДатаНачала, ) КАК ТоварыНаСкладахОстатки ПО ВложенныйЗапрос3.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура УПОРЯДОЧИТЬ ПО ВложенныйЗапрос3.Номенклатура.Наименование ИТОГИ СУММА(СвободныйОстатокНеПоложителен) ПО МесяцДата, Номенклатура |
|||
15
zzhiraf
09.04.12
✎
17:44
|
Надо использовать ОЛАП кубы для этого
|
|||
16
kn
09.04.12
✎
17:54
|
мне надо раз в месяц расчитывать и заносить в регистр.
|
|||
17
zzhiraf
09.04.12
✎
17:58
|
тогда можно и подождать пока запрос рассчитается
|
|||
18
kn
09.04.12
✎
18:00
|
считается около часа(15 тыс позиций 1 месяц), менеджер ждать не будет, по-быстрее что-нибудь бы надо придумать.
|
|||
19
kn
09.04.12
✎
18:06
|
понятно что можно делать регламентным заданием, но интересно просто как написать такой запрос более профессионально
|
|||
20
Нуф-Нуф
09.04.12
✎
18:29
|
5000руб
|
|||
21
kn
09.04.12
✎
18:39
|
Это у вас такие в городе расценки?
|
|||
22
Fragster
гуру
09.04.12
✎
19:17
|
(21) надо было раньше соглашаться
|
|||
23
Fragster
гуру
09.04.12
✎
19:17
|
(22)+ инфляция, вся фигня
|
|||
24
kn
09.04.12
✎
19:21
|
(23)не прошу готовый запрос, надеюсь на не корыстных.
|
|||
25
kn
09.04.12
✎
19:22
|
а сколько запрос за 500 р будет выполнятся?
|
|||
26
Fragster
гуру
09.04.12
✎
19:23
|
(25) хз, раз в 5-10 быстрее, наверное
|
|||
27
Fragster
гуру
09.04.12
✎
19:24
|
(26)+ а может и больше, я ж его еще не написал
|
|||
28
kn
09.04.12
✎
19:26
|
ха-ха
|
|||
29
Fragster
гуру
09.04.12
✎
19:27
|
(28) хохо
|
|||
30
kn
09.04.12
✎
19:36
|
где-то около 50 руб в яндекс-деньгах осталось
|
|||
31
Fragster
гуру
09.04.12
✎
19:48
|
(30) не повезло
|
|||
32
kn
09.04.12
✎
19:49
|
за совет - нормально.
|
|||
33
Fragster
гуру
09.04.12
✎
19:51
|
(32) см. 12. советов в гуглях всяких и поисках - сотни, в том числе и от меня...
|
|||
34
kn
09.04.12
✎
20:30
|
ну вот более правильный по-моему запрос , но 50 мин.
ВЫБРАТЬ СправочникНоменклатура.Ссылка КАК Номенклатура, РегламентированныйПроизводственныйКалендарь.ДатаКалендаря ПОМЕСТИТЬ ТабНоменклатура ИЗ Справочник.Номенклатура КАК СправочникНоменклатура, РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НАЧАЛОПЕРИОДА(ВложенныйЗапрос4.ДатаКалендаря, МЕСЯЦ) КАК МесяцДата, ВложенныйЗапрос4.Номенклатура КАК Номенклатура, ВЫБОР КОГДА ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(ВложенныйЗапрос4.Оборот, 0) - (ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(ВложенныйЗапрос5.Оборот, 0)) - (ЕСТЬNULL(ТоварыКПередачеСоСкладовОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(ВложенныйЗапрос6.Оборот, 0)) <= 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК СвободныйОстаток ИЗ (ВЫБРАТЬ ТабНоменклатура.ДатаКалендаря КАК ДатаКалендаря, СУММА(ЕСТЬNULL(ТоварыНаСкладахОбороты.КоличествоОборот, 0)) КАК Оборот, ТабНоменклатура.Номенклатура КАК Номенклатура ИЗ ТабНоменклатура КАК ТабНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, День, ) КАК ТоварыНаСкладахОбороты ПО ТабНоменклатура.ДатаКалендаря > ТоварыНаСкладахОбороты.Период И ТабНоменклатура.Номенклатура = ТоварыНаСкладахОбороты.Номенклатура СГРУППИРОВАТЬ ПО ТабНоменклатура.ДатаКалендаря, ТабНоменклатура.Номенклатура) КАК ВложенныйЗапрос4 ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ СУММА(ЕСТЬNULL(ТоварыВРезервеНаСкладахОбороты.КоличествоОборот, 0)) КАК Оборот, ТабНоменклатура.ДатаКалендаря КАК ДатаКалендаря, ТабНоменклатура.Номенклатура КАК Номенклатура ИЗ ТабНоменклатура КАК ТабНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, День, ) КАК ТоварыВРезервеНаСкладахОбороты ПО ТабНоменклатура.ДатаКалендаря > ТоварыВРезервеНаСкладахОбороты.Период И ТабНоменклатура.Номенклатура = ТоварыВРезервеНаСкладахОбороты.Номенклатура СГРУППИРОВАТЬ ПО ТабНоменклатура.Номенклатура, ТабНоменклатура.ДатаКалендаря) КАК ВложенныйЗапрос5 ПО ВложенныйЗапрос4.ДатаКалендаря = ВложенныйЗапрос5.ДатаКалендаря И ВложенныйЗапрос4.Номенклатура = ВложенныйЗапрос5.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ СУММА(ЕСТЬNULL(ТоварыКПередачеСоСкладовОбороты.КоличествоОборот, 0)) КАК Оборот, ТабНоменклатура.ДатаКалендаря КАК ДатаКалендаря, ТабНоменклатура.Номенклатура КАК Номенклатура ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь, ТабНоменклатура КАК ТабНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.Обороты(&ДатаНачала, &ДатаОкончания, День, ) КАК ТоварыКПередачеСоСкладовОбороты ПО ТабНоменклатура.ДатаКалендаря > ТоварыКПередачеСоСкладовОбороты.Период И ТабНоменклатура.Номенклатура = ТоварыКПередачеСоСкладовОбороты.Номенклатура ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания СГРУППИРОВАТЬ ПО ТабНоменклатура.ДатаКалендаря, ТабНоменклатура.Номенклатура) КАК ВложенныйЗапрос6 ПО ВложенныйЗапрос4.ДатаКалендаря = ВложенныйЗапрос6.ДатаКалендаря И ВложенныйЗапрос4.Номенклатура = ВложенныйЗапрос6.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ПредДатаНачала, ) КАК ТоварыВРезервеНаСкладахОстатки ПО ВложенныйЗапрос4.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(&ПредДатаНачала, ) КАК ТоварыКПередачеСоСкладовОстатки ПО ВложенныйЗапрос4.Номенклатура = ТоварыКПередачеСоСкладовОстатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ПредДатаНачала, ) КАК ТоварыНаСкладахОстатки ПО ВложенныйЗапрос4.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура ИТОГИ СУММА(СвободныйОстаток) ПО МесяцДата, Номенклатура А что быстрее должно работать остатки на каждый день(как в первом запросе) или нач остаток + сумма оборотов?И можно ли для свободного остатка использовать запрос из книги знаний(он был бы быстрей),но по-моему никакак не получится. |
|||
35
kn
10.04.12
✎
16:37
|
Оказалось что без итогов запрос считается меньше 5 минут, а итоги быстрей потом получить свернув выгруженную таблицу запроса.Удивительно, но факт.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |