Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> вывести текущего сотрудника и должность на макет в отчете          
kukulkan Подменю пользователя
сообщение 25.11.20, 16:35
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0

Привет! (
Подскажите, как написать процедуру, чтобы вывести на макет в отчете текущего сотрудника и его должность?
Спасибо! 32542460.gif

Vofka Подменю пользователя
сообщение 25.11.20, 17:50
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Что именно не получается?

kukulkan Подменю пользователя
сообщение 25.11.20, 18:29
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0

мне кажется я перемудрила так что решила все показать. а так не выводит текущего пользователя

Процедура ПриВыводеПодвала(ПараметрыОтчета, Результат) Экспорт
    
    Если НЕ ПараметрыОтчета.ВыводитьПодписи Тогда
        Возврат;
    КонецЕсли;
    
    Макет = ПолучитьМакет("МакетПодвала");
    ОбластьИнтервал = Макет.ПолучитьОбласть("ПодписиИнтервал");
    ОбластьРуководители = Макет.ПолучитьОбласть("ПодписиРуководители");
    ОбластьМОЛ = Макет.ПолучитьОбласть("ПодписиМОЛ");
    
    Результат.Вывести(ОбластьИнтервал);
    
    Если ПараметрыОтчета.ВыводитьПодписиРуководителей Тогда
        
        Если ПараметрыОтчета.СписокСтруктурныхЕдиниц.Количество() > 0 Тогда
            ИскомаяОрганизация = ПараметрыОтчета.СписокСтруктурныхЕдиниц[0].Значение;
        Иначе
            ИскомаяОрганизация = Справочники.Организации.ПустаяСсылка();
        КонецЕсли;
        
        Если НЕ ЗначениеЗаполнено(ИскомаяОрганизация) Тогда
            ИскомаяОрганизация = ПользователиБКВызовСервераПовтИсп.ПолучитьЗначениеПоУмолчанию(Пользователи.ТекущийПользователь(),"ОсновнаяОрганизация");
            
        КонецЕсли;
        
        Если ЗначениеЗаполнено(ИскомаяОрганизация) Тогда
            ОтветЛица = ОбщегоНазначенияБКВызовСервера.ОтветственныеЛицаОрганизаций(ИскомаяОрганизация, КонецДня(ПараметрыОтчета.КонецПериода));
            Если НЕ ЗначениеЗаполнено(ОтветЛица.РуководительДолжность) Тогда
                ОтветЛица.РуководительДолжность     = НСтр("ru = 'Руководитель'");
            КонецЕсли;
            Если НЕ ЗначениеЗаполнено(ОтветЛица.ГлавныйБухгалтерДолжность) Тогда
                ОтветЛица.ГлавныйБухгалтерДолжность = НСтр("ru = 'Главный бухгалтер'");
            КонецЕсли;
            
            
            ОбластьРуководители.Параметры.Заполнить(ОтветЛица);
        Иначе
            ОтветЛица = Новый Структура("РуководительДолжность, ГлавныйБухгалтерДолжность",
                                         НСтр("ru = 'Руководитель'"), НСтр("ru = 'Главный бухгалтер'"));
        КонецЕсли;
        ОбластьРуководители.Параметры.Заполнить(ОтветЛица);
        
        Результат.Вывести(ОбластьРуководители);
        
    КонецЕсли;
    
    // попытаемся определить ответственного по складу, если отбор установлен
    ОтборПоСкладу = Неопределено;
    ИскомыйСклад  = Неопределено;
    Для Каждого ЭлементОтбора Из ПараметрыОтчета.НастройкиКомпоновкиДанных.Отбор.Элементы Цикл
        Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") И ВРег(ЭлементОтбора.ЛевоеЗначение) = "СКЛАД" Тогда
            ОтборПоСкладу = ЭлементОтбора;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    Если ОтборПоСкладу <> Неопределено И ОтборПоСкладу.Использование Тогда
        
        Склады = ОтборПоСкладу.ПравоеЗначение;
        
        // в отборе может присутствовать список складов
        Если ТипЗнч(Склады) = Тип("СписокЗначений") Тогда
            Если Склады.Количество() > 0 Тогда
                ИскомыйСклад = Склады[0].Значение;
            КонецЕсли;
        ИначеЕсли ТипЗнч(Склады) = Тип("СправочникСсылка.Склады") Тогда
            ИскомыйСклад = Склады;
        КонецЕсли;
    КонецЕсли;
    
    // если ничего не нашли, то берем из настроек пользователя
    Если Не ЗначениеЗаполнено(ИскомыйСклад) Тогда
        ИскомыйСклад = ПользователиБКВызовСервераПовтИсп.ПолучитьЗначениеПоУмолчанию(Пользователи.ТекущийПользователь(), "ОсновнойСклад");                    
    КонецЕсли;
                          
    ОтветЛицо = ПрочитатьОтветственноеЛицо(ИскомыйСклад);
    Если Не ОтветЛицо = Неопределено Тогда
        ОбластьМОЛ.Параметры.ОтветственноеЛицо = ОбщегоНазначенияБК.ФамилияИнициалыФизЛица(ОтветЛицо);
    КонецЕсли;
    ПодписиМол = Макет.ПолучитьОбласть("ПодписиМол");
    ПодписиМОЛ.Параметры.ТекущийПользователь =
    //Пользователи.ТекущийПользователь();
    ПользователиИнформационнойбазы.ТекущийПользователь();
    Результат.Вывести(ОбластьМОЛ);
        
    
    
КонецПроцедуры
  Функция ПолучитьТекущегоПользователя () Экспорт
    п = ПользователиИнформационнойБазы.ТекущийПользователь();
    польз =  Справочники.Пользователи.НайтиПоНаименованию(п.Имя);
    Если польз = Справочники.Пользователи.ПустаяСсылка() Тогда
        Возврат -1;
    Иначе
        Возврат Справочники.Пользователи.НайтиПоНаименованию(п.Имя);
    КонецЕсли;
КонецФункции



 ! 

Правила: 9
 


Сообщение отредактировал Vofka - 25.11.20, 18:45

Vofka Подменю пользователя
сообщение 25.11.20, 18:46
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Тут должно выводиться?
ПодписиМОЛ.Параметры.ТекущийПользователь = ПользователиИнформационнойбазы.ТекущийПользователь();

kukulkan Подменю пользователя
сообщение 25.11.20, 18:50
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0

Vofka @ Сегодня, 19:46 * ,
да sad.gif

Yevhenii_S Подменю пользователя
сообщение 26.11.20, 10:47
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 19
Из: Хмельницкий
Спасибо сказали: 2 раз
Рейтинг: 0

kukulkan @ Вчера, 19:29 * ,
по моему, Вы параметр заполняете в одной области, а выводите другую...

ПодписиМол = Макет.ПолучитьОбласть("ПодписиМол");
ПодписиМОЛ.Параметры.ТекущийПользователь =
//Пользователи.ТекущийПользователь();
ПользователиИнформационнойбазы.ТекущийПользователь();
Результат.Вывести(ОбластьМОЛ);

при этом все предыдущие параметры вы заполняете в "ОбластьМОЛ", в конце её же и выводите

...Далее

ПользователиИнформационнойбазы.ТекущийПользователь(); - Описание пользователя, аутентифицированного в текущем сеансе. Это не элемент справочника "пользователи"

Получаем ссылку на пользователя со справочника "пользователи"
текПользователь = Справочники.Пользователи.НайтиПоНаименованию( ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя);

Сотрудники с должностями наверняка "лежат" в справочнике "СотрудникиОрганизаций"
далее с помощью реквизита "ФизЛицо" полученого эллемента справочника получаем эллемент справочника "СотрудникиОрганизаций"

спрСотрудник = Справочники.СотрудникиОрганизаций.НайтиПоРеквизиту("ФизЛицо",текПользователь.ФизЛицо,,); / как то так

ну и выводим в параметры полученого сотрудника + должность

ПодписиМОЛ.Параметры.ТекущийПользователь = Строка(спрСотрудник.Наименование )+" || должность:"+ Строка(спрСотрудник.Должность); // естественно форматируете вывод как Вам нужно

Спасибо сказали: kukulkan,

kukulkan Подменю пользователя
сообщение 26.11.20, 13:06
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0

Yevhenii_S @ Сегодня, 11:47 * ,
Спасибо!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 18:21
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!