6-НДФЛ из ЗУП 2.5 без проблем. Специальная обработка проведения документов. Методика

19.10.16

Разработка - Механизмы типовых конфигураций

Сдача 6-НДФЛ из ЗУП 2.5 с минимальными временными затратами. Специальная обработка проведения документов.

Скачать исходный код

Наименование Файл Версия Размер
Отдельно обработка проведения
.epf 9,46Kb
56
.epf 9,46Kb 56 Скачать

Все, кто пытался сформировать отчет 6-НДФЛ сталкивался с трудностями, возникающими в ЗУП 2.5 со снятой галкой в учетной политике "При начислении НДФЛ принимать удержанный как исчисленный":

  • Запрет на перепроведение выплат сотрудникам, если позже уже есть выплаты. Например нашли ошибку: не верно стоит дата получения дохода в отпуске или больничном, после исправления на верную нужно провести выплаты, что не представляется возможным.
  • При проведении выплаты межрасчетных начислений НДФЛ зачастую удерживается не этой выплаты, а с предыдущей. Например если человек уходит в отпуск в начале месяца и получет отпускные до зарплаты за предудущий месяц, то программа удерживает НДФЛ не с отпускных а с невыплаченной зарплаты, и 6-НДФЛ заполняется при этом не корректно.

Получается что 6-НДФЛ не получается сформировать в ЗУП 2.5 в общем случае без привлечения программистов.

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

Во вложении обработка проведения документов, которую можно открыть в 1С ЗУП 2.5 через меню Файл-Открыть (или зарегистрировать во внешних обработках). Суть обработки в том, чтобы перепроводить документы не в хронологическом порядке:

  • Распроводятся документы по организации за указанный период. Для корректной работы обработки необходимо указывать период от начала квартала до последнего документа введенного в базу.
  • Проводятся сначала документы созданные в первом месяца квартала, но относящиеся к предудущему расчетному периоду в хронологической последовательности. Например выплаты за прошлый месяц.
  • Проводятся документы созданные в первом месяце квартала и относящиеся к расчетному периоду этого же месяца  в хронологической последовательности
  • Проводятся документы созданные в первом месяце квартала и относящиеся к расчетному периоду следующего месяца (если такие имеются)  в хронологической последовательности
  • Далее  второй месяц квартала, и так далее

Для такого метода существует требование, чтобы начиления были раньше выплат. Например если отпуск выплачивается 22.06, то дата документа начисления отпуска была 21.06, если выплата расчетных человеку при увольнении 22.06, то документ начисления зарплаты по нему, в котором расчитывается НДФЛ, был проведен 21.06, не смотря на то что программа предлагает провести его в конце месяца.

Поскольку документы проводятся в обработке с нарушение хронологи выплат, то чтобы программа давала возможноть запуска обработки необходимо в конфигурацию внести определенные изменения:

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

		КонецЦикла;	
		
	КонецЕсли;
	
	// По регистру расчетов с бюджетом по НДФЛ
	ГоловнаяОрганизация = ОбщегоНазначенияЗК.ГоловнаяОрганизация(Документ.Организация);
// сергей (	
	//Если Документ.ХарактерВыплаты = Перечисления.ХарактерВыплатыЗарплаты.Зарплата Тогда
	//	ДатаНДФЛ = Макс(Документ.Дата, КонецМесяца(Документ.ПериодРегистрации));
	//Иначе
	//	ДатаНДФЛ = Документ.Дата;
	//КонецЕсли;
	Если ПараметрыСеанса.НеПроверятьХронологиюУчетаУдержанногоНДФЛ Тогда
        ДатаНДФЛ = Макс(Документ.Дата, КонецМесяца(Документ.ПериодРегистрации));
	Иначе	
		Если Документ.ХарактерВыплаты = Перечисления.ХарактерВыплатыЗарплаты.Зарплата Тогда
			ДатаНДФЛ = Макс(Документ.Дата, КонецМесяца(Документ.ПериодРегистрации));
		Иначе
			ДатаНДФЛ = Документ.Дата;
		КонецЕсли;
	КонецЕсли;	
// сергей )	
	
	СтруктураДокумента = Новый Структура;
	СтруктураДокумента.Вставить("ДатаНДФЛ", КонецДня(ДатаНДФЛ));
	СтруктураДокумента.Вставить("Ссылка", Документ.Ссылка);
	СтруктураДокумента.Вставить("Период", Документ.Дата);
	СтруктураДокумента.Вставить("ОбособленноеПодразделение", Документ.Организация);
	СтруктураДокумента.Вставить("Организация", ГоловнаяОрганизация);
	СтруктураДокумента.Вставить("ХарактерВыплаты", Документ.ХарактерВыплаты);
	
	ТекстТаблицыВыплаты = 
	"ВЫБРАТЬ
	|	ЗарплатаКВыплате.Физлицо КАК ФизЛицо,
	|	СУММА(ЗарплатаКВыплате.Сумма) КАК Сумма
	|ПОМЕСТИТЬ ВТВыплатыФизлицам
	|ИЗ
	|	Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплате
	|ГДЕ
	|	ЗарплатаКВыплате.Ссылка = &ДокументСсылка
	|	И (ЗарплатаКВыплате.Ссылка.СпособВыплаты = ЗНАЧЕНИЕ(Перечисление.СпособыВыплатыЗарплаты.ЧерезБанк)
	|			ИЛИ ЗарплатаКВыплате.ВыплаченностьЗарплаты = ЗНАЧЕНИЕ(Перечисление.ВыплаченностьЗарплаты.Выплачено)
	|			ИЛИ ЗарплатаКВыплате.ВыплаченностьЗарплаты = ЗНАЧЕНИЕ(Перечисление.ВыплаченностьЗарплаты.Задепонировано))
	|
	|СГРУППИРОВАТЬ ПО
	|	ЗарплатаКВыплате.Физлицо
	|
	|ИМЕЮЩИЕ
	|	СУММА(ЗарплатаКВыплате.Сумма) <> 0
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	ФизЛицо";
	
	ПроведениеРасчетовПереопределяемый.СформироватьРасчетыПоНДФЛПриВыплате(СтруктураДокумента, ТекстТаблицыВыплаты, Документ.Движения.НДФЛРасчетыСБюджетом, Документ.Движения.РасчетыНалоговыхАгентовСБюджетомПоНДФЛ);
	
КонецПроцедуры
  • Внести изменения в модуль ПроведениеРасчетов
Процедура ПроверитьХронологиюУчетаУдержанногоНДФЛ(Организация, Сотрудники, ДатаРегистрации, Отказ, Заголовок) Экспорт
// Сергей (
	Если ПараметрыСеанса.НеПроверятьХронологиюУчетаУдержанногоНДФЛ Тогда
		Возврат;
    КонецЕсли;
// Сергей )
	
	УпрощенныйУчетНДФЛ = ПроцедурыУправленияПерсоналом.ЗначениеУчетнойПолитикиПоПерсоналуОрганизации(глЗначениеПеременной("глУчетнаяПолитикаПоПерсоналуОрганизации"), Организация, "УпрощенныйУчетНДФЛ");
	Если УпрощенныйУчетНДФЛ Тогда
		Возврат
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ДатаРегистрации", КонецДня(ДатаРегистрации));
	Запрос.УстановитьПараметр("Сотрудники", Сотрудники);
	Запрос.УстановитьПараметр("ОбособленноеПодразделение", Организация);
	Запрос.УстановитьПараметр("Организация", ОбщегоНазначенияЗК.ГоловнаяОрганизация(Организация));
	Запрос.Текст = 
	"ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	НДФЛРасчетыСБюджетом.Регистратор,
	|	ПРЕДСТАВЛЕНИЕССЫЛКИ(НДФЛРасчетыСБюджетом.Регистратор) КАК Описание
	|ИЗ
	|	РегистрНакопления.НДФЛРасчетыСБюджетом КАК НДФЛРасчетыСБюджетом
	|ГДЕ
	|	НДФЛРасчетыСБюджетом.ФизЛицо В(&Сотрудники)
	|	И НДФЛРасчетыСБюджетом.Организация = &Организация
	|	И НДФЛРасчетыСБюджетом.ОбособленноеПодразделение = &ОбособленноеПодразделение
	|	И НДФЛРасчетыСБюджетом.Период > &ДатаРегистрации
	|	И НДФЛРасчетыСБюджетом.ВидСтроки = ЗНАЧЕНИЕ(Перечисление.НДФЛРасчетыСБюджетомВидСтроки.Удержание)
	|	И НДФЛРасчетыСБюджетом.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)";
	Результат = Запрос.Выполнить();
	
	Если Результат.Пустой() Тогда
		Возврат
	КонецЕсли;
	
	Выборка = Результат.Выбрать();
	ОбщегоНазначенияЗК.ВывестиИнформациюОбОшибке("Выявлено нарушение хронологии в учете удержанного НДФЛ: в данных присутствуют будущие записи, произведенные документом(ами)", Отказ, Заголовок);		
	Пока Выборка.Следующий() Цикл
		ОбщегоНазначенияЗК.ВывестиИнформациюОбОшибке("", Отказ, Заголовок, Перечисления.ВидыСообщений.Информация, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Новый Структура("Представление,Расшифровка", Выборка.Описание, Выборка.Регистратор)));		
	КонецЦикла;
	ОбщегоНазначенияЗК.ВывестиИнформациюОбОшибке("Чтобы провести текущий документ, необходимо отменить проведение указанных документов.", Отказ, Заголовок, Перечисления.ВидыСообщений.Информация);		

КонецПроцедуры
  • Внести изменения в модуль СтандартныеПодсистемыСервер
Функция УстановкаПараметровСеанса(ИменаПараметровСеанса) Экспорт
	
	Перем ТекстСообщения;
	
	// Параметры сеанса, инициализация которых требует обращения к одним и тем же данным
	// следует инициализировать сразу группой. Для того, чтобы избежать их повторной инициализации,
	// имена уже установленных параметров сеанса сохраняются в массиве УстановленныеПараметры
	УстановленныеПараметры = Новый Массив;
	
	Если ИменаПараметровСеанса = Неопределено Тогда
		ПараметрыСеанса.ПараметрыКлиентаНаСервере = Новый ФиксированноеСоответствие(Новый Соответствие);
		
		// Начальное выполнение на сервере перед запуском программы.
		ПередЗапускомПрограммы();
		Возврат УстановленныеПараметры;
		
	ИначеЕсли ИменаПараметровСеанса.Найти("ПараметрыКлиентаНаСервере") <> Неопределено Тогда
		
		ПараметрыСеанса.ПараметрыКлиентаНаСервере = Новый ФиксированноеСоответствие(Новый Соответствие);
		УстановленныеПараметры.Добавить("ПараметрыКлиентаНаСервере");
// Сергей (
	ИначеЕсли ИменаПараметровСеанса.Найти("НеПроверятьХронологиюУчетаУдержанногоНДФЛ") <> Неопределено Тогда
		
		ПараметрыСеанса.НеПроверятьХронологиюУчетаУдержанногоНДФЛ = Ложь;
		УстановленныеПараметры.Добавить("НеПроверятьХронологиюУчетаУдержанногоНДФЛ");
// Сергей )
	КонецЕсли;
	
	Обработчики = Новый Соответствие;
	ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия(
		"СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииОбработчиковУстановкиПараметровСеанса");
	
	Для каждого Обработчик Из ОбработчикиСобытия Цикл
		Обработчик.Модуль.ПриДобавленииОбработчиковУстановкиПараметровСеанса(Обработчики);
	КонецЦикла;
	
	ОбработчикиСобственные = ОбщегоНазначенияПереопределяемый.ОбработчикиИнициализацииПараметровСеанса();
	
	Для Каждого Запись Из ОбработчикиСобственные Цикл
		Обработчики.Вставить(Запись.Ключ, Запись.Значение);
	КонецЦикла;
	
	// массив с ключами параметров сеанса
	// задаются начальным словом в имени параметра сеанса и символом "*"
	ПараметрыСеансаКлючи = Новый Массив;
	
	Для Каждого Запись Из Обработчики Цикл
		Если Найти(Запись.Ключ, "*") > 0 Тогда
			КлючПараметра = СокрЛП(Запись.Ключ);
			ПараметрыСеансаКлючи.Добавить(Лев(КлючПараметра, СтрДлина(КлючПараметра)-1));
		КонецЕсли;
	КонецЦикла;
	
	Для каждого ИмяПараметра Из ИменаПараметровСеанса Цикл
		Если УстановленныеПараметры.Найти(ИмяПараметра) <> Неопределено Тогда
			Продолжить;
		КонецЕсли;
		Обработчик = Обработчики.Получить(ИмяПараметра);
		Если Обработчик <> Неопределено Тогда
			Если Не ОбщегоНазначения.ПроверитьИмяЭкспортнойПроцедуры(Обработчик, ТекстСообщения) Тогда
				ВызватьИсключение ТекстСообщения;
			КонецЕсли;
			
			Выполнить Обработчик + "(ИмяПараметра, УстановленныеПараметры)";
			Продолжить;
		КонецЕсли;
		Для Каждого ИмяКлючаПараметра Из ПараметрыСеансаКлючи Цикл
			Если Лев(ИмяПараметра, СтрДлина(ИмяКлючаПараметра)) = ИмяКлючаПараметра Тогда
				Обработчик = Обработчики.Получить(ИмяКлючаПараметра+"*");
				Если Не ОбщегоНазначения.ПроверитьИмяЭкспортнойПроцедуры(Обработчик, ТекстСообщения) Тогда
					ВызватьИсключение ТекстСообщения;
				КонецЕсли;
				Выполнить Обработчик + "(ИмяПараметра, УстановленныеПараметры)";
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;
	
	Возврат УстановленныеПараметры;
	
КонецФункции

Все изменения помечены как "\\ Сергей".

Обработка 6-НДФЛ методика

См. также

Ценовая власть. Выносим из цикла схему СКД

Механизмы типовых конфигураций Ценообразование, анализ цен Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Абонемент ($m)

Продолжение темы вынесения кусков повторно-используемого кода в запрос. В прошлый раз мы сделали это с вычислением пользовательских формул. Здесь замахнулись на формулы, задаваемые пользователем запросами.

1 стартмани

11.04.2024    507    tango    0    

3

Формула в реквизите. Приквелл к сериалу "Ценовая власть"

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Какому-либо элементу списка сопоставляется числовое значение, зависящее от других значений, причем эта зависимость изменяется от элемента к элементу. Так, в справочнике "Валюты" курс какой-либо валюты может быть задан формулой (или даже запросом) от значения другой валюты. А в справочнике "Виды цен" формула определяет расчет цены для товарной позиции, т.е. элементов справочника "Номенклатура", у которых в карточке указан этот вид цены. А в 1С:ERP, например, этот механизм используется в ресурсной спецификации.

10 стартмани

11.04.2024    389    tango    5    

3

Ценовая власть. Второй сезон

Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Бесплатно (free)

В первом сезоне мы рассмотрели (с точки зрения программиста) внутренний механизм, помещающий цены в регистр "Цены". Из этого регистра цена попадает в исходящие УПД (в продажи). Но эта цена (в прайс-листе) дифференцирована (ценообразована) в разрезах свойств самой номенклатуры. Но стратегия ценообразования, ценовая власть - это в первую очередь о работе с ценами для клиента. И тут вступает в дело второй акт марлезонского, Скидки (наценки) и кешбек.

08.04.2024    673    tango    0    

2

Ценовая власть (УТ 11.5) - 2

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление торговлей 11 Бесплатно (free)

В прошлый раз специальной обработкой мы выбрали объекты УТ 1.5, группируя по подсистемам. Оказалось, что состав подсистем не вполне корректно отображает функциональную структуру, но зато мы нашли процедуру, которая, вроде бы, должна содержать в себе всё, что нас интересует. Обновление цен должно ведь следовать выбранной стратегии ценообразования, верно? Иначе что она обновляет...

06.04.2024    454    tango    1    

1

Ценовая власть или Управление ценообразованием (УТ 11.5)

Ценообразование, анализ цен Механизмы типовых конфигураций Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Россия Управленческий учет Абонемент ($m)

Ценовая власть - это способность (возможность) компании изменять в некоторых пределах отпускную цену своего товара (услуг, продукции). Чем в более широких пределах вы можете играть в цену продажи, тем больше этой власти у вас. Если вы не можете управлять отпускной ценой, то это или не ваш бизнес, или не бизнес вовсе. Здесь в рубрике "База знаний аналитика и руководителя проекта" слово проект не ограничено "проектом в 1С". Посмотрим, что для этого есть в УТ 11.5.

1 стартмани

05.04.2024    537    tango    12    

2

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2616    YA_418728146    11    

43

Регистры накопления в 1С:КА2 и 1С:ERP для расчета НДФЛ, страховых взносов и взаиморасчетов с сотрудниками на январь 2024 года. Краткое описание

Зарплата Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет НДФЛ Абонемент ($m)

Для расчета зарплаты и соответствующих налогов в конфигурациях 1С:КА2 и 1С:ERP используется 22 регистра накопления, 7 регистров сведений, 1 регистр расчета и бухгалтерские проводки. В таблице приведены названия этих регистров, указаны основные регистраторы и виды движений приход/расход. В описании приводится краткое функциональное назначение регистров в основных зарплатных процессах. Описание регистров родилось из черновиков при написании различных отчетов и обработок при эксплуатации 1С-овских конфигураций и исправлении ошибок по НДФЛ, взаиморасчетов с сотрудниками и прочих. Информация не претендует на полноценное описание работы регистров, скорее это дискуссионный материал. Но, возможно, кому-то пригодится и сократит время при подготовке отчетности за непростой (в плане учета зарплаты) 2023 год. А возможно, кто-то поделится своим опытом.

1 стартмани

10.01.2024    1159    8    2ncom    6    

8

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    4990    mrXoxot    11    

100
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Anesk 17 05.10.16 20:36 Сейчас в теме
Создал аналогичную для себя. Но сейчас новый релиз вышел, который учитывает взаиморасчеты
2. webester 26 06.10.16 09:29 Сейчас в теме
Это че серьезно за 1$m можно скачать актуальный cf ЗУП? Как мило ;)
3. oksja 8 19.10.16 05:38 Сейчас в теме
Огромный респект за идею!!! Вот уж действительно всё гениальное просто. Предложенный в статье способ проведения документов наиболее приближен к естественной хронологии учета и поэтому 2й раздел приобретает более правильный вид. Я бы сказала что это одна из немногих действительно ценных публикаций по теме 6ндфл на инфостарте. С разрешения автора могу опубликовать адаптированную мной обработку для бюджетной зарплаты с небольшими улучшениями. Ещё раз спасибо!
4. diolkost 30.01.17 19:44 Сейчас в теме
Здравствуйте, у меня не работает обработка.
5. vlaskin 82 31.01.17 10:42 Сейчас в теме
(4) Здравствуйте, можете написать более конкретно?
6. diolkost 31.01.17 14:23 Сейчас в теме
Здравствуйте, при запуске "все документы" ничего не происходит.
Прикрепленные файлы:
7. diolkost 27.02.17 13:11 Сейчас в теме
Здравствуйте, я так и не получила ответ на свой вопрос, что не работает обработка.
Оставьте свое сообщение