09.12.2009

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

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

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

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

 

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

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

Копировать в буфер обмена
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

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

КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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