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