Версия для печати темы (https://pro1c.org.ua/index.php?showtopic=1660)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Общие вопросы _ Как с помощью команды выполнить отчет с некоторыми параметрами?

Автор: Batchir 25.05.10, 8:03

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

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

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

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



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

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

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


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


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



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

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

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

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

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

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

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



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

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



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

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



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

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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua