gifts2017

Пример доработки ЗУП 2.5 для 6-НДФЛ и для сохранения галочки Исчисленный налог = Удержанный налог

Опубликовал Nik Verg (lotan) в раздел Программирование - Практика программирования

В данной статье рассмотрено мое решение изменения ЗУП 2.5 для сохранения в настройках галки "Исчисленный налог = Удержанный налог". Подробно расписывать преимущества этой галки не буду, в инете есть множество материалов, где описано, что Вас ждет, если эту галку снять.

ВНИМАНИЕ! Уважаемые коллеги, получилась комичная ситуация, что 1С доработало типовую Зуп 2.5 в 102 релизе так же, как и я, это сделал в начале Года! Тему можно отправлять в Архив.

Для тех, кто уже внес изменения, как у меня. Я написал небольшую обработку, для переброски из Доработанного реквизита в типовой, дату Удержания-Выплаты З/П. Не знаю как сделать Обработку бесплатной, поэтому пишите в личку.

 

Суть моей доработки  проста, создать Дату Удержанного НДФЛ в документе "Начисление зарплаты сотрудникам организаций" (Рис. 1), где мы можем проставить дату выплаты З/П по данному начислению. У кого-то возникнет ситуация выплаты начисления разными датами, для этого мы создаем и в Табличной части "НДФЛ" одноименный реквизит где имеем возможность проставить дату Удержания индивидуально для каждого сотрудника и суммы Налога. См. Рис 1.

Небольшое преимущество данного примера, это выведение добавленных реквизитов программным способом. И при обновлении Вам необходимо будет сохранять всего одну строку в Типовом модуле. (См. пункт 4 данной инструкции)

 

1. Создаем реквизит документа с типом дата в документе "Начисление зарплаты сотрудникам организаций", у меня имя "РТ_ДатаУдержанияНДФЛ"

2. Создаем одноименный реквизит с Типом значения Дата в ТЧ "НДФЛ".

3. Создаем Наш Общий модуль, у меня он называется "РТ_ОбщийМодуль".

Заполнение модуля:

#Область ДоработкаНДФЛУдержанный

Процедура РТ_УдалитьУдержаниеВВыплатеЗПОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт  
	
	//Если у нас не упрощенный режим, ничего не трогаем!
	УпрощенныйУчетНДФЛ = ПроцедурыУправленияПерсоналом.ЗначениеУчетнойПолитикиПоПерсоналуОрганизации(глЗначениеПеременной("глУчетнаяПолитикаПоПерсоналуОрганизации"), Источник.Организация, "УпрощенныйУчетНДФЛ");
	Если НЕ УпрощенныйУчетНДФЛ Тогда 
		Возврат
	КонецЕсли;
	
	//Удаляем чушь
	НДФЛ_Удерж = Источник.Движения.НДФЛРасчетыСБюджетом;
	НДФЛ_Удерж.Очистить();
	НДФЛ_Удерж.Записывать = Истина;
	
	НДФЛ_РасчетС_Бюджетом = Источник.Движения.РасчетыНалоговыхАгентовСБюджетомПоНДФЛ;
	НДФЛ_РасчетС_Бюджетом.Очистить();
	НДФЛ_РасчетС_Бюджетом.Записывать = Истина;
	
КонецПроцедуры

