gifts2017

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

Опубликовал Дмитрий Юхнович (dimahigh) в раздел Печать - Справки

При переходе на БГУ 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 содержит переработанные модули для более удобного добавления других печатных форм (по умолчанию: Приходный ордер МЗ, треб. накладная, Справки бухгалтерские)

 

 

Скачать файлы

Наименование Файл Версия Размер
Печать подписи и должности БГУ 2.0.43.18 2
.epf 30,14Kb
02.05.16
2
.epf 2 30,14Kb Скачать
Печать подписи и должности 2
.epf 27,94Kb
02.05.16
2
.epf 1 27,94Kb Скачать

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.