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

Обработки - Рабочее место

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

 Версия 1.2 от 07.07.2015

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

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

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


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

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

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


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

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

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

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

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

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

См. также

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

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


корректировки заносятся в информационную базу документом "Корректировка записей регистров накопления" по регистру "Фактические отпуска организаций".
TrinitronOTV; +1 Ответить
3. Max But (unsimple) 25 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. Андрей Белобородов (майский ЖЖЖмель) 70 08.10.14 08:34 Сейчас в теме
Доработал ;), теперь можно использовать в УПП и КА
forrain@rambler.ru; +1 Ответить
6. VeRkA 08.10.14 10:12 Сейчас в теме
Доброго дня!
Я правильно поняла, "северный" - это дополнительный? или дополнительный нужно вносить ручками? Есть такая возможность?
Отчет очень развернутый, класс!
7. Андрей Белобородов (майский ЖЖЖмель) 70 08.10.14 10:30 Сейчас в теме
(6) VeRkA,

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


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

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


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

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

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

Не скажите в чем может быть причина?
Оставьте свое сообщение