Имя: Пароль:
1C
1С v8
УстановитьПривилегированныйРежим() в клиент-серверном варианте
,
0 Андрей 0910
 
10.01.13
10:36
Всем здравствуйте.

Помогите, пожалуйста, советом вот по какой проблеме.

Есть БП 2.0 КОРП, обычный режим. В ней я создал доступ на уровне записей к документам по подразделениям. И все бы хорошо, но из-за этого при формировании подразделениями книги покупок 1137 появляется ошибка "недостаточности прав", поскольку в нее попадают документы других подразделений; формирование прерывается на выполнении запроса по счетам-фактурам. Строго говоря, так и должно быть, но организационно подразделения должны иметь возможность формировать книгу покупок, такова задача.

В случае файловой базы все решается обрамлением запроса в привилегированный режим, но у них клиент-сервер.. была мысль вынести соответствующую функцию в серверный модуль, но ее параметром является запрос - мутабельное значение..

Как правильней передать запрос на сервер? или вообще по другому пути нужно идти?
1 mikecool
 
10.01.13
10:42
создай запрос на сервере, туда передай параметры
2 pessok
 
10.01.13
10:45
вынеси функции на сервер, а ее параметром сделай не запрос, а текст запроса
3 sanfoto
 
10.01.13
10:46
Еще можно попробовать завернуть САМ запрос во что-нибуть...
например в структуру или в массив - и уже это передавать/получать
4 mikecool
 
10.01.13
10:47
(3) и мутабельность сразу пропадет?
5 Андрей 0910
 
10.01.13
10:55
(1),(2) - спасибо, попробую такие варианты. Собственно, мои мысли двигались в похожем направлении, но я надеялся, что может быть я не знаю о каком-то гениально простом решении, которое позволит минимально (по отношению к этим способам) переписывать код.
6 sanfoto
 
10.01.13
10:57
(4) ну вроде как получалось))...хотя путь неправильный согласен.
7 sanfoto
 
10.01.13
11:17
&НаКлиенте
Процедура Команда1(Команда)
   Запрос_стр =МассивЗапроса_НаСервере();
   //РезультатЗапроса=ЗначениеИзСтрокиВнутр(Запрос_стр); - на УпрФорме неполучится)) Но на толстом все путем))
   а=1;
КонецПроцедуры

&НаСервере
Функция МассивЗапроса_НаСервере()
   Запрос=Новый Запрос;
   Запрос.Текст="ВЫБРАТЬ
                |    Номенклатура.Ссылка
                |ИЗ
                |    Справочник.Номенклатура КАК Номенклатура";
   Рез=Запрос.Выполнить();            
   
   Передаем=ЗначениеВСтрокуВнутр(Рез);
   Возврат Передаем;
КонецФункции
8 mikecool
 
10.01.13
11:19
(7) оО
а не правильнее ли будет запихнуть результат в соответствующий реквизит формы?
9 Reset
 
10.01.13
11:39
как пример (7) соотносится с утверждением в (3) ? оО
10 sanfoto
 
10.01.13
11:49
никак.. просто еще один вариант))
11 Андрей 0910
 
11.01.13
10:42
(1) как на сервер передать параметры?

В данном типовом случае, "параметрами" является структура из 17 параметров, формируемая в модуле книги покупок.  Получается, вариант один - у функции, выполняемой на сервере, сделать 17 параметров, верно?
12 Reset
 
11.01.13
11:45
(11) Один параметр - структура, в котором ключами задать имя параметра, значениями - значения.
Или два параметра - текст запроса (строкой) и структура параметров.
13 Андрей 0910
 
11.01.13
14:01
(12) если я верно понял мысль, так не получится, ведь структура - тоже мутабельное значение.
14 Reset
 
11.01.13
14:07
(13) Нет, структуру можно передавать
15 Андрей 0910
 
11.01.13
14:18
Если в качестве параметра вызываемой на сервере функции передать структуру, появится ошибка мутабельности параметра - на всякий случай проверил.
16 Reset
 
11.01.13
14:28
(15) У меня работает. Возможно, одно из значений структуры мутабельное
17 Андрей 0910
 
11.01.13
15:23
(16) Да, есть такое дело. Сейчас попробую это обойти.