Консоль запроса: подсчёт количества документов в группировке по детальным записям

Вариант использования временной таблицы для подсчёта количества документов по группируемому полю, не скрывая детальные записи входящих в него полей.

В консоли запроса возникла необходимость вывести итоговый подсчёт количества документов "Квитование счета" (поле "Регистратор") по группируемому полю "СчетНаОплату" (поле "ДокументКвитования"). Через агрегатную функцию "КОЛИЧЕСТВО" мы получаем ограничение, когда детальные записи в группировке будут свёрнуты (не отобразятся данные по каждому документу внутри группировки), а мне необходимо подсчитать количество документов с полным отображением строк всех документов "Квитование счета".

Верным решением будет: создать временную таблицу - подсчитать в ней количество документов "Квитование счета" по группируемому документу "СчетНаОплату", сохранить это количество в оперативную память и получить это количество из временной таблицы в основном запросе виртуальной таблицы через соединение этих 2-х таблиц.

 

Полный текст запроса получился таким:

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

01

Первый блок - это временная таблица, из которой я выбираю поля из регистра: группируемое поле "СчетНаОплату" и количество документов "Регистратор" (это "Квитование счета") по этому счёту. В конструкторе запроса, можно увидеть созданную временную таблицу:

2025-02-09 184055

02

Во втором блоке идёт основной запрос к виртуальной таблице, где я вывожу подсчитанное количество квитовок из временной таблицы по группируемому счёту. Чтобы запрос заработал, необходимо соединить эти таблицы через одно общее поле "СчетНаОплату". Связь в конструкторе выглядит так:

2025-02-09 190647

03

Последнее, что можно добавить по этим пакетам запросов - я добавил условие на количество подсчитанных документов квитовок (столько же строк = "3" вывожу в результате запроса):

2025-02-09 191516

mr. Mak

Остались вопросы? Пишите на почту admin@hzit.ru

Администратор сайта hzit.ru
Back to top