Имя: Пароль:
1C
1С v8
Скд. программный вызов
0 jenny_tea
 
31.05.12
17:08
Ситуация следующая:
У меня есть некая обработка(Рабочий стол для руководителей подразделений). и им необходимо выдавать Отчет Расчетная ведомость на его сотрудников.


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

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

Все вроде хорошо, НО! для работы необходимо пользователю дать права на кучу регистров и документов, что делать не очень хочется.

Попытка поставить ПривелигированныйРежим в начале и в конце данного блока, не дает ничего так как на форме не работает УстановитьПривелигированныйРежим. Если поставить данные действия в модуль обработки также не сработали.

Тогда я попыталась сделать данную процедуру в общем модуле который выполняется на сервере с привелигированным режимом, и передаю ТабДок. При этом он ругается что я пытаюсь передать мутабельное значение результата.

Есть какая-нибудь возможность обойти, подскажите?
1 Buster007
 
31.05.12
17:11
А зачем передавать на сервер ТабДок? Оттуда его наоборот надо вернуть.
2 jenny_tea
 
31.05.12
17:13
он не возвращается с сервера, я оттуда и передаю
3 Necessitudo
 
31.05.12
17:17
Мда, жестоко)) Как я делаю в 8.1 - выполняю запрос в общем модуле с привилегированным режимом, оттуда получаю таблицу значений.И вот уже ТЗ передаю в СКД в качестве внешнего источника данных).
4 Buster007
 
31.05.12
17:23
каким образом ты пытаешься передать ТабДок?
5 jenny_tea
 
31.05.12
20:28
делаю экспортную функцию и делаю возврат табдок; на этом моменте ругается на мутабельное значение? а какие есть варианты?
6 jenny_tea
 
01.06.12
09:07
поднимаю с новыми силами с начала рабочего дня:)
7 jenny_tea
 
01.06.12
09:14
решила проблему следующим способом:
В общем модуле на сервере в Привилегированном режиме написала  следующую функцию
Функция ОткрытьРасчетнуюВедомость(мПодразделениеОргазации) Экспорт
   Схема = Отчеты.РасчетныеВедомостиОрганизацийСПоказателями.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
   Настройки = Схема.НастройкиПоУмолчанию;
       ЭлементыКомпоновщикаНастроек = Настройки.Отбор.Элементы;
       
       ПолеПодразделение = Новый ПолеКомпоновкиДанных("ПодразделениеОрганизации");
       Для Каждого Элемент из ЭлементыКомпоновщикаНастроек ЦИкл
           Если Элемент.ЛевоеЗначение = ПолеПодразделение Тогда
               Элемент.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
               Элемент.ПравоеЗначение = мПодразделениеОргазации;
               Элемент.Использование = Истина;
               Прервать;
           КонецЕсли;
       КонецЦикла;
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   
   Макет = КомпоновщикМакета.Выполнить(Схема, Настройки);
   
   ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновки.Инициализировать(Макет);
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ТабДок = Новый ТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ТабДок);
   ПроцессорВывода.Вывести(ПроцессорКомпоновки);
   Хранилище = Новый ХранилищеЗначения(ТабДок);
   Возврат Хранилище;
КонецФункции

Соответственно на клиенте при этом

Процедура РасчетныеВедомостиОрганизацийСПоказателямиНажатие(Элемент)
   Хранилище = РИТЕК_ПодключениеКБазе.ОткрытьРасчетнуюВедомость(мПодразделениеОргазации);
   ТабДок = Хранилище.Получить();
   ТабДок.Показать();
КонецПроцедуры