Имя: Пароль:
1C
 
Передача параметров в СКД
0 AlexWinch
 
12.12.23
16:57
Всем привет! Может кто поможет.
Ситуация такая, требуется сделать внешний отчёт для 6 шести документов, добавляю через доп отчеты и обработки. В сведениях обработки все прописал и отчёт видно в панели в каждом документе. В скд прописал отчёт и проверил в консоли запросов и все работает, но у меня там параметр указывается а именно сам документ по которому делается отчёт. В консоли запросов я этот параметр вручную указывают соответственно. Как сделать так, чтобы параметр автоматически передавался в скд именно того документа по которому делаю отчёт? Заранее спасибо 🙏
1 Donkey_hot
 
12.12.23
17:14
(0) для назначаемых отчетов и обработок – в форме обработки добавить параметр ОбъектыНазначения типа Произвольный. В этот параметр передается массив ссылок на объекты, для которых выполняется дополнительная обработка.
2 AlexWinch
 
12.12.23
17:20
Еще создал реквизит обработки ДокументСсылка и в модуле формы прописываю такой код:

&НаСервере
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка)  
    
    Отчет.ДокументСсылка = Параметры.ОбъектыНазначения[0]; //Документы.ЗаказПоставщику.НайтиПоНомеру("00-000040");Параметры.ОбъектыНазначения[0];
    
КонецПроцедуры

Потом в модуле объекта прописываю такое:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    Настройки = КомпоновщикНастроек.Настройки;
    ПараметрСсылка = Настройки.ПараметрыДанных.Элементы.Найти("Ссылка");
    ПараметрСсылка.Значение = ЭтотОбъект.ДокументСсылка;
    ПараметрСсылка.Использование = Истина;
    
    СхемаКомпоновки = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки();
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновки,НастройкиКомпоновки);
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);    
    
КонецПроцедуры

Но ничего не работает
3 AlexeyKh
 
12.12.23
17:29
остается только под отладчиком проходить
4 Монтгомери Бёрнс
 
12.12.23
17:55
&НаСервере
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка)  
    
    Отчет.ДокументСсылка = Параметры.ОбъектыНазначения[0]; //Документы.ЗаказПоставщику.НайтиПоНомеру("00-000040");Параметры.ОбъектыНазначения[0];
    
КонецПроцедуры

Вот в этом надо перво наперво проверить - а прилетает ли параметр в форму, а если он прилетает, есть ли в параметре необходимые данные. И похоже что в - Параметры.ОбъектыНазначения[0] - ничего нет.
5 toypaul
 
13.12.23
07:35
Если конфигурация типовая (на БСП), то у отчета есть события. В событиях (обычно при создании) передают этот параметр. Можно посмотреть в одном из типовых отчетов. Там обычно добавляют специальный вариант отчета (что-то про Контекст) ну и в модуле отчета должно быть событие ПриСозданииНаСервере
6 Радим1987
 
13.12.23
11:24
Если не ошибаюсь то в модуле отчета должна быть процедура

ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыКоманды) Экспорт....

А внутри после установки параметров СкомпоноватьРезультат()
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс