Печать исполнителя при формировании Справки 0504833 в БГУ 2.0



При переходе на БГУ 2.0 столкнулся с тем, что в Справках 0504833 необходимо вручную забивать данные о ФИО и должности исполнителя. Странно конечно, но в БГУ 1.0 этот момент реализован.
Предлагаю решение…

 

Покопавшись в конфигурации, обнаружил, что формирование справки происходит в менеджере печати документа ОперацияБух. А на остальных документах навесили данный менеджер печати в общем модуле: ОбщегоНазначенияБГУ:

                

// Бухгалтерская справка
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати  = "Документ.ОперацияБух";
КомандаПечати.Идентификатор  = "Справка0504833_173";
КомандаПечати.Представление = НСтр("ru = 'Справка ф. 0504833'");
КомандаПечати.Порядок            = 99;
КомандаПечати.ПроверкаПроведенияПередПечатью              = Истина;

Т.к. и Менеджер Печати, и данный Общий модуль – серверный, то вызовы типа ВвестиЗначение с выбором сотрудника здесь не работают.  Поэтому пошел в другом направлении: поменял немного ОбщуюФорму «ПечатьДокументов», в которую выводится результирующий ТабличныйДокумент.


1. Добавил новый реквизит Сотрудник рядом с кнопкой Печать

 

 

 

2. В процедуру ПриИзменении данного поля внес следующий код:

&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)

Область = ЭтотОбъект.ПечатнаяФорма1.НайтиТекст("Исполнитель"); // найдем поле Исполнитель в табличном документе
Если ТипЗнч(Область)=Тип("Неопределено") Тогда
Сообщить("В печатной форме нет поля Исполнитель!"); // так на всякий случай
Иначе
ДанныеСотрудника=ПолучитьНаСервереДанныеСотрудника();
НомерСтроки=лев(Область.Имя,Найти(область.Имя,"C")-1); //запомнили номер строки с Исполнителем
ЭтотОбъект.ПечатнаяФорма1.Область(Номерстроки+"C9").текст=ЭтотОбъект.Сотрудник; //пишем ФИО
ЭтотОбъект.ПечатнаяФорма1.Область(Номерстроки+"C3").текст=ДанныеСотрудника.Должность; // пишем Должность

КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьНаСервереДанныеСотрудника()  // Здесь получим должность. Скопировал из какого-то модуля
ДанныеСотрудника = Новый Структура("СсылкаНаОбъект, Период, Должность", ЭтотОбъект.Сотрудник, ТекущаяДата());
Справочники.Сотрудники.ПолучитьДанныеСотрудника(ДанныеСотрудника);
возврат Данныесотрудника;
КонецФункции

 

3. В конце процедуры НастроитьВидимостьЭлементовФормы модуля Формы  внес следующие строки:

Если не(лев(ЭтотОбъект.Параметры.ИменаМакетов,14)="Справка0504833") Тогда // чтобы не отображать поле Сотрудник, если печатаем не Справку,а что-то другое
Элементы.Сотрудник.Видимость=ложь;
КонецЕсли

 

Проверяем

 

 

Сразу оговорюсь, что программист из меня… посредственный. Больше занимаюсь  учетом.  Вполне допускаю наличие  более изящного варианта, но главное для меня – задача решена, пусть и временно. В более поздних релизах, наверное, 1С-ники  исправят эту проблемку. На этом все – пинайте.

P.S. в обработке прикреплена ОбщаяФорма.ПечатьДокументов  для редакции 2.0.41.16 Можно просто заменить ее в рабочей базе.

Версия 2 содержит переработанные модули для более удобного добавления других печатных форм (по умолчанию: Приходный ордер МЗ, треб. накладная, Справки бухгалтерские)

 

 

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *