gifts2017

ЗиК 298 Ошибка в исчислении стажа. Отчетность ПФР СЗВ-6.

Опубликовал Светлана Иванова (Cvetic) в раздел Программирование - Практика программирования

Проблемы у сотрудников, имеющих Больничные листы, у которых либо Начало болезни = конец месяца либо Окончание болезни = начало месяца. В первом случае в СЗВ-6 началом болезни считается начало следующего месяца, во втором окончание болезни - конец месяца.

Для исправления этой ошибки в глобальном модуле правим процедуру глВписатьОсновнуюЗаписьОСтаже2010  строка 19226

           

//ИначеЕсли  (Начало<=НачДата) и (Окончание<КонДата) и (Окончание>НачДата) Тогда                
//начало периодов совпадает, а вот окончание вписываемого периода меньше
ИначеЕсли (Начало<=НачДата) и (Окончание<КонДата) и (Окончание>=НачДата) Тогда
// здесь изменим на >=
//ИначеЕсли (Начало>НачДата) и (Начало<КонДата) и (Окончание>=КонДата) Тогда
//окончания периодов совпадают, а начало вписываемого периода больше
ИначеЕсли (Начало>НачДата) и (Начало<=КонДата) и (Окончание>=КонДата) Тогда
// здесь изменим на <=


