[v8] Печать справок 2-НДФЛ без создания документа

Частенько возникает необходимость оперативно распечатать справку 2-НДФЛ сотруднику. Предлагаю свой метод решения этой задачи без создания и сохранения документа.

Для реализации этого метода предлагаю 2 варианта.

 

1. Стандартный механизм «Внешние печатные формы».

1.1. Качаете обработку «Печать2НДФЛ.epf»

1.2. Регистрируете в системе 1С:Предприятия как внешнюю печатную форму (об этом вот тут http://www.avtexpert.ru/kak-podklyuchit-vneshnyuyu-pechatnuyu-formu.html , причем с видео)

1.3. Наслаждаетесь 🙂

 

2. Доработка конфигурации

2.1. Добавляете в общий модуль СправкиПоНДФЛ экспортную функцию ПечатьСправок2НДФЛ_ВФоне


// ----------------------------------------------------------------------------------------------
// Параметры:
// Физлицо - ссылки на физлиц
// Организация - ссылка на орг
// НалоговыйПериод - год
// Основание - строка: сводно или по ОКАТО
// КоличествоЭкземпляров - число
// НаПринтер - булево
//
// Описание:
// служит для вызова печати справок без создания документа.
//
// если есть проведенная справка по указанному ф/л, используется она,
// иначе вызывается контекст модуля документа, где в транзакции
// происходит заполнение реквизитов, сохранение и печать, после чего
// транзакция отменяется
//
// Возвращает:
// Табличный документ
//
Функция ПечатьСправок2НДФЛ_ВФоне(Физлицо, Знач Организация = Неопределено, Знач НалоговыйПериод = Неопределено, Знач Основание = Неопределено, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт

Если НалоговыйПериод = Неопределено Тогда
НалоговыйПериод = Год(ОбщегоНазначения.ПолучитьРабочуюДату());
КонецЕсли;
Если Организация = Неопределено Тогда
Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяОрганизация")
КонецЕсли;
Если Основание = Неопределено Тогда
Основание = Перечисления.ПорядокФормированияСправкиОДоходахФизлица.ФизлицуСводно;
КонецЕсли;

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| СправкаПоНДФЛ.Ссылка
|ИЗ
| Документ.СправкаПоНДФЛСотруднику КАК СправкаПоНДФЛ
|ГДЕ
| СправкаПоНДФЛ.Сотрудник = &Сотрудник
| И СправкаПоНДФЛ.Проведен
| И СправкаПоНДФЛ.Организация = &Организация
| И СправкаПоНДФЛ.НалоговыйПериод = &НалоговыйПериод"
;

Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("НалоговыйПериод", НалоговыйПериод);
Запрос.УстановитьПараметр("Сотрудник", Физлицо);

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

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

Иначе
ДокОбъектДляПечати = Документы.СправкаПоНДФЛСотруднику.СоздатьДокумент();

ДокОбъектДляПечати.Дата = РабочаяДата;
ДокОбъектДляПечати.УстановитьНовыйНомер();

ДокОбъектДляПечати.Организация = Организация;
ДокОбъектДляПечати.НалоговыйПериод = НалоговыйПериод;
ДокОбъектДляПечати.Сотрудник = Физлицо;
ДокОбъектДляПечати.СпособФормирования = Основание;

ДокОбъектДляПечати.ЗаполнитьРеквизитыЗначениямиПоУмолчанию();

СписокОКАТОиКПП = СписокОКАТОиКПП(Организация);
ДокОбъектДляПечати.ОКАТО_КПП = ?(СписокОКАТОиКПП.Количество() > 0, СписокОКАТОиКПП[0].Значение, "");
ГоловнаяОрганизация = ОбщегоНазначения.ГоловнаяОрганизация(Организация);

ПрочитатьДанныеСотрудника(ДокОбъектДляПечати, ДокОбъектДляПечати.Дата, НалоговыйПериод);
ПрочитатьДанныеСправки(ДокОбъектДляПечати, ДокОбъектДляПечати.СведенияОДоходах, ДокОбъектДляПечати.СведенияОВычетах, ДокОбъектДляПечати.СуммыНалогов, НалоговыйПериод, Организация, ГоловнаяОрганизация, Неопределено, КонецДня(ДокОбъектДляПечати.Дата)+1);

НачатьТранзакцию();
ДокОбъектДляПечати.Записать();
ДокОбъектДляПечати.Печать("Справка", КоличествоЭкземпляров, НаПринтер);
ОтменитьТранзакцию();

КонецЕсли;


КонецФункции // ПечатьСправок2НДФЛ_ВФоне

2.2. Вызов производится из любого модуля методом СправкиПоНДФЛ.ПечатьСправок2НДФЛ_ВФоне(Физлицо, Организация)


Экспериментировал на ЗБУ 1.0.42.1 и ЗУП 2.5.37.1, но думаю на УПП метода аналогичная.

Всем удачного кодинга, посоны! 🙂

3 Comments

  1. nord

    «1.2. Регистрируете в системе 1С:Предприятия как внешнюю печатную форму» — регистрируем для какого объекта?

    Reply
  2. the1

    (1) Справочник «Сотрудники»

    Reply
  3. dock

    нда.. неплохая такая реклама стороннего ресурса

    Reply

Leave a Comment

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