Имя: Пароль:
1C
1С v8
Подключаемая команда. Передача параметров.
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
Нашел! Порцедура ПриСозданииНаСервере выполняется в общей форме "ФормаОтчета".
В этой процедуре я пишу следующий код:
    
     Если Параметры.Свойство("ПараметрКоманды") И Параметры.ОписаниеКоманды.ДополнительныеПараметры.ИмяКоманды = "СостояниеРасчетовСКлиентомПоДокументам" Тогда    
          Для каждого СтрокаПараметр Из Параметры.ПараметрКоманды Цикл  
         Параметры.Отбор.Вставить("Организация", СтрокаПараметр.Организация);
             Параметры.Отбор.Вставить("Контрагент", СтрокаПараметр.Контрагнт);
          КонецЦикла;
     КонецЕсли;

Теперь все работает! :-)
Всем спасибо за помощь!!!