Имя: Пароль:
1C
1С v8
Операции с строками запроса
0 Джон Тирби
 
30.05.13
12:23
День добрый, подскажите люди добрые, может кто сталкивался.
Есть достаточно простенький запрос в котором необходимо добавить расчетное поле, его значением будет разница значений поля текущей строки и следующей за ней. Или я хочу невозможного.

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


В результате вот что хочу http://clip2net.com/s/593r1T
заранее спасибо
1 Wobland
 
30.05.13
12:25
ты хочешь возможного
2 Wobland
 
30.05.13
12:25
(1) как-то я поспешил. ты хочешь непонятного
3 Джон Тирби
 
30.05.13
12:25
ссылку побило, вот
http://clip2net.com/s/593r1T
4 Джон Тирби
 
30.05.13
12:28
тоесть нужно расчитать разницу между полями Период для каждой строки с ее предыдущей
5 kosts
 
30.05.13
12:28
Помести запрос во временную таблицу. В следующем запросе соедини временную таблицу саму с собой по каким либо полям. Затем ну и посчитай там же нужную разницу.
6 Mitriy
 
30.05.13
12:53
ВЫБРАТЬ
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Период,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток
ПОМЕСТИТЬ ВТ_ОстаткиОбороты
ИЗ
   РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&Начало, &Конец, День, Движения, ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
ГДЕ
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент = &Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ_ОстаткиОбороты.Период,
   ВТ_ОстаткиОбороты.Контрагент,
   МАКСИМУМ(ВТ_ОстаткиОбороты1.Период) КАК Период1
ПОМЕСТИТЬ ВТ_Периоды
ИЗ
   ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты1
       ПО ВТ_ОстаткиОбороты.Контрагент = ВТ_ОстаткиОбороты1.Контрагент
           И ВТ_ОстаткиОбороты.Период > ВТ_ОстаткиОбороты1.Период

СГРУППИРОВАТЬ ПО
   ВТ_ОстаткиОбороты.Контрагент,
   ВТ_ОстаткиОбороты.Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ_Периоды.Период,
   ВТ_ОстаткиОбороты.Контрагент,
   ВТ_ОстаткиОбороты.СуммаВзаиморасчетовНачальныйОстаток,
   ВТ_ОстаткиОбороты.СуммаВзаиморасчетовПриход,
   ВТ_ОстаткиОбороты.СуммаВзаиморасчетовРасход,
   ВТ_ОстаткиОбороты.СуммаВзаиморасчетовКонечныйОстаток
ПОМЕСТИТЬ ВТ_ПредыдущиеЗначения
ИЗ
   ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Периоды КАК ВТ_Периоды
       ПО ВТ_ОстаткиОбороты.Период = ВТ_Периоды.Период1
           И ВТ_ОстаткиОбороты.Контрагент = ВТ_Периоды.Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ_ОстаткиОбороты.Период КАК Период,
   ВТ_ОстаткиОбороты.Контрагент КАК Контрагент,
   ВТ_ОстаткиОбороты.СуммаВзаиморасчетовНачальныйОстаток - ЕСТЬNULL(ВТ_ПредыдущиеЗначения.СуммаВзаиморасчетовНачальныйОстаток, 0) КАК НачальныйОстатокРазница,
   ВТ_ОстаткиОбороты.СуммаВзаиморасчетовНачальныйОстаток,
   ВТ_ОстаткиОбороты.СуммаВзаиморасчетовПриход,
   ВТ_ОстаткиОбороты.СуммаВзаиморасчетовРасход,
   ВТ_ОстаткиОбороты.СуммаВзаиморасчетовКонечныйОстаток
ИЗ
   ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
       ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПредыдущиеЗначения КАК ВТ_ПредыдущиеЗначения
       ПО ВТ_ОстаткиОбороты.Период = ВТ_ПредыдущиеЗначения.Период
           И ВТ_ОстаткиОбороты.Контрагент = ВТ_ПредыдущиеЗначения.Контрагент

УПОРЯДОЧИТЬ ПО
   Контрагент,
   Период
7 Mitriy
 
30.05.13
12:55
в первом запросе условие лучше в параметры виртуальной таблицы перенести...

ВЫБРАТЬ
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Период,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток
ПОМЕСТИТЬ ВТ_ОстаткиОбороты
ИЗ
   РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&Начало, &Конец, День, Движения, Контрагент = &Контрагент) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
8 Джон Тирби
 
30.05.13
13:59
Все получилось, спасибо большое!

ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Период,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток
ПОМЕСТИТЬ Временная
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&Начало, &Конец, День, , ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
ГДЕ
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент = &Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Временная.Период КАК ДатаОперации,
МИНИМУМ(Временная1.Период) КАК ДатаСледующейОпреации,
Временная.Контрагент,
Временная.СуммаВзаиморасчетовНачальныйОстаток,
Временная.СуммаВзаиморасчетовПриход,
Временная.СуммаВзаиморасчетовРасход,
Временная.СуммаВзаиморасчетовКонечныйОстаток
ИЗ
Временная КАК Временная
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Временная КАК Временная1
 ПО Временная.Контрагент = Временная1.Контрагент
  И Временная.Период < Временная1.Период

СГРУППИРОВАТЬ ПО
Временная.Контрагент,
Временная.Период,
Временная.СуммаВзаиморасчетовНачальныйОстаток,
Временная.СуммаВзаиморасчетовПриход,
Временная.СуммаВзаиморасчетовРасход,
Временная.СуммаВзаиморасчетовКонечныйОстаток

УПОРЯДОЧИТЬ ПО
ДатаОперации