Имя: Пароль:
1C
1С v8
Передача параметров в отчет на СКД
0 lite777
 
27.04.22
09:14
Здравствуйте ,нужно по команде открыть отчет на скд и передать туда параметры, но параметры не передаются

Процедура Команда2(Команда)  
    // Вставить содержимое обработчика.
    СписокНоменклатуры = Новый СписокЗначений;
    СписокНоменклатуры.Добавить(Объект.ном1);
    СписокНоменклатуры.Добавить(Объект.Ном2);

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

Далее вмодуле отчета-

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ЗаполнитьПользовательскиеНастройки();
КонецПроцедуры


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

СКД-
ВЫБРАТЬ
    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
    ТоварыНаСкладахОстатки.Склад КАК Склад,
    ТоварыНаСкладахОстатки.Характеристика КАК Характеристика
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ГДЕ
    ТоварыНаСкладахОстатки.Номенклатура В(&Номенклатура)
1 toypaul
 
гуру
27.04.22
09:15
заполнять надо при открытии
2 toypaul
 
гуру
27.04.22
09:17
кроме этого в отчет можно передать непосредственно польз. настройки.
но это сделать сложнее (даже я так никогда не делаю)
3 lite777
 
27.04.22
09:23
(1) На клиенте ? Что то в модуль отчета при отладке даже не могу попасть , дохожу до ОткрытьФорму("Отчет.ОтчетПоОст.Форма",ПараметрыОтчета) ;
4 lite777
 
27.04.22
09:23
Отчет открывается но без параметров
5 lite777
 
27.04.22
09:35
Может форму надо создавать о отчета на СКД ?
6 toypaul
 
гуру
27.04.22
09:50
так это не в форме что вызывается ... ПриСозданииНаСервере
7 lite777
 
27.04.22
09:51
(6) Счас в модуле отчета
8 toypaul
 
гуру
27.04.22
09:53
тогда нужно в другом событии это делать - ПриЗагрузкеПользовательскихНастроекНаСервере
9 lite777
 
27.04.22
10:15
Перехватить отладку не могу ни в одной из процедур отчета
10 Ботаник Гарден Меран
 
27.04.22
11:20
Отчет на СКД без формы открывается в общей форме, обычно называется "ФормаОтчета".
Там и нужно искать процедуру ПриСоздании.
11 lite777
 
27.04.22
11:27
(10) А...
12 toypaul
 
гуру
27.04.22
11:42
(9) какой-то бред. предлагаю для начала разобраться как реализованы события в отчетах созданных на базе БСП

(10) не надо там ничего искать. туда можно посмотреть чтобы понять что и как работает. там ничего менять не надо.
13 lite777
 
27.04.22
11:47
(12) Ну логично , может форму создать ?
14 toypaul
 
гуру
27.04.22
12:06
(13) ленивым можно создать форму
15 VoditelKobyly
 
27.04.22
12:22
(13)А вот так не можете написать?
ФормаОтчета =  ОткрытьФорму("Отчет.ОтчетПоОст.Форма",ПараметрыОтчета);
Получите доступ ко всем настройкам отчета.
16 toypaul
 
гуру
27.04.22
12:23
(15) так никто написать не может. низзя так написать
17 VoditelKobyly
 
27.04.22
12:25
(16) Я просто спросил...
18 VoditelKobyly
 
27.04.22
12:26
Нет, так нет...