Имя: Пароль:
1C
 
Параметры сеанса при проведении документа
0 pro3ri
 
30.09.15
08:14
Добрый день!
Провожу документ с полными правами, после процедуры "При записи" модуля объекта идет Процедура ПроверкаПериодаЗаписей(НаборЗаписей, Отказ) Экспорт
    
    СоответствиеГраницЗапрета = ПараметрыСеанса.ГраницыЗапретаИзмененияДанных.Получить();
    
    ЕСли СоответствиеГраницЗапрета = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    МетаданныеНабора = НаборЗаписей.Метаданные();
    ИмяРегистра = МетаданныеНабора.ПолноеИмя();
    
    ЕстьОрганизация = (МетаданныеНабора.Измерения.Найти("Организация")<>Неопределено);
        
    Если НаборЗаписей.Количество() = 0 Тогда
        Запрос = Новый Запрос;
        ВложенныйЗапрос = "";
        ЕСли ЕстьОрганизация Тогда
            индекс = 1;
            ИмяПоляОрганизации = "Организация";
            Для Каждого КлючИЗначение ИЗ СоответствиеГраницЗапрета Цикл
                ВложенныйЗапрос = ВложенныйЗапрос + ?(ВложенныйЗапрос = "", "", "
                                  |ОБЪЕДИНИТЬ") +"
                                  |ВЫБРАТЬ &Организация"+индекс+" КАК Организация, &ДатаЗапрета" + Формат(индекс, "ЧГ=0") + " КАК ДатаЗапрета";
                Запрос.УстановитьПараметр("Организация"+индекс, КлючИЗначение.Ключ);
                ГраницаПериода = КлючИЗначение.Значение;
                Запрос.УстановитьПараметр("ДатаЗапрета"+индекс, ?(ГраницаПериода=Неопределено, NULL, ГраницаПериода));
                индекс = индекс + 1;
            КонецЦикла;
        Иначе
            ПустаяОрганизация = Справочники.Организации.ПустаяСсылка();
            ИмяПоляОрганизации = "&ПустаяОрганизация";
            ВложенныйЗапрос = "ВЫБРАТЬ &ПустаяОрганизация КАК Организация, &ДатаЗапрета КАК ДатаЗапрета";
            Запрос.УстановитьПараметр("ПустаяОрганизация", ПустаяОрганизация);
            ГраницаПериода = СоответствиеГраницЗапрета[ПустаяОрганизация];
            Запрос.УстановитьПараметр("ДатаЗапрета", ?(ГраницаПериода=Неопределено, NULL, ГраницаПериода));            
        КонецЕсли;            
            
        Запрос.Текст = "
        |ВЫБРАТЬ НаборЗаписей.Организация, НаборЗаписей.Период, ДатыЗапрета.Организация, ДатыЗапрета.ДатаЗапрета
        |ИЗ
        |(
        |ВЫБРАТЬ " + ИмяПоляОрганизации + " КАК Организация, МИНИМУМ(Период) КАК Период  ИЗ " + ИмяРегистра + " КАК Набор
        |ГДЕ Регистратор = &Регистратор
        |СГРУППИРОВАТЬ ПО " + ИмяПоляОрганизации + "
        |) КАК НаборЗаписей
        |ЛЕВОЕ СОЕДИНЕНИЕ
        |(" + ВложенныйЗапрос + "        
        |) КАК ДатыЗапрета
        |ПО НаборЗаписей.Организация = ДатыЗапрета.Организация
        |ГДЕ НаборЗаписей.Период < ДатыЗапрета.ДатаЗапрета ИЛИ ДатыЗапрета.ДатаЗапрета ЕСТЬ NULL";
        Запрос.УстановитьПараметр("Регистратор", НаборЗаписей.Отбор.Регистратор.Значение);                
            
        Если НЕ Запрос.Выполнить().Пустой() Тогда
            Отказ = Истина;
        Иначе
            Отказ = Ложь;
        КонецЕсли;
        
    Иначе
        
        Отказ = Ложь;
        Если ЕстьОрганизация Тогда
            Для Каждого Запись ИЗ НаборЗаписей Цикл
                ГраницаПоОрганизации = СоответствиеГраницЗапрета[Запись.Организация];
                ЕСли ГраницаПоОрганизации <> Неопределено
                     И Запись.Период < ГраницаПоОрганизации Тогда
                    Отказ = Истина;
                    Возврат;
                КонецЕсли;
            КонецЦикла;
        Иначе
            ГраницаПериода = СоответствиеГраницЗапрета[Справочники.Организации.ПустаяСсылка()];
            Если ГраницаПериода <> Неопределено Тогда
                Для Каждого Запись ИЗ НаборЗаписей Цикл
                    ЕСли Запись.Период < ГраницаПериода Тогда
                        Отказ = Истина;
                        Возврат;
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры

тут в самом начале     СоответствиеГраницЗапрета = ПараметрыСеанса.ГраницыЗапретаИзмененияДанных.Получить();

СоответствиеГраницЗапрета  = неопределено.
Однако при правах пользователя Права1 эта переменная равна https://s.mail.ru/MD9vmxxkBskv/img-2015-09-30-10-15-29.png В какую сторону копать чтобы не было отказа?
1 ЧеловекДуши
 
30.09.15
08:17
(0) ПараметрыСеанса, дотупен, если ты туда что либо поместишь. До этого момента его нет, как бы нет :)
2 pro3ri
 
30.09.15
08:21
(1) а как отловить тогда это https://s.mail.ru/2SghmWZ67eie/img-2015-09-30-10-22-25.png событие, если я подключаюсь к другому пользователю?
3 jurassic
 
30.09.15
08:22
затрахал с картинками уже
4 Cyberhawk
 
30.09.15
08:22
Запускай предмет отладки под этим другим пользователем с самого начала, а не подключайся
5 Cyberhawk
 
30.09.15
08:22
Но вообще посмотреть параметры сеанса из-под другого пользователя можно в его сеанса через ИР, например
6 Cyberhawk
 
30.09.15
08:22
*сеансе
7 pro3ri
 
30.09.15
08:26
(4) т.е. нужно сначала ему прав добавить, чтобы он мог в конфигураторе лазить, а потом отладку делать, правильно понял?
8 Cyberhawk
 
30.09.15
08:29
(7) Нет, предмет отладки можно запускать из конфигуратора под любым пользователем, сам конфигуратор неважно под кем запущен был
9 pro3ri
 
30.09.15
08:33
(8) я в конфигураторе нажимаю Ф5 он дает отладку под тем пользователем, под которым я зашел в конфигуратор, а как запускать предмет отладки из конфигуратора под любым пользователем?
10 jurassic
 
30.09.15
08:36
(9) пытать настройки
11 pro3ri
 
30.09.15
08:40
допер https://s.mail.ru/4ttgbyvZ71TZ/img-2015-09-30-10-41-55.png сюда написал имя пользователя
12 Cyberhawk
 
30.09.15
09:33
(11) молодец, а если ничего туда не впишешь, то каждый раз сможешь при старте выбирать нужного тебе пользователя
13 pro3ri
 
30.09.15
09:34
(12) +1 так еще удобнее