Имя: Пароль:
1C
1С v8
Количество дней в месяце на начало которых свободный остаток = 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 минут, а итоги быстрей потом получить свернув выгруженную таблицу запроса.Удивительно, но факт.
Независимо от того, куда вы едете — это в гору и против ветра!