Привет! (
Подскажите, как написать процедуру, чтобы вывести на макет в отчете текущего сотрудника и его должность?
Спасибо!
Что именно не получается?
мне кажется я перемудрила так что решила все показать. а так не выводит текущего пользователя
Процедура ПриВыводеПодвала(ПараметрыОтчета, Результат) Экспорт
Если НЕ ПараметрыОтчета.ВыводитьПодписи Тогда
Возврат;
КонецЕсли;
Макет = ПолучитьМакет("МакетПодвала");
ОбластьИнтервал = Макет.ПолучитьОбласть("ПодписиИнтервал");
ОбластьРуководители = Макет.ПолучитьОбласть("ПодписиРуководители");
ОбластьМОЛ = Макет.ПолучитьОбласть("ПодписиМОЛ");
Результат.Вывести(ОбластьИнтервал);
Если ПараметрыОтчета.ВыводитьПодписиРуководителей Тогда
Если ПараметрыОтчета.СписокСтруктурныхЕдиниц.Количество() > 0 Тогда
ИскомаяОрганизация = ПараметрыОтчета.СписокСтруктурныхЕдиниц[0].Значение;
Иначе
ИскомаяОрганизация = Справочники.Организации.ПустаяСсылка();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ИскомаяОрганизация) Тогда
ИскомаяОрганизация = ПользователиБКВызовСервераПовтИсп.ПолучитьЗначениеПоУмолчанию(Пользователи.ТекущийПользователь(),"ОсновнаяОрганизация");
КонецЕсли;
Если ЗначениеЗаполнено(ИскомаяОрганизация) Тогда
ОтветЛица = ОбщегоНазначенияБКВызовСервера.ОтветственныеЛицаОрганизаций(ИскомаяОрганизация, КонецДня(ПараметрыОтчета.КонецПериода));
Если НЕ ЗначениеЗаполнено(ОтветЛица.РуководительДолжность) Тогда
ОтветЛица.РуководительДолжность = НСтр("ru = 'Руководитель'");
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОтветЛица.ГлавныйБухгалтерДолжность) Тогда
ОтветЛица.ГлавныйБухгалтерДолжность = НСтр("ru = 'Главный бухгалтер'");
КонецЕсли;
ОбластьРуководители.Параметры.Заполнить(ОтветЛица);
Иначе
ОтветЛица = Новый Структура("РуководительДолжность, ГлавныйБухгалтерДолжность",
НСтр("ru = 'Руководитель'"), НСтр("ru = 'Главный бухгалтер'"));
КонецЕсли;
ОбластьРуководители.Параметры.Заполнить(ОтветЛица);
Результат.Вывести(ОбластьРуководители);
КонецЕсли;
// попытаемся определить ответственного по складу, если отбор установлен
ОтборПоСкладу = Неопределено;
ИскомыйСклад = Неопределено;
Для Каждого ЭлементОтбора Из ПараметрыОтчета.НастройкиКомпоновкиДанных.Отбор.Элементы Цикл
Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") И ВРег(ЭлементОтбора.ЛевоеЗначение) = "СКЛАД" Тогда
ОтборПоСкладу = ЭлементОтбора;
Прервать;
КонецЕсли;
КонецЦикла;
Если ОтборПоСкладу <> Неопределено И ОтборПоСкладу.Использование Тогда
Склады = ОтборПоСкладу.ПравоеЗначение;
// в отборе может присутствовать список складов
Если ТипЗнч(Склады) = Тип("СписокЗначений") Тогда
Если Склады.Количество() > 0 Тогда
ИскомыйСклад = Склады[0].Значение;
КонецЕсли;
ИначеЕсли ТипЗнч(Склады) = Тип("СправочникСсылка.Склады") Тогда
ИскомыйСклад = Склады;
КонецЕсли;
КонецЕсли;
// если ничего не нашли, то берем из настроек пользователя
Если Не ЗначениеЗаполнено(ИскомыйСклад) Тогда
ИскомыйСклад = ПользователиБКВызовСервераПовтИсп.ПолучитьЗначениеПоУмолчанию(Пользователи.ТекущийПользователь(), "ОсновнойСклад");
КонецЕсли;
ОтветЛицо = ПрочитатьОтветственноеЛицо(ИскомыйСклад);
Если Не ОтветЛицо = Неопределено Тогда
ОбластьМОЛ.Параметры.ОтветственноеЛицо = ОбщегоНазначенияБК.ФамилияИнициалыФизЛица(ОтветЛицо);
КонецЕсли;
ПодписиМол = Макет.ПолучитьОбласть("ПодписиМол");
ПодписиМОЛ.Параметры.ТекущийПользователь =
//Пользователи.ТекущийПользователь();
ПользователиИнформационнойбазы.ТекущийПользователь();
Результат.Вывести(ОбластьМОЛ);
КонецПроцедуры
Функция ПолучитьТекущегоПользователя () Экспорт
п = ПользователиИнформационнойБазы.ТекущийПользователь();
польз = Справочники.Пользователи.НайтиПоНаименованию(п.Имя);
Если польз = Справочники.Пользователи.ПустаяСсылка() Тогда
Возврат -1;
Иначе
Возврат Справочники.Пользователи.НайтиПоНаименованию(п.Имя);
КонецЕсли;
КонецФункции
! | https://pro1c.org.ua/index.php?act=announce&id=2: 9 |
Тут должно выводиться?
ПодписиМОЛ.Параметры.ТекущийПользователь = ПользователиИнформационнойбазы.ТекущийПользователь();
kukulkan @ Вчера, 19:29
,
по моему, Вы параметр заполняете в одной области, а выводите другую...
ПодписиМол = Макет.ПолучитьОбласть("ПодписиМол");
ПодписиМОЛ.Параметры.ТекущийПользователь =
//Пользователи.ТекущийПользователь();
ПользователиИнформационнойбазы.ТекущийПользователь();
Результат.Вывести(ОбластьМОЛ);
при этом все предыдущие параметры вы заполняете в "ОбластьМОЛ", в конце её же и выводите
...Далее
ПользователиИнформационнойбазы.ТекущийПользователь(); - Описание пользователя, аутентифицированного в текущем сеансе. Это не элемент справочника "пользователи"
Получаем ссылку на пользователя со справочника "пользователи"
текПользователь = Справочники.Пользователи.НайтиПоНаименованию( ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя);
Сотрудники с должностями наверняка "лежат" в справочнике "СотрудникиОрганизаций"
далее с помощью реквизита "ФизЛицо" полученого эллемента справочника получаем эллемент справочника "СотрудникиОрганизаций"
спрСотрудник = Справочники.СотрудникиОрганизаций.НайтиПоРеквизиту("ФизЛицо",текПользователь.ФизЛицо,,); / как то так
ну и выводим в параметры полученого сотрудника + должность
ПодписиМОЛ.Параметры.ТекущийПользователь = Строка(спрСотрудник.Наименование )+" || должность:"+ Строка(спрСотрудник.Должность); // естественно форматируете вывод как Вам нужно
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua