Итак, приступим.
Открываем СКД
Вызываем конструктор запроса
Открываем текст запроса
Копируем его
Создаем новую внешнюю обработку
Для кнопки Выполнить задаем обработчик :
Запрос = Новый Запрос;
Запрос.Текст = «»;
Далее открываем в кавычках конструктор запроса и нажимаем кнопку запрос
Нажимаем кнопку редактировать запрос и вставляем скопированный ранее (в пункте 4) текст запроса
Затем нам нужно установить все параметры, для этого смотрим первоначальный отчет, и копируем оттуда все параметры
Теперь самое интересное… Наш запрос разбит на следующие блоки :
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПоследниеЗаписиРегитсра.ПериодРегистрации КАК ПериодРегистрации,
| ПоследниеЗаписиРегитсра.ФизЛицо КАК ФизЛицо
|ПОМЕСТИТЬ НеИмеютправоНаПенсию
|ИЗ
| (ВЫБРАТЬ
| Периоды.ПериодРегистрации КАК ПериодРегистрации,
| ГражданствоФизЛиц.ФизЛицо КАК ФизЛицо,
| МАКСИМУМ(ГражданствоФизЛиц.Период) КАК Период
| ИЗ
| ВТПериоды КАК Периоды
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц КАК ГражданствоФизЛиц
| ПО (КОНЕЦПЕРИОДА(Периоды.ПериодРегистрации, МЕСЯЦ) >= ГражданствоФизЛиц.Период)
|
| СГРУППИРОВАТЬ ПО
| Периоды.ПериодРегистрации,
| ГражданствоФизЛиц.ФизЛицо) КАК ПоследниеЗаписиРегитсра
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц КАК ГражданствоФизЛиц
| ПО ПоследниеЗаписиРегитсра.ФизЛицо = ГражданствоФизЛиц.ФизЛицо
| И ПоследниеЗаписиРегитсра.Период = ГражданствоФизЛиц.Период
|ГДЕ
| ГражданствоФизЛиц.НеИмеетПравоНаПенсию
|;
|///////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
…………………
|ПОМЕСТИТЬ ВТНалоговыйУчет2
|;
///////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
…………………
|ПОМЕСТИТЬ ВТНалоговыйУчет3
|;
Что бы просмотреть результат расчета после каждого блока «Выбрать» нам нужно перед строчкой «|;» закончить текст запроса, а именно поставить одну кавычку и точку с запятой;
Тогда последние 2 строчки запроса :
| ГражданствоФизЛиц.НеИмеетПравоНаПенсию
|;
Превратятся в :
| ГражданствоФизЛиц.НеИмеетПравоНаПенсию»;
//|;
Оставшийся текст запроса нам пока не интересен, можно его закомментировать, либо присвоить любой переменной его текст.
И заключительный шаг : Убираем вывод запроса во временную таблицу (закомментируем строчку)
//|ПОМЕСТИТЬ НеИмеютправоНаПенсию
И все !
Теперь мы можем Поставить точку останова на строке
Выгрузка = Запрос.Выполнить().Выгрузить();
Выделяем «Выгрузка», жмем Shift+f9 затем f2 и видим результат запроса!
Далее таким образом «разрывать» запрос можно после каждой временной таблицы, и просматривать результат (предварительно не забыв предыдущий текст запроса восстановить в первоначальный вид).
Вот таким образом можно анализировать гигантские запросы из ЗУПа, например (В которых присутствует порядка 10 таких временных таблиц).
Иногда без такого разбора понять, откуда формируется «цифра», очень трудно.
Буду рад, если для кого то эта информация будет полезной =)