Печать 2-НДФЛ для одного сотрудника из документа "2-НДФЛ для передачи в ИФНС"

Публикация № 1021087

Печать - Печатные формы документов

1
Внешняя печатная форма, подключаемая к документу "2-НДФЛ для передачи в ИФНС", выводит форму справки 2-НДФЛ для выделенного сотрудника.

Для того чтобы не формировать справки "2-НДФЛ для сотрудника", а печатать их из документа "2-НДФЛ для передачи в ИФНС" в типовой конфигурации ЗУП 3.1.9 уже есть соответствующая печатная форма, но в ней при печати выходят справки на всех сотрудников в документе. Между тем справки 2-НДФЛ обычно просят не все сотрудники. Бухгалтера попросили добавить функционал печати справок по выбранному в документе сотруднику.

Для реализации необходимо определить, на какой строке установлен курсор в печатаемом документе, это можно сделать только на клиенте, по этому вид использования в описании обработки ставим "ОткрытиеФормы":

 

Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = Новый Структура;
	МассивНазначений = Новый Массив;
	МассивНазначений.Добавить("Документ.СправкиНДФЛДляПередачиВНалоговыйОрган"); 
	ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");  
	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
	ПараметрыРегистрации.Вставить("Наименование", "Справка о доходах (2-НДФЛ) по сотруднику"); 	ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
	ПараметрыРегистрации.Вставить("Версия", "1.0"); 
	ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма 'Справка о доходах (2-НДФЛ) по сотруднику'"); 
	ТаблицаКоманд = ПолучитьТаблицуКоманд();
	ДобавитьКоманду(ТаблицаКоманд, "Справка о доходах (2-НДФЛ) по сотруднику", "Справка о доходах (2-НДФЛ) по сотруднику", "ОткрытиеФормы", Истина);
	                                                                                          
	ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
	Возврат ПараметрыРегистрации;
	
КонецФункции

 

Далее в форме обработки находим открытую форму печатаемого документа и получаем текущую строку табличной части:

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

		ТабДокумент = ПечатьНаСервере(Доки, ТекСотрудник);	
		КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Справка2НДФЛ");
		ПечатнаяФорма = УправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, "Справка2НДФЛ");
		ПечатнаяФорма.СинонимМакета = "Справка2НДФЛ";
		ПечатнаяФорма.ТабличныйДокумент = ТабДокумент;
		ПечатнаяФорма.ИмяФайлаПечатнойФормы = "Справка2НДФЛ";
		
		ОбластиОбъектов = Новый СписокЗначений;
		УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов);

	КонецЦикла;

КонецПроцедуры



//Эта функция поиска окна позаимствована, источник не помню. 
&НаКлиенте
Функция ПолучитьОкноДляОтладки(Элемент)
		
	//Зададим ключ поиска документа, из которого вызвана данная обработка,
	//чтобы получить ссылку на редактирумый документ в удобном виде для
	//функции ОткрытьФорму()
	КлючПоиска = Новый Структура("Ключ", Элемент);
	
	//Но нам не надо открывать новую форму (окно) для изменяемого документа, а
	//Нам надо все изменения показать в уже открытых у клиента окнах
	Окна = ПолучитьОкна();
	Для каждого Окно1 из Окна Цикл
		//Окно изменяемого документа будет точно не основным, а вспомогательным, поэтому
		//сразу пропускаем основное окно, а далее идем на не очень хороший способ поиска открытого окна
		//изменяемого документа. Мы просто переберем все окна, а в заголовке, которых будет встречаться
		//Наименование, номер и дата нужного документа - будем изменять
		Если НЕ Окно1.Основное
			И Найти(Окно1.Заголовок, Элемент) Тогда
			//Передадим ключ поиска (можно сказать ссылку на объект) и данные о найденном открытом окне
			//в функцию ОткрытьФорму()
			//Код находится в цикле на тот случай, если открытых окон изменяемого документа больше одного
			Форма = ОткрытьФорму("Документ.СправкиНДФЛДляПередачиВНалоговыйОрган.Форма.ФормаДокумента",КлючПоиска,,,Окно1);
			
			Возврат Форма;
			
		КонецЕсли;	
	КонецЦикла;
	
КонецФункции

 

В результате формируется печатная форма по выделенному в документе сотруднику.

1

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

Наименование Файл Версия Размер
Печать 2-НДФЛ для одного сотрудника из документа "2-НДФЛ для передачи в ИФНС":
.epf 10,33Kb
14.03.19
2
.epf 1.0 10,33Kb 2 Скачать

См. также

Специальные предложения

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение