Имя: Пароль:
1C
1С v8
Объединение запросов
0 deringpavel
 
21.03.13
13:26
Здравствуйте еще раз. Есть небольшой вопрос по объединению.

В общем, текст запроса такой:

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

СГРУППИРОВАТЬ ПО
   ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации

ОБЪЕДИНИТЬ

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

СГРУППИРОВАТЬ ПО
   ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации

УПОРЯДОЧИТЬ ПО
   ПериодРегистрации

Нужно, чтобы основные начисления суммировались с дополнительными.

Скажем, есть строка за 01 сентября 2009 года - это сумма основных начислений, и ниже имеется строка от 30 сентября - это дополнительные начисления. Как сделать, чтобы эти две строки были одной строкой?
1 vicof
 
21.03.13
13:29
или объединением, или соединением. Только нафига в данном контексте.
2 YouAreEmpty
 
21.03.13
13:31
(0) Помести в виртуальную таблицу, а после сгруппируй результат по по периоду регистрации и получишь нужную сумму. Это если для объединения
3 deringpavel
 
21.03.13
13:34
Поместить в виртуальную таблицу - какой именно регистр?
4 vicof
 
21.03.13
13:35
(2) Мож во временную?
5 GANR
 
21.03.13
13:36
1. ОБЪЕДИНИТЬ на ОБЪЕДИНИТЬ ВСЕ
2. Обернуть запрос во вложенный и сгруппировать
6 deringpavel
 
21.03.13
13:45
Попробовал сейчас создать вложенный запрос, результаты получились те же.
7 deringpavel
 
21.03.13
13:52
http://fotki.yandex.ru/users/alexpavel42/view/574851/?page=0

вот скриншот результата
8 GANR
 
21.03.13
13:52
(6) СГРУППИРОВАТЬ ПО надо применить после оборачивания во вложенный запрос. Было сделано?
9 deringpavel
 
21.03.13
13:54
Сейчас пришлю код
10 vicof
 
21.03.13
13:57
(7) Ага, и все даты разные.
я ж говорю, нафига это надо (1).
Или даты убирай, или учи запросы.
11 deringpavel
 
21.03.13
13:57
ВЫБРАТЬ
   ВложенныйЗапрос.ПериодРегистрации,
   ВложенныйЗапрос.Результат
ИЗ
   (ВЫБРАТЬ
       ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации КАК ПериодРегистрации,
       СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат
   ИЗ
       РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
   ГДЕ
       ОсновныеНачисленияРаботниковОрганизаций.Сотрудник = &Сотрудник
       И ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &ДатаНачала И &ДатаОкончания
   
   СГРУППИРОВАТЬ ПО
       ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации,
       СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат)
   ИЗ
       РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
   ГДЕ
       ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник = &Сотрудник
       И ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &ДатаНачала И &ДатаОкончания
   
   СГРУППИРОВАТЬ ПО
       ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации) КАК ВложенныйЗапрос
12 GANR
 
21.03.13
13:57
ВЫБРАТЬ
   ВЗ.ПериодРегистрации,
   СУММА(ВЗ.Сумма) КАК Сумма
ИЗ
   (ВЫБРАТЬ
       ОсновныеНачисления.ПериодРегистрации КАК ПериодРегистрации,
       ОсновныеНачисления.Результат КАК Сумма
   ИЗ
       РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисления
   ГДЕ
       ОсновныеНачисления.ПериодРегистрации МЕЖДУ &ДатаНачала И &ДатаОкончания
       И ОсновныеНачисления.Сотрудник = &Сотрудник
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ДополнительныеНачисления.ПериодРегистрации,
       ДополнительныеНачисления.Результат
   ИЗ
       РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисления
   ГДЕ
       ДополнительныеНачисления.ПериодРегистрации МЕЖДУ &ДатаНачала И &ДатаОкончания
       И ДополнительныеНачисления.Сотрудник = &Сотрудник) КАК ВЗ

СГРУППИРОВАТЬ ПО
   ВЗ.ПериодРегистрации
13 GANR
 
21.03.13
13:58
(11) Естественно будет (7)!

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

отсутствует. Пробуй (12).
14 vicof
 
21.03.13
13:59
(12) У него все периоды разные. тут хоть группируй, хоть не группируй
15 GANR
 
21.03.13
14:01
ВЫБРАТЬ
   ВЗ.ПериодРегистрации,
   СУММА(ВЗ.Сумма) КАК Сумма
ИЗ
   (ВЫБРАТЬ
       НАЧАЛОПЕРИОДА(ОсновныеНачисления.ПериодРегистрации, МЕСЯЦ) КАК ПериодРегистрации,
       ОсновныеНачисления.Результат КАК Сумма
   ИЗ
       РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисления
   ГДЕ
       ОсновныеНачисления.ПериодРегистрации МЕЖДУ &ДатаНачала И &ДатаОкончания
       И ОсновныеНачисления.Сотрудник = &Сотрудник
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       НАЧАЛОПЕРИОДА(ДополнительныеНачисления.ПериодРегистрации, МЕСЯЦ),
       ДополнительныеНачисления.Результат
   ИЗ
       РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисления
   ГДЕ
       ДополнительныеНачисления.ПериодРегистрации МЕЖДУ &ДатаНачала И &ДатаОкончания
       И ДополнительныеНачисления.Сотрудник = &Сотрудник) КАК ВЗ

СГРУППИРОВАТЬ ПО
   ВЗ.ПериодРегистрации