|
Подключаемая команда. Передача параметров. |
☑ |
0
Shalun
24.12.22
✎
14:04
|
Всем привет! Задача простая, нужно из документа "ПоступлениеБДС" открыть отчет "расчеты с клиентами".
В модуле менеджера Документа прописываю:
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры)
КомандаОтчет = КомандыОтчетов.Добавить();
КомандаОтчет.Менеджер = Метаданные.Отчеты.РасчетыСКлиентами.ПолноеИмя();
КомандаОтчет.Представление = НСтр("ru = 'Расчеты с клиентами'");
КомандаОтчет.МножественныйВыбор = Истина;
КомандаОтчет.Важность = "Обычное";
КомандаОтчет.ДополнительныеПараметры.Вставить("ИмяКоманды", "СостояниеРасчетовСКлиентомПоДокументам");
КомандаОтчет.КлючВарианта = "РасчетыСКлиентами";
КонецПроцедуры
Да, команда появляется, при нажатии открывается нужный отчет, НО по всем документам! А мне нужно, что бы отчет открылся конкретно по этому документу.
Полагаю что в отбор нужно вставить ссылку на этот документ, или реквизит, но вот на каком этапе, как это сделать, что то мозгов не хватает. Видим в предверии НГ не сображают. :-) Если есть кто живой, подскажите, как передать параметр отбора в данном случае?
Заранее благодарствую и всех с наступающими праздниками!
|
|
1
asady
24.12.22
✎
14:50
|
(0) что-то типа
КомандаОтчет.ДополнительныеПараметры.Вставить("Отбор", Новый Структура("ИмяДокумента","ПоступлениеБДС"));
|
|
2
eddy_n
25.12.22
✎
03:46
|
В модуле Объекта твоего отчёта придётся рисовать экспортную процедуру ПриСозданииНаСервере, которая будет ловить указанное тобою в ДополнительныхПараметрах ИмяКоманды и в соответствии с этим именем назначать отбор:
ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка) Экспорт
Параметры = ЭтаФорма.Параметры;
Если Параметры.Свойство("ПараметрКоманды")
И Параметры.ОписаниеКоманды.Свойство("ДополнительныеПараметры") Тогда
Если Параметры.ОписаниеКоманды.ДополнительныеПараметры.ИмяКоманды = "СостояниеРасчетовСКлиентомПоДокументам" Тогда
ЭтаФорма.ФормаПараметры.Отбор.Вставить("Ссылка", Параметры.ПараметрКоманды);
КонецЕсли;
Конецесли;
КонецПроцедуры
|
|
3
Shalun
10.01.23
✎
15:53
|
(1) Я так понял это в модуль менеджера вставляется? И по идее, в структуре должна содержаться сссылка на документ? Опять не понятно, т.к. этот модуль вызывается как из формы документа так и из списка. Механизм получения ссылок разный. Тогда как Быть?
(2) Да, такая процедура имеется, но она почему то не выполняется. :-( Может из за того что отчет построен на СКД?
|
|
4
eddy_n
11.01.23
✎
13:12
|
(3) Процедура не выполняется, потому что у тебя нет статической формы объекта.
|
|
5
Shalun
11.01.23
✎
16:09
|
Нашел! Порцедура ПриСозданииНаСервере выполняется в общей форме "ФормаОтчета".
В этой процедуре я пишу следующий код:
Если Параметры.Свойство("ПараметрКоманды") И Параметры.ОписаниеКоманды.ДополнительныеПараметры.ИмяКоманды = "СостояниеРасчетовСКлиентомПоДокументам" Тогда
Для каждого СтрокаПараметр Из Параметры.ПараметрКоманды Цикл
Параметры.Отбор.Вставить("Организация", СтрокаПараметр.Организация);
Параметры.Отбор.Вставить("Контрагент", СтрокаПараметр.Контрагнт);
КонецЦикла;
КонецЕсли;
Теперь все работает! :-)
Всем спасибо за помощь!!!
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший