Имя: Пароль:
1C
 
Помогите разобраться, почему разные результаты запроса с итогом?
0 iksanov
 
05.06.16
07:55
Здравствуйте. Помогите решить проблему с запросом по итогам.
Имеем первоначальный запрос:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
                ВзОстатки.Организация КАК Организация,
                ВзОстатки.Контрагент КАК Контрагент,
                ВзОстатки.Подразделение КАК Подразделение,
                ВзОстатки.Договор КАК Договор,
                ВзОстатки.Документ КАК Документ,
                ВзОстатки.Организация.Формат КАК ФорматОрганизации,
                ВзОстатки.Документ.Договор.ТипОплаты КАК ТипОплатыДокумента,
                ВзОстатки.Документ.Номер КАК НомерДокумента,
                ВзОстатки.Документ.Дата КАК ДатаДокумента,
                -1 * ВзОстатки.СуммаОстаток КАК СуммаОстаток
ИЗ
                РегистрНакопления.Взаиморасчеты.Остатки(, ) КАК ВзОстатки
ИТОГИ
                СУММА(СуммаОстаток)
ПО
                Организация,
                Контрагент,
                Подразделение,
                Договор,
                Документ

Он выдает такой результат:
http://image.prntscr.com/image/6225fa04e16745008280710183f33bd1.png

Если запрос поместить в виртуальную таблицу, и сделать по ней итоги, то результат группировок немного меняется, вот что получается:

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

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

Вот результат:
http://image.prntscr.com/image/c88b10cb38e84c5f88d8f1b6728f8d12.png

Можно ли после того как поместили запрос во ВТ, получить результат как в первом запросе? Чтоб не менять код вывода по группировкам. Если покажете как, буду признателен.
1 RomanYS
 
05.06.16
10:33
добавить в итоги те поля, которые не попали в группировки:

Итоги
максимум(ФорматОрганизации),
...
2 iksanov
 
05.06.16
11:03
RomanYS так?
ВЫБРАТЬ РАЗРЕШЕННЫЕ
                ВзОстатки.Организация КАК Организация,
                ВзОстатки.Контрагент КАК Контрагент,
                ВзОстатки.Подразделение КАК Подразделение,
                ВзОстатки.Договор КАК Договор,
                ВзОстатки.Документ КАК Документ,
                ВзОстатки.Организация.Формат КАК ФорматОрганизации,
                ВзОстатки.Документ.Договор.ТипОплаты КАК ТипОплатыДокумента,
                ВзОстатки.Документ.Номер КАК НомерДокумента,
                ВзОстатки.Документ.Дата КАК ДатаДокумента,
                -1 * ВзОстатки.СуммаОстаток КАК СуммаОстаток
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
                РегистрНакопления.Взаиморасчеты.Остатки(, ) КАК ВзОстатки
;

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

результат:
http://image.prntscr.com/image/eb120a96f0694641958c6c52cf32a106.png

Теперь получаются новые группировки в которые надо входить и потом уже обходить.
А в коде обход осуществляется до группировки (колонка) "документы", выделил красным, глубже не заходит.
Мне надо как на первом скрине.
3 RomanYS
 
05.06.16
22:14
(2) не так: все остальные поля("новые группировки") тоже надо было добавлять в "итоги максимум(..), а не в "ПО"
4 iksanov
 
06.06.16
07:17
RomanYS,
Спасибо помогло.
Только один момент, теперь упорядочивание происходит неправильно, потому что в итог выводится максимальное значение полей и по ним упорядочивает. Можно как то это решить?
5 LordCMEPTb
 
06.06.16
08:47
(0) В первом запросе получается так, что все поля выбираются в итоги, т.е. детальных записей нет. Во втором запросе получаются детальные записи, которые не входят в поля группировок, хотя по сути должны.
Вариант решения: убрать из 2го запроса "Документ" из итоговых полей группировки.