Процедура ВыводДополнительныхРеквизитов(ДокументОбъект, ФормаДокумента) Экспорт

    // Вывод или сохранение дополнительных реквизитов
    // Если элемент формы существует то сохраняем значение
    Элемент = ФормаДокумента.ЭлементыФормы.Найти("РТ_ДатаУдержанияНДФЛ");

	Если Элемент = Неопределено Тогда
		
        // Создание заголовка
        Элемент = ФормаДокумента.ЭлементыФормы.Добавить(Тип("Надпись"), "ЗаголовокРТ_ДатаУдержанияНДФЛ", Истина, ФормаДокумента.Панель);
        Элемент.Заголовок = "Дата Удержания НДФЛ:";

        // Настройка
        Элемент.Лево = 416;
        Элемент.Верх = 102;
        Элемент.Высота = 19;
        Элемент.Ширина = 140;

        // Установка привязок
	Элемент.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ФормаДокумента.ЭлементыФормы.ЗаголовокРТ_ДатаУдержанияНДФЛ, ГраницаЭлементаУправления.Верх);
        Элемент.УстановитьПривязку(ГраницаЭлементаУправления.Право, ФормаДокумента.ЭлементыФормы.ПериодНачисленияДатаОкончания, ГраницаЭлементаУправления.Право);
        Элемент.УстановитьПривязку(ГраницаЭлементаУправления.Лево, ФормаДокумента.ЭлементыФормы.ПериодНачисленияДатаОкончания, ГраницаЭлементаУправления.Право);

        // Создание поле ввода
        Элемент = ФормаДокумента.ЭлементыФормы.Добавить(Тип("ПолеВвода"), "РТ_ДатаУдержанияНДФЛ", Истина, ФормаДокумента.Панель);
        Элемент.ТипЗначения = Новый ОписаниеТипов("Дата");
        Элемент.Данные = "РТ_ДатаУдержанияНДФЛ";

        // Настройка
        Элемент.Лево = 416 + 140;
        Элемент.Верх = 102;
        Элемент.Высота = 19;
        Элемент.Ширина = 92;

        // Установка привязок
	Элемент.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ФормаДокумента.ЭлементыФормы.РТ_ДатаУдержанияНДФЛ, ГраницаЭлементаУправления.Верх);
	Элемент.УстановитьПривязку(ГраницаЭлементаУправления.Право, ФормаДокумента.ЭлементыФормы.Ответственный, ГраницаЭлементаУправления.Право);
        Элемент.УстановитьПривязку(ГраницаЭлементаУправления.Лево,ФормаДокумента.ЭлементыФормы.ПериодНачисленияДатаОкончания, ГраницаЭлементаУправления.Право);

		//Выводим в таличную часть реквизиты
		ЭлементыФормы = ФормаДокумента.ЭлементыФормы;
		ЭлементыФормы.НДФЛ.Колонки.Добавить("РТ_ДатаУдержанияНДФЛ", "Дата удержания НДФЛ");
		ЭлементыФормы.НДФЛ.Колонки.РТ_ДатаУдержанияНДФЛ.Данные = "РТ_ДатаУдержанияНДФЛ";
		ЭлементыФормы.НДФЛ.Колонки.РТ_ДатаУдержанияНДФЛ.УстановитьЭлементУправления(Тип("ПолеВвода"));
		ЭлементыФормы.НДФЛ.Колонки.РТ_ДатаУдержанияНДФЛ.ЭлементУправления.КнопкаВыбора = Истина;
		
    КонецЕсли;

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

Процедура РТ_ПроведениеНачислениеЗПОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
	
	//Если у нас не упрощенный режим, ничего не трогаем!
	УпрощенныйУчетНДФЛ = ПроцедурыУправленияПерсоналом.ЗначениеУчетнойПолитикиПоПерсоналуОрганизации(глЗначениеПеременной("глУчетнаяПолитикаПоПерсоналуОрганизации"), Источник.Организация, "УпрощенныйУчетНДФЛ");
	Если НЕ УпрощенныйУчетНДФЛ Тогда 
		Возврат
	КонецЕсли;

	ДатаУдержанияНДФЛ = Источник.РТ_ДатаУдержанияНДФЛ;
	
	ТЗ_НДФЛ_сДатами = ПолучитьЛичныеДатыУдержания(Источник.Ссылка);
	Если ТЗ_НДФЛ_сДатами.Количество() = 0 Тогда 
		ДатыВТЧ = Ложь;
	Иначе 
		ДатыВТЧ = Истина;
	КонецЕсли;
	
	Если ДатаУдержанияНДФЛ <> Дата(1,1,1) Тогда 
		НДФЛ_Удерж = Источник.Движения.НДФЛРасчетыСБюджетом;
		НДФЛ_Удерж.Записывать = Истина;
		Для Каждого Записи из НДФЛ_Удерж Цикл
			
			Если Записи.ВидСтроки = Перечисления.НДФЛРасчетыСБюджетомВидСтроки.Удержание Тогда
				
				Записи.Период = ДатаУдержанияНДФЛ;
				
				//Проверяем даты Удержания НДФЛ в талице
				Если ДатыВТЧ Тогда 
					
					Для Каждого СтрокаТЗ из ТЗ_НДФЛ_сДатами Цикл 
						Если СтрокаТЗ.ФизЛицо = Записи.ФизЛицо И СтрокаТЗ.Налог = Записи.Налог И СтрокаТЗ.ПодразделениеОрганизации = Записи.ПодразделениеОрганизации  Тогда 
						Записи.Период = СтрокаТЗ.РТ_ДатаУдержанияНДФЛ;
						КонецЕсли;
					КонецЦикла;	
				КонецЕсли;
				
			КонецЕсли;
			
		КонецЦикла;		
	КонецЕсли;
	
КонецПроцедуры

Функция ПолучитьЛичныеДатыУдержания(Ссылка)

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

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

КонецФункции // ПолучитьЛичныеДатыУдержания(Источник.Ссылка);()

#КонецОбласти

4. В конце процедуры "ПриОткрытии" Формы документа "Начисление зарплаты сотрудникам организаций" вставляем:

//Измения +
	РТ_ОбщийМодуль.ВыводДополнительныхРеквизитов(ДокументОбъект,ЭтаФорма);
	//Изменения -

 Это единственное изменение, которое необходимо будет сохранять при Обновлении конфы.

5. Создаем Подписку на событие Источник = ДокументОбъект.НачислениеЗарплатыРаботникамОрганизаций, Событие = ОбработкаПроведения, Обработчик = РТ_ОбщийМодуль.РТ_ПроведениеНачислениеЗПОбработкаПроведения.

На этом все. Обращу внимание, что в моем Общем модуле есть процедура "РТ_УдалитьУдержаниеВВыплатеЗПОбработкаПроведения", она создана для Подписки при проведении Ведомости на выплату З/П. Не описывал создание этой подписки по причине того, что в релизе 2.5.101.2 разработчки убрал движение этого документа по регистру "НДФЛРасчетыСБюджетом", но я у себя оставил.

Так же для Бухгалтеров создал Внешний отчет для сверки 6-НДФЛ: http://infostart.ru/public/505533/

Первые отчеты ушли на этой неделе, будем смотреть, что скажут в ИФНС, но в 6-НДФЛ все было красиво.

 

P.S

Знаю, что Код местами туповат, но сделал так...

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

Наименование Файл Версия Размер
ОтчетОСравнении.mxl 2
.mxl 113,75Kb
13.04.16
2
.mxl 1 113,75Kb Скачать
ОбработкаПереброскиРеквизита 3
.epf 6,81Kb
20.04.16
3
.epf 6,81Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Александр / (GeterX) 16.04.16 16:38
А в ЗКБУ 1.0 в качестве даты удержания используется дата документа, так планирую со следующем обновлением такое сделают и в ЗУП 2.5
2. Галина (Beta) 19.04.16 10:07
В ожидании чудо-релиза, прописала доработку, все работает!!!
3. Nik Verg (lotan) 19.04.16 10:14
(2) Beta, наверное зря дописывали... Говорят там будет типовая дата Удержания в начислении З/П. Единственное наверное чего не будет, так даты Удержания в Табличной части.
Если так будет в 102 релизе, сюда выложу обработку, переброски из доработанного реквизита в Типовой даты.
4. roms52@gmail.com (stroganov_ru) 22.04.16 09:24
(3) lotan, Вы правы, даты удержания в табличной части нет.