Наткнулась только на б/л, но думаю, для административных и декретных отпусков то же самое.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Евгений (yazuzenko) 13.07.10 21:13
2. oleg oleg (legioner) 14.07.10 02:44
3. oleg oleg (legioner) 14.07.10 02:46
Еще момент. Если дата окончания б/л = дате увольнения, то программа пытается уменьшить базу фсс в последующие месяца после увольнения на сумму б/л. Как исправить?
4. Светлана Иванова (Cvetic) 14.07.10 08:25
(3) не знаю, не сталкивалась. Сейчас некогда смотреть, отчет ПФР делаю.
5. Дэн Кроу (Дэн) 15.07.10 10:06
Я как бы все понимаю, но есть внешний отчет 1с от 9.07 в который скоппировали эту функции из глобальника и отчет ее использует. она там называется ВписатьОсновнуюЗаписьОСтаже2010(). Зря правите в глобальнике.
6. Светлана Иванова (Cvetic) 15.07.10 10:53
Исправила и во внешнике. Готовый отчет http://infostart.ru/public/73064/
7. Елена Воробьев а (Елена-1) 16.07.10 11:09
Помогите, при формировании СЭВ- 6 кнопки для формирования не активны
8. Ena - (g.g.nik) 16.07.10 14:30
9. Светлана Иванова (Cvetic) 16.07.10 16:27
(7) Попробуйте в свойствах сохраненного файла убрать галочку "Только для чтения".
(8) Спасибо :) В понедельник буду смотреть.
10. Цербер (Программулькин) 17.07.10 04:03
11. Дмитрий Басов (dm-bas) 19.07.10 09:11
А можно узнать по какому принципу сотр включается в пачку СЗВ6-1 и СЗВ6-2 ?
Где можно про это прочесть ?
А то у меня в обработке от 1С 298 релиз, он включается в СЗВ6-2, а в вашей обработке ПФР он включается в СЗВ6-1.
12. Дмитрий Басов (dm-bas) 19.07.10 10:19
Причем записи у сотра следующие:
01.10.10-15.05.10
01.06.10-30.06.10
т.е. он работал с 1 января по 15 мая, пока не уволился
и далее снова был принят с 1 июня.
13. Дмитрий Басов (dm-bas) 19.07.10 12:14
допёр.вроде по старым правилам его надо было включать в СЗВ-4-1,ну а сейчас надо в СЗВ-6-2, т.к. у него ни больничных ни Администр.отпуска не было..
14. Светлана Иванова (Cvetic) 19.07.10 13:57
15. Сергей Квинт (zikzup) 19.07.10 15:34
такая проблема..стаж анализируется тока в январе а дальше - февраль/июнь невидит не больничных не без сохранения( и соотвественно заполняте тем у кого в марте больничный стаж с 01.01 по 30.06..ни у кого не было?
16. Сергей (Sergey66) 21.07.10 07:46
Что бы анализировался стаж за весь период надо сделать следущие изменения...
Функция ГлЗаполнитьТаблицуПериодовДействияВР(Сотрудник,ТаблицаПериодов,НачалоПериода, ОкончаниеПериода, СписокВР)
	
	Перем МассивДней[370];
	
	ТаблицаПериодов=СоздатьОбъект("ТаблицаЗначений"); 
	ТаблицаПериодов.НоваяКолонка("НачалоПериода");
	ТаблицаПериодов.НоваяКолонка("ОкончаниеПериода");
	
	Для Сч = 1 По 370  Цикл
		МассивДней[Сч] = 1;	
	КонецЦикла;  
	
	глЗаполнитьМассивДней(МассивДней, Сотрудник, НачалоПериода, ОкончаниеПериода, 0, СписокВР); 
	

	НачДень= НомерДняГода(НачалоПериода);

	КонДень = НомерДняГода(ОкончаниеПериода);
	
	ЕстьПериод=0;
	Для Сч = НачДень По КонДень Цикл 
	//Для Сч = 1 По КолДней  Цикл 
		
		Если (ЕстьПериод=0) и (МассивДней[Сч] = 0) Тогда
			ЕстьПериод=1;
			ТаблицаПериодов.НоваяСтрока();
			ТаблицаПериодов.НачалоПериода=Дата("01/01/2010")+ Сч-1;
			//ТаблицаПериодов.НачалоПериода=НачалоПериода+Дата("01/01/2010")+ Сч-1;
		ИначеЕсли (ЕстьПериод=1) и (МассивДней[Сч] = 1) Тогда	
			ЕстьПериод=0;
			ТаблицаПериодов.ОкончаниеПериода=Дата("01/01/2010")+ Сч-2;
			//ТаблицаПериодов.ОкончаниеПериода=НачалоПериода+Дата("01/01/2010")+ Сч-2;
		КонецЕсли;	
		
	КонецЦикла;
	
	Если ЕстьПериод=1 Тогда
		//это значит, что в периоде который мы анализировали действие ВР не закончилось, 
		//установим дату окончания 
		ТаблицаПериодов.ОкончаниеПериода=ОкончаниеПериода;
	КонецЕсли;
	
	Если ТаблицаПериодов.КоличествоСтрок()>0 Тогда
	    Возврат 1;
	Иначе
		Возврат 0;
	КонецЕсли;	
    
КонецФункции //глЗаполнитьТаблицуПериодовДействияВР()  
...Показать Скрыть
17. DaDaEtoYa 21.07.10 10:29
Я думаю можно еще добавить пару условий, на случай, например, если невыход в кол-ве одного дня попадает на последний день месяца или первый:
ИначеЕсли (Начало = НачДата) и (Окончание = НачДата) Тогда
//начала и окончание периода является одним днем начала месяца
ВремТаблицаСоСтажем.Выгрузить(СтарыйНаборДляСтажа,НомерСтроки,НомерСтроки,"5,6,10,11,15");
глВписатьОсновнуюЗаписьОСтаже2010("Добавить",ТаблицаСоСтажем,1,НачДата,НачДата, НаборДляСтажа);
глВписатьОсновнуюЗаписьОСтаже2010("Добавить",ТаблицаСоСтажем,1,НачДата+1,КонДата, СтарыйНаборДляСтажа);
ИначеЕсли (Начало = КонДата) и (Окончание = КонДата) Тогда
//начала и окончание периода являются последним днем месяца
ВремТаблицаСоСтажем.Выгрузить(СтарыйНаборДляСтажа,НомерСтроки,НомерСтроки,"5,6,10,11,15");
глВписатьОсновнуюЗаписьОСтаже2010("Добавить",ТаблицаСоСтажем,1,НачДата,КонДата-1, СтарыйНаборДляСтажа);
глВписатьОсновнуюЗаписьОСтаже2010("Добавить",ТаблицаСоСтажем,1,КонДата,КонДата, НаборДляСтажа);
18. Галина (galkael) 22.07.10 06:22
Молодец! Огромное спасибо. А у нас территориальные условия МКС. Так я ещё добавила учет прогулов и командировок (они должны быть без МКС)
в функцию глСобратьДанныеДляСЗВ2010
...
//ИначеЕсли (ВР = ВидРасчета.ОтпускУчебный) или (ВР = ВидРасчета.Прогул) или (ВР =
// ВидРасчета.ОплатаПоСреднемуЗаработку) Тогда

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