gifts2017

Остатки отпусков

Опубликовал Андрей Белобородов (майский ЖЖЖмель) в раздел Обработки - Рабочее место

Обработка «Остатки отпусков» предназначена для корректировки дней остатков отпусков по работникам организации в разрезах рабочих периодов и видов отпусков в программе «Зарплата и Управление Персоналом, редакция 2.5». Остатки отпусков рассчитываются штатным механизмом типовой конфигурации.

 Версия 1.2 от 07.07.2015

  • исправлена ошибка при запуске обработки на версии платформы 8.3.6;
  • добавлена возможность открыть форму ввода количества дней отпуска в год по сотруднику из в контекстного меню списка «Работники организации»;

Функционал обработки позволяет: 

  • Получить выборку сотрудников организации с произвольной настройкой отбора;
  • Выполнить корректировку остатков дней отпусков для каждого сотрудника;
  • Сформировать печатные формы с горизонтальной и вертикальной разверткой  остатков по рабочим периодам сотрудников организации;


Выполнение расчета.

При открытии обработки все сотрудники в списке отмечены признаком для расчета, но без рассчитанных дней, так как операция расчета может длиться достаточно продолжительное время. Получение сведений о количестве заработанных, использованных и остатков дней отпусков для сотрудников выполняется по кнопке «Рассчитать». Если требуется выполнить расчет выборочного списка сотрудников, то нажатием по кнопке «Снять флажки»,  можно отключить признак расчета для всех и отметить только необходимых.

После выполнения расчета для каждого сотрудника будут выведены дополнительные строки с рабочими периодами и количеством заработанных, использованных и остатком дней в разрезах видов отпусков.


Корректировка остатка дней.

Количество использованных дней отпуска можно свободно редактировать, если для текущего вида отпуска рассчитаны плановые дни за год,  остаток дней за рабочий период вычисляется по формуле «Заработано» - «Использовано». Если сотрудником полностью использованы положенные дни за рабочий периода, то достаточно для строки установить признак «Использован», остатки дней для таких строк автоматически обнулятся.

Для сохранения результатов исправлений в информационной базе необходимо нажать кнопку «Исправить» (Рисунок № 3), расположенную в контекстном (правая кнопка мыши) меню списка «Работники организации».

P.S. Более подробное описание можно открыть при нажатии по гипперссылке «Версия ...».

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

Наименование Файл Версия Размер
Остатки отпусков 104
.epf 169,16Kb
10.07.15
104
.epf 1.2 169,16Kb Скачать

См. также

Вознаграждение за ответ
Сумма: 0 $m
Добавили:
Юрий Дорошенко (nord) (0.32 $m)
Подписаться Добавить вознаграждение

Комментарии

1. Александр Лыткин (TrinitronOTV) 07.10.14 05:40
У меня возник вопрос: корректировка остатков отпуска осуществляется только в рамках отчета или эти корректировки заносятся в информационную базу?
2. Андрей Белобородов (майский ЖЖЖмель) 07.10.14 06:47
(1) TrinitronOTV,

У меня возник вопрос: корректировка остатков отпуска осуществляется только в рамках отчета или эти корректировки заносятся в информационную базу?


корректировки заносятся в информационную базу документом "Корректировка записей регистров накопления" по регистру "Фактические отпуска организаций".
TrinitronOTV; +1 Ответить
3. Max But (unsimple) 07.10.14 12:18
4. Андрей Пармузин (forrain@rambler.ru) 07.10.14 12:22
Доработай возможность использования обработки в конфигурации УПП (ИДКонфигурации )

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

Процедура ВвестиИсправление(СтрокаДереваЗначений) Экспорт
	
 Для Каждого РабочийГод Из СтрокаДереваЗначений.Строки Цикл
    	Если Не РабочийГод.ОтредактированоВручную Или РабочийГод.ВведеныОстатки Тогда
    		Продолжить;
		КонецЕсли;
		
		НаборЗаписей       = РегистрыНакопления.ФактическиеОтпускаОрганизаций.СоздатьНаборЗаписей();
		ФактическиеОтпуска = НаборЗаписей.ВыгрузитьКолонки();
		
    	РезультатПоиска  = мПодсистема.РегистрыСведений.ВидыЕжегодныхОтпусков.НайтиСтроки(Новый Структура("Использование", Истина));
    	Для Каждого ВидОтпуска Из РезультатПоиска Цикл
			КоличествоДней = (РабочийГод["ВидОтпуска_ОстатокДней_" + ВидОтпуска.Идентификатор] - РабочийГод["ВидОтпуска_ОстатокДней_" + ВидОтпуска.Идентификатор + "_СтароеЗначение"]);
    		Если РабочийГод["ВидОтпуска_КоличествоДнейЗаПолныйГод_" + ВидОтпуска.Идентификатор] = 0 Или КоличествоДней = 0 Тогда
    			Продолжить;
			КонецЕсли;
			
			Запись = ФактическиеОтпуска.Добавить();
			
			Запись.ВидЕжегодногоОтпуска = ВидОтпуска.ВидЕжегодногоОтпуска;  
			Запись.Сотрудник            = СтрокаДереваЗначений.Сотрудник;
			Запись.Количество           = -КоличествоДней;
			
			Запись.ДатаОкончания        = РабочийГод.РабочийГодПо;
			Запись.ДатаРегистрации      = ДатаАктуальности;
			Запись.Период               = РабочийГод.РабочийГодС;
			
			Запись.Активность           = Истина;
		КонецЦикла;
		
		Если ФактическиеОтпуска.Количество() > 0 Тогда
			
			Если ЗначениеЗаполнено(РабочийГод.ДокументИсправление) Тогда
				ДокументИсправление = РабочийГод.ДокументИсправление.ПолучитьОбъект();
			Иначе
				ИДКонфигурации  = РегламентированнаяОтчетность.ИДКонфигурации();
               	Если ИДКонфигурации = "ЗУП" Тогда 
				    ДокументИсправление      = Документы.КорректировкаЗаписейРегистровНакопления.СоздатьДокумент();
				ИначеЕсли ИДКонфигурации = "УПП" Тогда 
				    ДокументИсправление      = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
				КонецЕсли;	
				ДокументИсправление.Дата = РабочийГод.РабочийГодС;
				
				ДокументИсправление.УстановитьНовыйНомер();
				
				НоваяСтрока = ДокументИсправление.ТаблицаРегистровНакопления.Добавить();
	 			НоваяСтрока.Имя           = "ФактическиеОтпускаОрганизаций";
	 			НоваяСтрока.Представление = "Фактические отпуска организаций";
				
				//ДокументИсправление.ОбменДанными.Загрузка = Истина;
				//ДокументИсправление.Записать();
			КонецЕсли;
			
			НаборЗаписей = РегистрыНакопления.ФактическиеОтпускаОрганизаций.СоздатьНаборЗаписей();
			НаборЗаписей.Отбор.Регистратор.Установить(ДокументИсправление.Ссылка);
			НаборЗаписей.Прочитать();
			
			Для Каждого Запись Из НаборЗаписей Цикл
				Исправление = ФактическиеОтпуска.Найти(Запись.ВидЕжегодногоОтпуска,"ВидЕжегодногоОтпуска");
				Если Исправление = Неопределено Тогда
					ЗаполнитьЗначенияСвойств(ФактическиеОтпуска.Добавить(), Запись);
				Иначе
					Исправление.Количество = Исправление.Количество + Запись.Количество;	
				КонецЕсли;
			КонецЦикла;
			
			ДокументИсправление.Комментарий   = "#Исправление остатков отпусков по работнику " + СтрокаДереваЗначений.Сотрудник + " за период работы с " + Формат(РабочийГод.РабочийГодС, "ДФ=dd.MM.yyyy") + " по " + Формат(РабочийГод.РабочийГодС, "ДФ=dd.MM.yyyy");
			ДокументИсправление.Ответственный = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойОтветственный");
	    		
			ДокументИсправление.Движения.ФактическиеОтпускаОрганизаций.Загрузить(ФактическиеОтпуска);

			ДокументИсправление.ОбменДанными.Загрузка = Истина;
			ДокументИсправление.Записать();
		КонецЕсли;	
	КонецЦикла;	
    	
