Имя: Пароль:
1C
 
FIFO в запросе
, ,
0 zavyzka
 
25.11.09
16:08
Подскажите существует ли способ реализовать метод FIFO прямо в запросе, т. е. если есть такая таблица:

----------+-------+-------------+
Документ |  Долг | Оплата общ. |
----------+-------+-------------+
 ТТН-1   |   10  |     13      |
 ТТН-2   |   5   |     13      |
 ТТН-3   |   8   |     13      |
----------+-------+-------------+
Возможно ли на выходе получить:
----------+-------+-------------+
Документ |  Долг | Оплата общ. |
----------+-------+-------------+
 ТТН-1   |   10  |     13      |
 ТТН-2   |   3   |     13      |
----------+-------+-------------+
1 Ненавижу 1С
 
гуру
25.11.09
16:28
(0)

ВЫБРАТЬ
   ВложенныйЗапрос.Ссылка,
   ВложенныйЗапрос.СуммаДокумента,
   ВЫБОР
       КОГДА ВложенныйЗапрос.СуммаДокументаИтог <= &Оплата
           ТОГДА ВложенныйЗапрос.СуммаДокумента
       ИНАЧЕ ВложенныйЗапрос.СуммаДокумента + &Оплата - ВложенныйЗапрос.СуммаДокументаИтог
   КОНЕЦ КАК Оплата
ИЗ
   (ВЫБРАТЬ
       РеализацияТоваровУслуг.Ссылка КАК Ссылка,
       РеализацияТоваровУслуг.СуммаДокумента КАК СуммаДокумента,
       СУММА(РеализацияТоваровУслуг1.СуммаДокумента) КАК СуммаДокументаИтог
   ИЗ
       Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
           ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг1
           ПО РеализацияТоваровУслуг.МоментВремени >= РеализацияТоваровУслуг1.МоментВремени
   
   СГРУППИРОВАТЬ ПО
       РеализацияТоваровУслуг.Ссылка,
       РеализацияТоваровУслуг.СуммаДокумента) КАК ВложенныйЗапрос
ГДЕ
   ВложенныйЗапрос.СуммаДокументаИтог - ВложенныйЗапрос.СуммаДокумента < &Оплата

УПОРЯДОЧИТЬ ПО
   ВложенныйЗапрос.Ссылка.МоментВремени
2 TheNewOne
 
25.11.09
18:02
(1) круто
3 Живой Ископаемый
 
25.11.09
18:36
2(1) действительно клево. а автор даже спасибо не скажет... :)
4 Kasper076
 
25.11.09
18:40
Надо запомнить
5 kiruha
 
25.11.09
18:58
Про время еще спроси
6 kiruha
 
25.11.09
18:59
Выполнения
7 ИначеЕсли
 
25.11.09
19:00
круто
8 Живой Ископаемый
 
25.11.09
19:06
2(5,6) У меня - 0 мс.. база правда совсем небольшая... сейчас попробую на базе побольше
9 Живой Ископаемый
 
25.11.09
19:10
и в базе побольше тоже 0 мс...
всех документов в первой базе выдает 176 (если очень большую сумму поставить), во второй - 495...
10 Kasper076
 
26.11.09
07:15
Ну 495 документов это конечно ниапчом. Но иногда без нарастающего итога просто ни как.
11 zavyzka
 
26.11.09
12:17
(1) Спасибо.
Правда время выполнения запроса с нарастающим итогом увеличилось в 3 раза.
12 Sadovnikov
 
26.11.09
12:19
(1) Очень жестоко... Это ты за потерю документов мстишь?
13 Zapal
 
26.11.09
12:32
он гений, точно говорю 8)
14 ДенисЧ
 
26.11.09
12:36
(13) Точнее, Гений! :-)
2 + 2 = 3.9999999999999999999999999999999...