Имя: Пароль:
1C
1С v8
Параметры СКД при нескольких схемах.
0 Pok3Mon
 
13.08.13
16:29
Всем добрый день!

Подскажите пожалуйста, в схеме есть Параметр &Подрядчик, пытаюсь его выставить программно, но всегда пишет Параметр с указанным именем не найден

&НаКлиенте
Процедура абрСформироватьОтчетЗаявки(Команда)
    Если абрРольДоступна_Сервер("абрПодрядчик")ИЛИ абрРольДоступна_Сервер("ПолныеПрава") Тогда
        СформироватьОтчетЗаявки_НаСервере(абрРезультат, "абрМакетОтчетаПоЗаявкам_Подрядчик");
        СкомпоноватьРезультат(РежимКомпоновкиРезультата.Фоновый);    
    ИначеЕсли абрРольДоступна_Сервер("абрКлиент") Тогда
        СформироватьОтчетЗаявки_НаСервере(абрРезультат, "абрМакетОтчетаПоЗаявкам");
        СкомпоноватьРезультат(РежимКомпоновкиРезультата.Фоновый);
    КонецЕсли;
КонецПроцедуры

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

    Настройки = Отчет.КомпоновщикНастроек.Настройки;
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    
    РасшифровкаДанных = Новый ДанныеРасшифровкиКомпоновкиДанных;
    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, РасшифровкаДанных);
    
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , РасшифровкаДанных);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(РезультатЭлемент);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
    абрРасшифровка = ПоместитьВоВременноеХранилище(РасшифровкаДанных, ЭтаФорма.УникальныйИдентификатор);
КонецПроцедуры
1 pessok
 
13.08.13
16:31
тип значения реквизита Подрядчик какой?
2 pessok
 
13.08.13
16:32
вангую, что параметрысеанса.текущийпользователь возвращает СправочникСсылка.Пользователи, а в Подрядчик что-то другое
3 Pok3Mon
 
13.08.13
16:34
(1) СправочникСсылка.Пользователи
4 Pok3Mon
 
13.08.13
16:34
Подрядчик у меня тоже СправочникСсылка.Пользователи
5 pessok
 
13.08.13
16:35
Тогда так:


Настройки = Отчет.КомпоновщикНастроек.Настройки;

ПараметрПодрядчик = Настройки.ПараметрыДанных.Элементы.Найти("Подрядчик");
ПараметрПодрядчик.Значение = ПараметрыСеанса.ТекущийПользователь
ПараметрПодрядчик.Использование = Истина;
6 Pok3Mon
 
13.08.13
16:37
{Отчет.ОтчетПоЗаявкам_ОтделДекларирования.Форма.ФормаОтчета.Форма(1832)}: Значение не является значением объектного типа (Значение)
    ПараметрПодрядчик.Значение = ПараметрыСеанса.ТекущийПользователь;

ПараметрПодрядчик возвращает Неопределено
7 pessok
 
13.08.13
16:39
(6) а ограничения на него не стоит, случаем, в схеме? потому что должно работать.

Из типового УТ:

    ЗначениеПараметра = ПараметрыДанных.Элементы.Найти("НачалоТекущегоПериода");
        Если ЗначениеПараметра <> Неопределено Тогда
            ПериодФормирования = ПолучитьПериодФормирования(ПараметрПериод.Значение, ПараметрПериодичность.Значение, 0);
            ЗначениеПараметра.Значение = ПериодФормирования.НачалоПериода;
            ЗначениеПараметра.Использование = Истина;
        КонецЕсли;
8 Pok3Mon
 
13.08.13
16:43
9 pessok
 
13.08.13
16:44
(8) что в Настройки.ПараметрыДанных.Элементы?
10 Pok3Mon
 
13.08.13
16:46
НачалоПериода; КонецПериода

Подрядчика почему-то нет.
11 pessok
 
13.08.13
16:46
Настройки = Отчет.КомпоновщикНастроек.Настройки;
может все таки
Настройки = ОтчетОБЪЕКТ.КомпоновщикНастроек.Настройки;
12 Pok3Mon
 
13.08.13
16:49
Не попадает в Настройки.ПараметрыДанных.Элементы.

Причем странно как-то в СхемаКомпоновкиДанных.Параметры Есть и НачалоПериода; КонецПериода; Подрядчик
13 V01tk2010
 
13.08.13
16:52
СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет(Макет);
На скрине что-то другое
14 Pok3Mon
 
13.08.13
16:54
(13) У меня вроде также как и у тебя СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет(Макет);

или что-то не то?
15 pessok
 
13.08.13
17:03
(14) а ведь и правда. какой, нафик, макет, когда у тебя схема называется абрЧтотоТам
16 Pok3Mon
 
13.08.13
17:06
Название Макета передается через параметр, что не так-то?
17 Pok3Mon
 
13.08.13
17:09
Из  (0) кода я специально убрал слово ТЭО
18 pessok
 
13.08.13
17:15
(16) а, да, сорри, не усмотрел.

(14) нет. не так

Настройки = Отчет.КомпоновщикНастроек.Настройки;


а надо


Настройки = ОтчетОбъект.КомпоновщикНастроек.Настройки;

попробуй
19 Pok3Mon
 
13.08.13
17:19
в (11)(12) Пробовал, не помогло.
20 zladenuw
 
13.08.13
17:23
я делал так. у меня в отчете используется две схемы. которая не по умолчанию.

   КомпоновщикМакетаА = Новый КомпоновщикМакетаКомпоновкиДанных;
    СхемаКомпоновкиДанныхА = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1");
    
    КомпоновщикНастроекА = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроекА.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанныхА));
    ДанныеРасшифровкиА = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикНастроекА.ЗагрузитьНастройки(СхемаКомпоновкиДанныхА.НастройкиПоУмолчанию);
    ЗаполнитьНастройки(КомпоновщикНастроекА.Настройки.ПараметрыДанных);
    //
    МакетКомпоновки = КомпоновщикМакетаА.Выполнить(СхемаКомпоновкиДанныхА,КомпоновщикНастроекА.Настройки,ДанныеРасшифровкиА,,
21 Pok3Mon
 
13.08.13
17:29
Вообщем мне помогло следующее:

    ОтчетОбъект.СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет(Макет);            
    Настройки = ОтчетОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
...
    МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных, Настройки, РасшифровкаДанных);
22 Pok3Mon
 
13.08.13
17:29
Всем спасибо за помощь!
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший