Имя: Пароль:
1C
1С v8
Проверить в запросе условие
0 1C2SS
 
02.10.12
19:31
Необходимо в универсальный отчет добавить условие чтобы реквизит документа заказы был равен ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя
как это сделать ? особенно интересно с помощью конструктора.
1 Wobland
 
02.10.12
19:35
а если таких полных имён штук 80 в этой базе?
2 Fragster
 
гуру
02.10.12
19:36
(0) это чтобы пользователь видел только свои данные? это делается по другому.
3 Wobland
 
02.10.12
19:37
хотя какая на фих разница. только какое отношение имя пользователя имеет к заказу?
4 1C2SS
 
02.10.12
19:37
Полные имена уникальны
5 1C2SS
 
02.10.12
19:37
Fragster ага
как это делается ?
6 Wobland
 
02.10.12
19:39
(4) точно?
7 Wobland
 
02.10.12
19:39
(5) РЛС?
8 1C2SS
 
02.10.12
19:39
точно
9 1C2SS
 
02.10.12
19:40
как с помощью RLS это сделать ?
10 Wobland
 
02.10.12
19:40
11 1C2SS
 
02.10.12
19:43
что это значит ?
12 Fragster
 
гуру
02.10.12
19:44
(11) тебе как бы намекают, что полное имя может быть не уникально
13 1C2SS
 
02.10.12
19:46
как же тогда быть ?
14 Wobland
 
02.10.12
19:48
(13) слушаться умных дядек сразу. параметры сеанса есть? текущий пользователь в них есть?
15 Fragster
 
гуру
02.10.12
19:48
(13) кури RLS
16 GANR
 
02.10.12
19:48
(0) В типовых конфигурациях элементы справочника "Пользователи" синхронизируются с ПользователиИнформационнойБазы.ТекущийПользователь() не по имени, а по уникальному идентификатору. В параметр сеанса "Текущий пользователь" поцепляется элемент справочника "Пользователи", реквизит "Идентификатор пользователя ИБ" которого равен ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор() (9) Если конфа стандартная, то просто

ГДЕ Ответственный = &ТекущийПользователь
17 Wobland
 
02.10.12
19:48
(15) он уже начал в (9) ;)
18 GANR
 
02.10.12
19:55
(0) Перепиши синхронизацию по полному наименованию на обкатанный способ синхронизации по уникальному идентификатору, описанный в (16) - как на такое (4) можно смотреть.
19 1C2SS
 
02.10.12
19:55
ок. спасибо.
20 1C2SS
 
02.10.12
20:11
у меня в конфигурации уникальный идентификатор элемента справочника Пользователи и уникальный идентификатор ПользователиИнформационнойБазы.ТекущийПользователь отличаются (для соответствующего пользователя) .
21 GANR
 
02.10.12
20:16
(20) Нееееет. Не Ссылка.УникальныйИдентификатор(), а реквизит Ссылка.ИдентификаторПользователяИБ должны быть идентичны. А если конфа типовая - тут и думать нечего, добавляешь в RLS условие ГДЕ Ответственный = &ТекущийПользователь и всё.
22 1C2SS
 
02.10.12
20:21
приведи пожалуйста пример кода
как установить соответствие текущего пользователя и элемента справочника.
а то что то я совсем запутался.
23 GANR
 
02.10.12
20:37
(22)Если конфа типовая - смотри общий модуль "Пользователи" процедуру "УстановкаПараметровСеанса". Если самопальная - добавь в модуль сеанса в стандартную процедуру УстановкаПараметровСеанса этот код (возможны ошибки, т.к. писал в блокноте)

ИдентификаторПользователяИБ = ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор;
ПолноеИмяПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя;
НайденныйПользователь = Справочники.Пользователи.НайтиПоРеквизиту("ИдентификаторПользователяИБ", ИдентификаторПользователяИБ);
Если Не ЗнаениЗаполнено(НайденныйПользователь) Тогда
   НовыйПользователь = Справочники.Пользователи.СоздатьЭлемент();
   НовыйПользователь.ИдентификаторПользователяИБ = ИдентификаторПользователяИБ;
   НовыйПользователь.Наименование                = ПолноеИмяПользователя;
   НовыйПользователь.Записать();
   ПараметрыСеанса.ТекущийПользователь = НовыйПользователь.Ссылка;
Иначе
   ПараметрыСеанса.ТекущийПользователь = НайденныйПользователь;
КонецЕсли;
24 GANR
 
02.10.12
20:45
>ЗнаениЗаполнено
ЗначениеЗаполнено
25 1C2SS
 
02.10.12
20:46
У справочника Пользователи нет реквизита ИдентификаторПользователяИБ
26 1C2SS
 
02.10.12
20:47
у меня 1с 8.1 работаю в УТ 10.3
27 vmv
 
02.10.12
20:50
(26) покопайся в модулях сеанса этой типовухи и общих связанных с пользователями, хватить канючить как баба за конфеты, ты ведь мужик и тебя есть мозг, а не просто формы)
28 GANR
 
02.10.12
20:55
(26) Ах это 8.1 - раритет ещё. Там по имени ещё синхронизируется. Вот функция общего модуля "УправлениеПользователями" (у меня ЗУП какой-то старый):

Функция ОпределитьТекущегоПользователя() экспорт

   Если ПустаяСтрока(ИмяПользователя()) Тогда
       ИмяПользователя           = "НеАвторизован";
       ПолноеИмяПользователя     = "Не авторизован";        
   Иначе
       ИмяПользователя           = ИмяПользователя();
       
       Если ПустаяСтрока(ПолноеИмяПользователя()) Тогда
           ПолноеИмяПользователя = ИмяПользователя;
       Иначе
           ПолноеИмяПользователя = ПолноеИмяПользователя();
       КонецЕсли;
   КонецЕсли;
   
   ДлинаКодаПользователя = Метаданные.Справочники.Пользователи.ДлинаКода;
   
   Если СтрДлина(ИмяПользователя) > ДлинаКодаПользователя Тогда
       ИмяПользователя = Лев(ИмяПользователя, ДлинаКодаПользователя);
   КонецЕсли;
   
   Запрос = Новый Запрос;
   Запрос.Текст = "
   |ВЫБРАТЬ ПЕРВЫЕ 1
   |    Пользователи.Ссылка КАК Ссылка
   |ИЗ
   |    Справочник.Пользователи КАК Пользователи
   |ГДЕ
   |    (НЕ Пользователи.ЭтоГруппа)
   |    И Пользователи.Код = &Код";
   
   Запрос.УстановитьПараметр("Код", ИмяПользователя);
   Результат = Запрос.Выполнить();
   
   Если Результат.Пустой() Тогда
       
       ОбъектПользователь = Справочники.Пользователи.СоздатьЭлемент();
       
       ОбъектПользователь.Код          = ИмяПользователя;
       ОбъектПользователь.Наименование = ПолноеИмяПользователя;

       Попытка
           ОбъектПользователь.Записать();
       Исключение
           #Если Клиент Тогда
           Предупреждение("Пользователь : " + ИмяПользователя + " не был найден в справочнике пользователей. Возникла ошибка при добавлении пользователя в справочник.
               |" + ОписаниеОшибки());
           ЗавершитьРаботуСистемы(Ложь);
           #КонецЕсли

           Возврат Справочники.Пользователи.ПустаяСсылка();
       КонецПопытки;

       ТекущийПользователь = ОбъектПользователь.Ссылка;

   Иначе
       Выборка = Результат.Выбрать();
       Выборка.Следующий();

       ТекущийПользователь = Выборка.Ссылка;
   КонецЕсли;

   Возврат ТекущийПользователь;

КонецФункции // ОпределитьТекущегоПользователя()
29 GANR
 
02.10.12
20:57
ПараметрыСеанса.ТекущийПользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
30 1C2SS
 
02.10.12
21:01
спасибо!
31 GANR
 
02.10.12
21:07
(30) Но вообще (28) это неправильный подход к синхронизации. Если уж что-то с чем-то синхронизировать, то по GUIDу, как в (23).