8.х Построитель отчётов

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем ЮлияПузанова, 15 мар 2010.

  1. TopicStarter Overlay
    ЮлияПузанова
    Offline

    ЮлияПузанова

    Регистрация:
    15 мар 2010
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Всем добрый день!
    Помогите разобраться, пожалуйста, с возникшей проблемой.
    Суть:
    Формируется отчёт с помощью построителя с отбором по дате.
    Необходимо проверить роль активного пользователя, и если это не "Администратор", то добавить отбор по сотруднику(по текущему пользователю) без возможности снятия этого отбора.

    Добавляю отбор так:
    Код:
    Сотрудник = ПараметрыСеанса.ТекущийПользователь;
    Если (НЕ РольДоступна("Администратор"))
    Тогда    
    ОтборСотрудник = 
    ПостроительОтчетаТрудозатраты.Отбор.Добавить("Сотрудник");
    ОтборСотрудник.Значение = Сотрудник;
    ОтборСотрудник.ВидСравнения = ВидСравнения.Равно;
    ПостроительОтчетаТрудозатраты.Отбор.Сотрудник.Использование = Истина;
    
    
    Выдаёт ошибку:
    Ошибка при установке значения атрибута контекста (Значение): Неверный тип значения
    ОтборСотрудник.Значение = Сотрудник;
  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    А переменная сотрудник какго типа? и откуда ее берете?
  3. TopicStarter Overlay
    ЮлияПузанова
    Offline

    ЮлияПузанова

    Регистрация:
    15 мар 2010
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    я её беру из регистра.А в регистре Сотрудник тип - СправочникСсылка.Сутрудники
  4. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Код:
     Сотрудник = ПараметрыСеанса.ТекущийПользователь;
    
    : Тип СправочникСсылка.Пользователи

    Код:
    ОтборСотрудник.Значение
    
    : тип - СправочникСсылка.Сутрудники

    т.е. ваша задача найти по пользователю сотрудника в справочнике "Сотрудники" и уже его передавать в отбор
  5. TopicStarter Overlay
    ЮлияПузанова
    Offline

    ЮлияПузанова

    Регистрация:
    15 мар 2010
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Мне можно просто узнать текущего пользователя и передать его в отбор. Искать в справочниках не надо, так как в запросе Построителя поле Сотрудник уже имеется.Нужно сделать дополнительный отбор по этому полю.
  6. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Какая конфигурация? Просто в 1С есть разделение Сотрудник и физическое лицо. Это 2 разных справочника.

    Справочник пользователи имеет реквизит ФизЛицо (т.к физ лицо у нас одно Иванов, а сотрудника может быть и 2 Иванов основное место и Иванов совместительство).

    Так вот Если вам надо сделать отбор именно по Сотруднику (из спраочника сотрудники), через пользователя. Будет сложно. Т.к от пользователя вы можете полуитьтолько физ лицо.

    Соответсвено вам по физ лицу надо найти сотрудника, а как я уже сказал их может быть 2 и какого из них?

    может переписать отчет с отбором по физ лицу?
  7. TopicStarter Overlay
    ЮлияПузанова
    Offline

    ЮлияПузанова

    Регистрация:
    15 мар 2010
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Работа со справочником вообще не нужна. Необходимо применить отбор к полученному отчёту на основе построителя. я примерно понимаю в чём там ошибка, но не знаю как её исправить.

    Код:
    Сотрудник = ПараметрыСеанса.ТекущийПользователь;
    Если (НЕ РольДоступна("Администратор"))
    Тогда    
    ОтборСотрудник = 
    ПостроительОтчетаТрудозатраты.Отбор.Добавить("Сотрудник");
    ОтборСотрудник.Значение = Сотрудник;
    ОтборСотрудник.ВидСравнения = ВидСравнения.Равно;
    ПостроительОтчетаТрудозатраты.Отбор.Сотрудник.Использование = Истина;
    
    ПараметрыСеанса.ТекущийПользователь имеет тип Строка
    ОтборСотрудник.Значение  имеет тип СправочникСсылка.Сотрудники
    
  8. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Мы же вам про что и говорим.
    что система не может выполнить эту строку ОтборСотрудник.Значение = Сотрудник; потому как типы не совпадают.

    И строка Сотрудник = ПараметрыСеанса.ТекущийПользователь;должна возращать не строку а значение типа Справочник Пользователи.

    Да даже бог с ним пусть строку возвращает.
    У вас может сработать только

    Сотрудник = ПараметрыСеанса.ТекущийПользователь;
    ОтборСотрудник.Значение = Справочники.Сотрудники.НайтиПоНаименованию(Сотрудник);

    И то если имя пользователя совпадает именем элемента в справочнике сотрудники. Что наврятли. И причем я говорил что может возникнуть что есть 2 сотрудника.

    По этому везед в типовых решениях если идет ограницение то или на пользователя или на физ лицо, а не на сотрудника.
  9. TopicStarter Overlay
    ЮлияПузанова
    Offline

    ЮлияПузанова

    Регистрация:
    15 мар 2010
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    ясно))))спасибо большое)вечером проверю.
  10. TopicStarter Overlay
    ЮлияПузанова
    Offline

    ЮлияПузанова

    Регистрация:
    15 мар 2010
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Draco,спасибо большое)всё заработало!))))
  11. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Ну и славненько. Лишь бы не сломалось

Поделиться этой страницей