7.7 Как получить текущего пользователя

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем amoRNizam, 29 авг 2016.

  1. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте. 1С7.7. ТИС 9.2.
    Подскажите пожалуйста, как получить текущего пользователя.
    Есть запрос, который должен отбирать документы при условии, что автор документа и текущий пользователь равны. Тоесть, чтобы выводились только документы текущего пользователя.
    В документе есть переменная "Автор" в которой записывается автор документа(пользователь).
    Вот часть кода.
    С условием "|Условие(Автор = Авт);" не работает, вроде тип данных один и тот же.
    Код:
    Дат2 = ТекущаяДата();
    Дат1 = Дат2 - 30;
    Авт = ИмяПользователя();
    
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с Дат1 по Дат2;
    |Оплата_До = Документ.Реализация.ОбещанныйПлатежДо, Документ.РеализацияРозница.ОбещанныйПлатежДо;
    |Контрагент = Документ.Реализация.Контрагент, Документ.РеализацияРозница.Контрагент;
    |Автор = Документ.Реализация.Автор, Документ.РеализацияРозница.Автор;
    |Группировка Документ;
    |Группировка Кконтрагент без групп;|
    |Группировка Оплата_До без групп;
    |Группировка Автор без групп;
    |Условие(Оплата_До >1);
    |Условие(Оплата_До <=Дат2;
    |Условие(Автор = Авт);
    |"//}}ЗАПРОС
    ;
  2. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    411
    Симпатии:
    72
    Баллы:
    54
    Здравствуйте.
    Насколько я понимаю, ИмяПользователя() возвращает текущего пользователя из Конфигуратора, а Автор содержит элемент справочника Пользователи. Думаю, что Вам следует найти по Авт нужный элемент и уже его сравнивать с Автор. В ТиС есть еще глобальная переменная глПользователь.
    amoRNizam нравится это.
  3. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Спасибо большое, всё получилось!
  4. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Последний вопрос. Как сделать, чтобы при выполнении запроса таблица не открывалась, если результат запроса пустой? Ато, если результат запроса пуст, документов нет, то таблица всё равно открывается. А нужно, чтобы она показывалась только, если результат запроса положительный.
  5. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    411
    Симпатии:
    72
    Баллы:
    54
    Вы же как-то обрабатываете результат запроса? Вот и добавьте проверку: выводить на просмотр, только если результат имеет хотя бы одну выборку.
    amoRNizam нравится это.
  6. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Вот.
    Код:
    Процедура ПриОткрытии()
       
        Перем Запрос, ТекстЗапроса, Таб;
        Дат =ТекущаяДата();
        Дат1 =Дат - 60;
       
        //Создание объекта типа Запрос
        Запрос = СоздатьОбъект("Запрос");
        ТекстЗапроса =
        "//{{ЗАПРОС(Сформировать)
        |Период с Дат1 по Дат;
        |Оплата_До = Документ.Реализация.ОбещанныйПлатежДо, Документ.РеализацияРозница.ОбещанныйПлатежДо;
        |Контрагент = Документ.Реализация.Контрагент, Документ.РеализацияРозница.Контрагент;
        |Автор = Документ.Реализация.Автор, Документ.РеализацияРозница.Автор;
        |СуммаВзаиморасчетов = Документ.Реализация.СуммаВзаиморасчетов, Документ.РеализацияРозница.СуммаВзаиморасчетов;
        |Группировка Документ;
        |Группировка Контрагент без групп;
        |Группировка Оплата_До без групп;
        |Группировка Автор без групп;
        |Условие(Оплата_До >1);
        |Условие(Оплата_До <= Дат);
        |Условие(глПользователь = Автор);
        |"//}}ЗАПРОС
        ;
       
        // Если ошибка в запросе, то выход из процедуры
        Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
            Возврат;
        КонецЕсли; 
       
       
        // Подготовка к заполнению выходных форм данными запроса
        Таб = СоздатьОбъект("Таблица");
        Таб.ИсходнаяТаблица("Сформировать");
        // Заполнение полей "Заголовок"
        Таб.ВывестиСекцию("Заголовок");
        Состояние("Заполнение выходной таблицы...");
        Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
        Пока Запрос.Группировка(1) = 1 Цикл
            // Заполнение полей Документ
            //        Таб.ВывестиСекцию("Документ");
            Пока Запрос.Группировка(2) = 1 Цикл
                // Заполнение полей Контрагент
                //            Таб.ВывестиСекцию("Контрагент");
                Пока Запрос.Группировка(3) = 1 Цикл
                    // Заполнение полей Оплата_До
                    //                Таб.ВывестиСекцию("Оплата_До");
                    Пока Запрос.Группировка(4) = 1 Цикл
                        // Заполнение полей Автор
                        Таб.ВывестиСекцию("Автор");
                    КонецЦикла;
                КонецЦикла;
            КонецЦикла;
        КонецЦикла; 
       
        //////////////////////////////
        // Вывод заполненной формы
        Таб.ТолькоПросмотр(1);
        Таб.Показать("Сформировать", "Должники");   
       
        СтатусВозврата(0);
        Возврат;   
       
    КонецПроцедуры  
  7. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Сделал, как вы сказали, спасибо!

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