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

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

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

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

 

Функция СведенияОВнешнейОбработке() Экспорт

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

ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;

КонецФункции

 

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

&НаКлиенте
Процедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт  //Здесь МассивОбъектов и есть ссылка или ссылки на документ или справочник, в который добавлена обработка

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


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

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

КонецЦикла;

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



//Эта функция поиска окна позаимствована, источник не помню.
&НаКлиенте
Функция ПолучитьОкноДляОтладки(Элемент)

//Зададим ключ поиска документа, из которого вызвана данная обработка,
//чтобы получить ссылку на редактирумый документ в удобном виде для
//функции ОткрытьФорму()
КлючПоиска = Новый Структура("Ключ", Элемент);

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

Возврат Форма;

КонецЕсли;
КонецЦикла;

КонецФункции

 

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

2 Comments

  1. ВалерийБ

    Идея обработки полезна. Интерес бухгалтерии есть. Но при подключении печатная форма выходит по приложению №5. А интерес то как раз к

    Приложению №1. И банки почему-то требуют Приложение №1.

    Reply
  2. belchonokh

    Приложение №1 используется за 2018 год, с 2019 года используется форма приложения №5 (так прописано в конфигурации), принципиального различия между этими приложениями я не заметил, цифры выходят одинаковые. В обработке используется встроенный в конфигурацию механизм печати справок 2-НДФЛ, если очень нужно могу позже добавить печать Приложения №1 вместо пятого, но думаю что с 2019 года всё же поменялось что-то законодательно.

    Reply

Leave a Comment

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