Имя: Пароль:
1C
1С v8
Как такой запрос сделать?
0 tciban
 
06.09.11
13:39
Уважаемые коллеги! Опять вопрос у меня, поделитесь опытом как сделать такой запрос. Есть регистр. простой такой регистр накопления с измерением "Сделка" типа документ такой и ресурсом "долг" (покупателя).

Еще у сделки есть поле - "Дата завершения". Так вот мне нужно получить помесячно за год долги покупателя, но только по незакрытым на тот период сделкам. Т.е. если у сделки дата закрытия в августе, то долг по ней в июнь-июль-август попадает, а в сентябрь уже нет. Как такое нарисовать в запросе?
1 Axel2009
 
06.09.11
13:41
ну и где начальный запрос?
2 dva1c
 
06.09.11
13:41
конструктор в руки пробовал брать?
3 Midzgun
 
06.09.11
13:42
Лень писать - большой запрос получится. Суть в том, что тебе сначала нужно получить таблицу дат периода. Для примера можешь посмотреть документ ТабельУчетаРабочегоВремени в УПП или КА или ЗУП, конкретно его заполнение. Потом соединяешь таблицу дат и навешиваешь условия.
4 tciban
 
06.09.11
13:46
дык не знаю как писать. Не знаю как учесть такое условие в запросе. Базовый запрос вот такой видимо:
ВЫБРАТЬ
   ВложенныйЗапрос.Период,
   СУММА(ВложенныйЗапрос.Сумма) КАК Сумма
ИЗ
   (ВЫБРАТЬ
       БалансСделокОстаткиИОбороты.Период КАК Период,
       БалансСделокОстаткиИОбороты.Сделка КАК Сделка,
       ВЫБОР
           КОГДА БалансСделокОстаткиИОбороты.ДолгПокупателяКонечныйОстаток > 0
               ТОГДА БалансСделокОстаткиИОбороты.ДолгПокупателяКонечныйОстаток
           ИНАЧЕ 0
       КОНЕЦ КАК Сумма
   ИЗ
       РегистрНакопления.БалансСделок.ОстаткиИОбороты(&ДатаН, &ДатаК, Месяц, ДвиженияИГраницыПериода, (НЕ Сделка.Завершена)) КАК БалансСделокОстаткиИОбороты) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
   ВложенныйЗапрос.Период

Но на что заменить условие (НЕ Сделка.Завершена) - я не знаю
5 Midzgun
 
06.09.11
13:50
Так ты не остаткиобороты делай, а соединяй по ТаблицаПериодов.Период < БалансСделок.Сделка.ДатаЗавершения ну а потом группируй или отбирай как душе угодно
6 Axel2009
 
06.09.11
13:54
ну и где учет даты закрытия?
7 Axel2009
 
06.09.11
13:54
выбор когда датазакрытия < период тогда сумма иначе 0 конец
8 tciban
 
07.09.11
10:37
Если я все правильно понимаю, то правильно вот так:

ВЫБРАТЬ
   ВложенныйЗапрос.Период,
   СУММА(ВложенныйЗапрос.Сумма) КАК Сумма
ИЗ
   (ВЫБРАТЬ
       КОНЕЦПЕРИОДА(БалансСделокОстаткиИОбороты.Период, МЕСЯЦ) КАК Период,
       БалансСделокОстаткиИОбороты.Сделка КАК Сделка,
       ВЫБОР
           КОГДА БалансСделокОстаткиИОбороты.ДолгПокупателяКонечныйОстаток > 0
               ТОГДА БалансСделокОстаткиИОбороты.ДолгПокупателяКонечныйОстаток
           ИНАЧЕ 0
       КОНЕЦ КАК Сумма
   ИЗ
       РегистрНакопления.БалансСделок.ОстаткиИОбороты(&ДатаН, &ДатаК, Месяц, ДвиженияИГраницыПериода, ) КАК БалансСделокОстаткиИОбороты) КАК ВложенныйЗапрос
ГДЕ
   ВложенныйЗапрос.Сделка.ДатаЗавершения > ВложенныйЗапрос.Период

СГРУППИРОВАТЬ ПО
   ВложенныйЗапрос.Период
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший