Консоль запроса: подсчёт количества документов в группировке по детальным записям
Вариант использования временной таблицы для подсчёта количества документов по группируемому полю, не скрывая детальные записи входящих в него полей.
В консоли запроса возникла необходимость вывести итоговый подсчёт количества документов "Квитование счета" (поле "Регистратор") по группируемому полю "СчетНаОплату" (поле "ДокументКвитования"). Через агрегатную функцию "КОЛИЧЕСТВО" мы получаем ограничение, когда детальные записи в группировке будут свёрнуты (не отобразятся данные по каждому документу внутри группировки), а мне необходимо подсчитать количество документов с полным отображением строк всех документов "Квитование счета".
Верным решением будет: создать временную таблицу - подсчитать в ней количество документов "Квитование счета" по группируемому документу "СчетНаОплату", сохранить это количество в оперативную память и получить это количество из временной таблицы в основном запросе виртуальной таблицы через соединение этих 2-х таблиц.
Полный текст запроса получился таким:
ВЫБРАТЬ
БССДДанныеКвитованияПоДоговорам.ДокументКвитования КАК СчетНаОплату,
КОЛИЧЕСТВО(БССДДанныеКвитованияПоДоговорам.Регистратор) КАК КоличествоКвитовок
ПОМЕСТИТЬ ВТРегистратор
ИЗ
РегистрСведений.БССДДанныеКвитованияПоДоговорам КАК БССДДанныеКвитованияПоДоговорам
СГРУППИРОВАТЬ ПО
БССДДанныеКвитованияПоДоговорам.ДокументКвитования
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 3
БССДДанныеКвитованияПоДоговорам.ДокументКвитования КАК СчетНаОплату,
БССДДанныеКвитованияПоДоговорам.Регистратор КАК КвитованиеРасквитованиеДокумент,
БССДДанныеКвитованияПоДоговорам.Регистратор.Дата КАК ДатаДокументаКвитования,
БССДДанныеКвитованияПоДоговорам.НомерДоговора КАК ДоговорСтрахования,
БССДДанныеКвитованияПоДоговорам.ДокументОплаты КАК ДокументОплаты,
БССДДанныеКвитованияПоДоговорам.ДокументОплаты.НомерВходящегоДокумента КАК НомерДокументаОплаты,
БССДДанныеКвитованияПоДоговорам.ДокументОплаты.ДатаВходящегоДокумента КАК ДатаДокументаОплаты,
БССДДанныеКвитованияПоДоговорам.ДокументОплаты.Контрагент КАК Контрагент,
БССДДанныеКвитованияПоДоговорам.ДокументОплаты.ВалютаДокумента КАК Валюта,
БССДДанныеКвитованияПоДоговорам.Сквитовано КАК Сквитовано,
БССДДанныеКвитованияПоДоговорам.Регистратор.Ответственный КАК Ответственный,
ВТРегистратор.КоличествоКвитовок КАК КоличествоКвитовок
ИЗ
РегистрСведений.БССДДанныеКвитованияПоДоговорам КАК БССДДанныеКвитованияПоДоговорам
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТРегистратор КАК ВТРегистратор
ПО БССДДанныеКвитованияПоДоговорам.ДокументКвитования = ВТРегистратор.СчетНаОплату
ГДЕ
ВТРегистратор.КоличествоКвитовок = 3
УПОРЯДОЧИТЬ ПО
СчетНаОплату
01
Первый блок - это временная таблица, из которой я выбираю поля из регистра: группируемое поле "СчетНаОплату" и количество документов "Регистратор" (это "Квитование счета") по этому счёту. В конструкторе запроса, можно увидеть созданную временную таблицу:

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

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