КонецПроцедуры
...Показать Скрыть
5. Андрей Белобородов (майский ЖЖЖмель) 08.10.14 08:34
Доработал ;), теперь можно использовать в УПП и КА
forrain@rambler.ru; +1 Ответить
6. VeRkA 08.10.14 10:12
Доброго дня!
Я правильно поняла, "северный" - это дополнительный? или дополнительный нужно вносить ручками? Есть такая возможность?
Отчет очень развернутый, класс!
7. Андрей Белобородов (майский ЖЖЖмель) 08.10.14 10:30
(6) VeRkA,

Я правильно поняла, "северный" - это дополнительный? или дополнительный нужно вносить ручками? Есть такая возможность?


действительно, все отпуска кроме основного являются дополнительными, заносятся в справочнике "Виды ежегодных отпусков".
Количество предоставляемых дней за год для дополнительного отпуска можно указать непосредственно в элементе справочника "Виды ежегодных отпусков" если значение одинаково для всех сотрудников, если нет, то в элементе справочника "Должности организации" или непосредственно сотруднику в типовой форме "Остатки отпусков" по кнопке "Изменить количество дней в год".
8. shoy Андрей ais (shoy) 08.10.14 10:47
Отличная вещь.
Автор не смотрел новую редакцию ЗУП 8.3?
9. Андрей Белобородов (майский ЖЖЖмель) 08.10.14 10:55
(8) shoy,

Автор не смотрел новую редакцию ЗУП 8.3?


детально в части остатков отпусков еще нет, пока веду ознакомление в общих чертах
10. Юрий Вячеславович (3762515) 08.10.14 11:19
Как раз на УПП нужна корректировка остатков отпуска! Очень в тему!
12. Александр Лагунов (kit) 03.02.15 17:14
13. Артем Артеменко (dock) 22.04.15 17:26
14. Vladimir Vladimir (VladimirVladimir) 09.07.15 17:21
Добрый день, ошибка
{ВнешняяОбработка.ОстаткиОтпусков.МодульОбъекта(631)}: Поле объекта не обнаружено (ВидыЕжегодныхОтпусков)
Запрос.УстановитьПараметр("РегистрСведений_ВидыЕжегодныхОтпусков", мПодсистема.РегистрыСведений.ВидыЕжегодныхОтпусков);
15. Андрей Белобородов (майский ЖЖЖмель) 10.07.15 08:39
(14) VladimirVladimir,

такой глюк встречается если запускать обработку на версии платформы 8.3.6, сам узнал три дня назад, все не мог собраться обновить на сайте, в версии 1.2 исправлено
16. Vladimir Vladimir (VladimirVladimir) 10.07.15 11:15
(15) майский ЖЖЖмель,
Подтверждаю, теперь на 8.3.6 работает!
Спасибо
17. NetKat (NetKat) 22.07.15 16:14
Обработка шикарная! Спасибо. Есть вопрос-правильно ли я поняла, что при расчете использованных дней отпуска, год за который был предоставлен отпуск не учитывается. например был остаток за года 2013-2014, а при расчете использованные ставит 2015-2016
Прикрепленные файлы:
18. Андрей Белобородов (майский ЖЖЖмель) 22.07.15 17:03
(17) NetKat,

да, действительно, в типовом механизме учета остатков отпусков, при списании фактически используемых дней отпуска нет привязки к рабочему периоду, указанному в документе, а обработка использует именно типовой механизм получения остатков
19. Юрий Дорошенко (nord) 17.03.16 09:37
{ВнешняяОбработка.ОстаткиОтпусков.МодульОбъекта(697)}: Ошибка при вызове метода контекста (Добавить)
НоваяКолонка = Объект.Колонки.Добавить(ИмяКолонкиГруппы + "_" + ВложеннаяКолонка.Значение);
по причине:
Неверное имя колонки

Не скажите в чем может быть причина?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа