В прошлых статьях: Консоль компоновки данных и Консоль компоновки данных – практические приемы работы.Часть 1 вскользь упоминалось об возможности анализа данных 1С, выбираемых с помощью консоли компоновки. Остановимся на этом моменте подробнее.
Конечно же, далеко не во всех случаях нужно использовать консоль. Если отчет состоит из простого запроса, созданного с помощью конструктора, то вполне достаточно стандартных средств. Но бывают и другие ситуации. Запрос сложен, либо почему-то возвращает неверные данные. Либо данные 1с, полученные в результате запроса нуждаются в дополнительной обработке.
Как выполнять запросы и выставлять параметры, я уже рассказывал в предыдущей статье. Теперь рассмотрим средства для анализа полученных результатов. Когда мы выполняем запрос, то на панели результатов мы видим таблицу значений, который этот запрос возвращает. Самое простое что может понадобиться –наложить отбор на уже полученный результат. Для этого конечно можно написать дополнительное условие в запросе. Но это отнимет драгоценное время, ведь все можно сделать проще. На панели результата видим кнопки стандартные кнопки отбора
Можно отобрать по текущему значению в колонке – при этом итоговые суммы (в нижней части онка, количество строк, суммы числовых колонок) пересчитаются .
Можно подсчитать количество различных значений в колонке – частая задача для поиска неуникальных записей. Если количество различных совпадает с общим числом строк – то все значения в колонке уникальны.
Еще одна возможность – сравнение результатов двух различных (или одинаковых, но с разными параметрами) запросов. Текущий запрос можно скопировать вместе с установленными параметрами. Кнопка «Копировать» в левом верхнем углу.
Далее выполняя запросы поочередно, можно визуально сравнивать их результаты – они не сбрасываются после выполнения текущего запроса.
Отдельно следует напомнить о возможности просмотра данных временных таблиц. Для этого есть два способа – один в меню текста запроса – Данные временных таблиц запроса.
При другом способе достаточно просто выделить имя временной таблицы и нажать кнопку выполнить – ее данные отразятся на панели результатов.
Допустим,есть запрос :
Выбрать Т.* Поместить ВременнаяТаблица ИЗ &ТаблицаЗначений
Таблица значений заполняется кодом и устанавливается как параметр. Чтобы выполнить подобный запрос в консоли, нужно консоли объектов заполнить таблицу значений и передать ее как параметр в консоль запросов. На вкладке консоли объектов, пишем код, который в переменной «Результат» возвращает нужную таблицу значений.
Задаем алиас этой вкладки
В консоли запросов в соответствующем параметре указываем заданный ранее в объектах алиас. Для этого ставим флажок выражения и претворяем имя алиаса знаком решетки.
При запуске запроса таблица в объекте будет заполнена и передана в параметр.
Допустим нам нужно данными, полученными в результате работы, заполнить табличную часть документа. Для примера рассмотрим простое действие – возврат всех остатков товаров выбранного поставщика. В консоли делаем запрос, выбирающий из регистра нужные остатки.
На закладке результата есть кнопка «Поместить в объект». Ее назначение – копирование таблицы, содержащей выборку, на выбранную вкладку консоли объектов.
Итак, нажимаем ее, выбираем нужную вкладку в консоли объектов и нажимаем ОК в диалоговом окне. Когда диалоговое окно активно, можно переключать вкладки или создавать новые. На выбранной вкладке появляется таблица значений – копия выборки запроса.
Теперь можно перейти на панель исходного кода и заполнить выбранную (или новую, тогда ее нужно создать в коде) накладную на возврат товаров поставщику. Для этого напишем следующий код:
Таб = #ТаблицаЗначений; //обращение к таблице из закладки "Таблица значений" Док = &Док.ПолучитьОбъект(); //Будем заполнять уже готовый записанный документ, указанный в параметре Док.Товары.Очистить(); //Перебираем строки Для Каждого СтрОстатка Из Таб Цикл НоваяСтрока = Док.Товары.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрОстатка); // Заполняем новую строку данными из строки запроса //Для заполенения остальных полей, которых нет в запросе, воспользуемся готовыми фрагментами кода из формы документа ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(НоваяСтрока, Док, "Приобретение"); СтруктураШапкиДокумента = Новый Структура("Контрагент, ТипЦен, ДоговорКонтрагента, ДатаДокумента, ВалютаДокумента, УчитыватьНДС, СуммаВключаетНДС", Док.Контрагент, Док.ТипЦен, Док.ДоговорКонтрагента, Док.Дата,Док.ВалютаДокумента, Док.УчитыватьНДС,Док.СуммаВключаетНДС); ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПокупкиТабЧасти(НоваяСтрока, Док, СтруктураШапкиДокумента, Док.мВалютаРегламентированногоУчета); ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(НоваяСтрока, Док); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(НоваяСтрока, Док); #Итератор //выводит число повторений цикла КонецЦикла; Док.ПолучитьФорму().Открыть(); //Открываем форму, не записывая ее
Выполняем его и видим нужный результат