Имя: Пароль:
1C
1С v8
Передача данных с ФормыЭлемента справочника в параметр отчёта при его открытии
0 JVStalin
 
26.11.24
16:12
Есть отчёт на скд (не внешний), в котором есть два параметра:
&БанковскийСчет (СправочникСсылка.БанковскиеСчетаОрганизаций) и &Договор (СправочникСсылка.ДоговорыКонтрагентов).

Мне нужно заполнить параметр &БанковскийСчет при открытии отчёта из формыЭлемента справочника ДоговорыКонтрагентов, указанным на этой форме значением.
Сам отчёт добавляется на формыЭлемента справочника ДоговорыКонтрагентов следующим способом:

Модуль менеджера отчёта АнализУчётаДСДД1ПоСчёту

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
	
#Область ПрограммныйИнтерфейс

#Область КомандыПодменюОтчеты

// Добавляет команду отчета в список команд.
// 
// Параметры:
//   КомандыОтчетов - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов
// Возвращаемое значение:
//   СтрокаТаблицыЗначений - новая команда отчета.
Функция ДобавитьКомандуОтчета(КомандыОтчетов) Экспорт

	Если ПравоДоступа("Просмотр", Метаданные.Отчеты.АнализУчётаДСДД1ПоСчёту) Тогда
		
		КомандаОтчет = КомандыОтчетов.Добавить();
		
		КомандаОтчет.Менеджер = Метаданные.Отчеты.АнализУчётаДСДД1ПоСчёту.ПолноеИмя(); 
		КомандаОтчет.Представление = "Анализ учёта ДС ДД 1";
		КомандаОтчет.МножественныйВыбор = Ложь;
		КомандаОтчет.Важность = "Обычное";   
		КомандаОтчет.ДополнительныеПараметры.Вставить("ИмяКоманды","АнализУчётаДСДД1ПоСчёту");
		
		Возврат КомандаОтчет;
		
	КонецЕсли;

	Возврат Неопределено;

КонецФункции

#КонецОбласти

#КонецОбласти 
		
#КонецЕсли



Модуль менеджера справочника ДоговорыКонтрагентов

&Вместо("ДобавитьКомандыОтчетов")
Процедура НовыйДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
	КомандаОтчет =	Отчеты.АнализУчётаДСДД1ПоСчёту.ДобавитьКомандуОтчета(КомандыОтчетов);
	Если КомандаОтчет <> Неопределено Тогда
		КомандаОтчет.ВидимовстьВФормах = "ФормаЭлемента";
	КонецЕсли;	
	ДоговорыКонтрагентовЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
	Отчеты.СостояниеВыполненияДокументов.ДобавитьКомандуСостояниеВыполненияДоговора(КомандыОтчетов);
КонецПроцедуры


Где, как и в какой момент нужно брать это значение и передавать его в параметр отчёта?
1 Волшебник
 
26.11.24
16:21
что такое ДС ДД?
2 JVStalin
 
26.11.24
16:25
(1) Это временное название отчёта, так как пока не определились как его хотят видеть, а так - движение средств доходного договора
3 Волшебник
 
26.11.24
16:35
Вы видите разницу между:
     Функция ДобавитьКомандуОтчета(КомандыОтчетов) Экспорт
и этим?
     &Вместо("ДобавитьКомандыОтчетов")

а это что за хня?
ВидимовстьВФормах
4 JVStalin
 
26.11.24
16:56
(3) "ВидимовстьВФормах" это я случайно при копировании кода написал, в коде без ошибок.

&Вместо - заменяет такую же процедуру в справочнике ДоговорыКонтрагентов, который находится не в расширении. Так что всё нормально с этим
5 d4rkmesa
 
26.11.24
17:20
(0) В модуле объекта отчета что-то вроде:


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

Что-то я забыл, как правильно код вставлять, дома исправлю.
6 Волшебник
 
26.11.24
17:16
(4) А давайте Вы нам покажете НАСТОЯЩИЙ программный код?
7 JVStalin
 
26.11.24
17:23
(6) это и есть настоящий код, не понимаю чего вы хотите. Я работаю в расширении, и это весь код из модулей в нём.
8 JVStalin
 
26.11.24
18:00
(5) немного не понял, где идёт взятие данных из формыэлемента справочника?
9 Мультук
 
гуру
26.11.24
18:02
(7)

Например в УТ/ЕРП по выбранной строке в списке номенклатуры  формируется отчёт "Остатки и доступность".

Номенклатура передаётся в отчёт.
Я бы посмотрел там (ну или еще в каком месте), уверен - в типовых куча примеров.
10 d4rkmesa
 
26.11.24
18:36
(8) Параметры.ПараметрКоманды пробрасывается из подключаемой команды, обычно это либо Ссылка, либо Массив ссылок, в зависимости от формы, где команда подключена. Если дин. список без ссылок, то там немного иначе массив выглядит, но суть та же. Но это для простых случаев.
А, еще в модуле объекта для программного интерфейса нужно добавить:

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

Если пробуете на копии, нужно будет запустить БСП-ное обновление вспомогательных данных.
Забыл написать, это для ERP/КА/УТ. Там еще нужно будет добавить в ВариантыОтчетовУТПереопределяемый.НастроитьВариантыОтчетов(...) что-то вроде:

    #Область КМ_ОтслеживаниеИзмененийПоказателей
    ОписаниеОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.КМ_ОтслеживаниеИзмененийПоказателей);
    ОписаниеОтчета.ОпределитьНастройкиФормы = Истина;
    ОтключитьОтчет(ОписаниеОтчета);
    #КонецОбласти
11 JVStalin
 
26.11.24
19:21
(10) Тогда утром попробую и отпишусь
(9) Как раз в ЕРП я и делаю отчёт, просто совсем запутался с передачей данных из формы, из которой открывается отчёт, в параметр в отчёте.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший