Версия для печати темы (https://pro1c.org.ua/index.php?s=b9b921f9831cb5c148ffe087c9385d23&showtopic=44555)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Установить отбор документов по пользователю (сотруднику)

Автор: sanytch 06.03.18, 13:10

Здравствуйте форумчане. в очередной раз обращаюсь за помощью к знатокам. ситуация следующая:
Платформа 8.3, конфа самописная с нуля (учет рабочего времени), режим управляемого приложения.
Есть список пользователей информационной базы, каждый пользователь является соответствующим сотрудником предприятия в справочнике Сотрудники (т.е. 5 пользователей = 5 сотрудников). ежедневно каждый пользователь создает документ УчетРабочегоВремени. у данного документа есть своя ФормаСписка, в которой естессно есть столбец Сотрудник.
Вопрос: как программно установить отбор в этой форме, чтобы Пользователь1 видел только свои документы (созданные Сотрудником1), а в документе реквизит Сотрудник автоматически при создании заполнялся значением Сотрудник1.
Спасибо за любой пинок в нужном направлении)


 ! 

http://pro1c.org.ua/index.php?act=announce&id=2: 4,5
 

Автор: podcast 06.03.18, 14:52

sanytch @ Сегодня, 13:10 * ,
Самый простой вариант в справочник Пользователя добавить реквизит сотрудник и при открытии формы делать отбор.
Ну и по второму http://pro1c.org.ua/redirect.php?http://v8.1c.ru/metod/faq2/answer.jsp?id=541, тоже брать с текущего пользователя Сотрудника.

Автор: sanytch 06.03.18, 15:27

podcast @ Сегодня, 14:52 * ,
Спасибо за ответ, но у меня нет справочника Пользователи, есть только Сотрудники, даже если я создам в справочнике Сотрудники реквизит Пользователь, то как мне сопоставить конкретного сотрудника конкретному пользователю базы?

Автор: sava1 06.03.18, 15:32

А как Вы определяете, кто из Сотрудников вводил документ ?

Автор: sanytch 06.03.18, 16:20

sava1 @ Сегодня, 15:32 * ,
В том то и дело что пока никак, Раньше был пользователь Пользователь, под которым все сотрудники заходили и заполняли док УчетРабочегоВремени, теперь после небольшого "шкандаля" поручено мне сделать для каждого сотрудника отдельного пользователя и чтоб только свои документы видел и создавать мог только от своего пользователя. благо у меня их не много...
Создал в справочнике сотрудники реквизит Пользователь, прописал в Конфигураторе всех пользователей и каждому сотруднику в реквизит Пользователь прописал имя пользователя. Вроде как связал Пользователей и Сотрудников. Теперь как ФормуСписка документа программно заставить отображать только документы текущего пользователя? Ну запросом я могу найти и вернуть Сотрудника который соответствует текущему пользователю базы, не пойму где отбор наложить.

Автор: podcast 06.03.18, 16:40

sanytch @ Сегодня, 16:20 * ,
http://pro1c.org.ua/redirect.php?http://v8.1c.ru/metod/faq2/answer.jsp?id=548

Автор: sanytch 06.03.18, 17:35

podcast @ Сегодня, 16:40 * ,
Огромное Спасибо!!! помог вариант 2 с небольшими доработками:
в ПриСозданииНаСервере запхнул такое:

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

Автор: Vofka 06.03.18, 17:58

Цитата(sanytch @ 06.03.18, 17:35) *
Огромное Спасибо!!!

Жмите палец.

Автор: sanytch 07.03.18, 8:37

Vofka @ Вчера, 17:58 * ,
Сорян) На радостях забыл. Исправился.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua