1С:Предприятие 8
Система программ

Как с помощью команды выполнить отчет с некоторыми параметрами?

25.06.2012

Использование параметризуемых команд в формах объектов позволяет при выполнении команды передать в обработчик команды какой-либо параметр, например значение ссылочного реквизита формы. И затем использовать его, например, открыть с этим параметром форму отчета.

В следующем примере, при помощи параметризируемой команды ОстаткиПоТовару выводится отчет, показывающий остатки товара, указанного в текущей строке списка товаров.

Для этого у отчета ОстаткиТоваровНаСкладах создана команда ОстаткиПоТовару со свойствами:

  • Тип параметра команды – СправочникСсылка.Товары
  • Группа - Командная панель формы.Важное.

  

Тип параметра команды определяет, что во всех формах, имеющих реквизит типа СправочникСсылка.Товары эта команда автоматически будет добавлена в список параметризуемых команд доступных в форме. В форме списка и в форме элемента справочника Товары эта команда будет автоматически видима.

Обработчик команды содержит код:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
   ПараметрыФормы = Новый Структура("Отбор, КлючНазначенияИспользования, СформироватьПриОткрытии", 
                                    Новый Структура("Товар", ПараметрКоманды), 
                                    "ОстаткиПоТовару", 
                                    Истина);
   ОткрытьФорму("Отчет.ОстаткиТоваровНаСкладах.Форма", 
                ПараметрыФормы, 
                ПараметрыВыполненияКоманды.Источник, 
                ПараметрыВыполненияКоманды.Уникальность, 
                ПараметрыВыполненияКоманды.Окно);
КонецПроцедуры 

В этот обработчик передается ПараметрКоманды, содержащий значение типа СправочникСсылка.Товар.

Затем создается структура параметров формы (ПараметрыФормы): ОтборКлючНазначенияИспользованияСформироватьПриОткрытии.

В параметр Отбор добавляется структура, содержащая элемент Товар со значением, содержащимся в параметре команды (ПараметрКоманды).

Параметр КлючНазначенияИспользования – «ОстаткиПоТовару» определяет назначение использования формы.

А параметру СформироватьПриОткрытии присваивается значение Истина, чтобы отчет формировался сразу после открытия.

Затем структура параметров формы передается в функцию ОткрытьФорму(), и форма, указанная в первом параметре метода, открывается с отбором по значению, переданному в ПараметрКоманды.

Таким образом, при нажатии кнопки Остатки товара в обработчик команды передается ссылка на текущий элемент номенклатуры, и по этому элементу в отчете устанавливается дополнительный отбор с видом сравнения Равно.

А как вывести отчет сразу по нескольким товарам?

Для этого можно установить свойство команды Режим использования параметра в значение Множественный.

В этом случае в обработчик команды в качестве параметра будет всегда передаваться массив значений (даже если выбрано одно значение). Первым элементом массива будет выступать текущая строка таблицы списка в режиме множественного выделения.

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

Если нужен отчет по группе справочника, можно выделить все элементы группы или в обработчике команды программно сформировать список товаров, для которых нужно получить остатки.

Подробнее о свойстве РежимИспользованияПараметраКоманды можно прочитать в синтакс-помощнике: Системные перечисления - Интерфейсные: