gifts2017

Расчет дней компенсации за неиспользованный отпуск в приказе об увольнении (ЗиК)

Опубликовал Antia Antia (Antia) в раздел Обработки - Обработка документов

Процедура для автоматического заполнения поля "дни компенсации" в документе "Приказ об увольнении" типовой конфигурации "Зарплата и Кадры. Редакция 2.3" (проверено в релизе 283) .

В новой версии:
- учитываются исправления, сторнирования и пересечения документов-отклонений;
- учитываются все периоды, исключаемые из стажа для подсчета отпуска по статье 121 ТК (прогулы, отпуска по уходу за ребенком, отпуска за свой счет).
Инструкция:
1. Вставить текст процедуры СчитатьДниКомпенсации() в модуль формы документа ПриказОбУвольнении.
2. Вставить вызов процедуры СчитатьДниКомпенсации() в:
- текст процедуры ВводНового() модуля формы;
- реквизит диалога Сотрудник;
- реквизит диалога ДатаУвольнения.

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

Наименование Файл Версия Размер
- 424
.1199459903 7,19Kb
25.09.09
424
.1199459903 7,19Kb Бесплатно

См. также

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

Комментарии

1. Vladimir (Boroda) 01.02.08 18:43
Обработка очень понравилась, но... к сожалению, неправильно расчитывает дни компенсации, если у сотрудников большая задолженность по отпускам ( не ходили в отпуск более года - 2,3). У меня на одном предприятии такая картина сложилась, и когда применил эту обработку, то количество дней не совпало с реальным, рассчитанным вручную (показала меньше дгней, чем надо).
2. Antia Antia (Antia) 01.02.08 20:26
Хотелось бы конкретный пример, чтобы ошибку можно было найти и обезвредить: дата приема сотрудника, какие отклонения были.

А пока можно на демо-базе проверить.
Например, Антонов принят на работу 01.01.06. Делаем приказ об увольнении 01.02.08. Получаем 58.33, что правильно, т.к. он не был в отпуске 2 года и 1 месяц.
3. irisha (irisha) 04.02.08 04:01
Не могу скачать обработку!!!!
4. Antia Antia (Antia) 04.02.08 07:09
5. irisha (irisha) 11.02.08 04:09
Может у меня не все настроено?! Жму на обработу - появляется слово Скачать. и все. Дальше никуда не идет...
6. Antia Antia (Antia) 11.02.08 18:12
7. Александр (medik1976) 22.03.08 16:56
я что то не понял а где обработка ?????
medik1976@mail.ru
8. buh (buh) 07.05.08 01:11
А рассчитывает все же не верно. Вот пример: Сотрудник увольняется 08.05.08. Начислить компенсацию нужно за период с 06.06.07 по 08.05.08, т.е. 28 дней. Ваша обработка считает почему-то 56, т.е. в два раза больше.
9. Antia Antia (Antia) 10.05.08 12:41
Открыл демо-базу ЗиК. Сделал приказ о приеме на работу Лукина Ю.Н. с 06.06.07. Делаю приказ об увольнении с 08.05.08. Обработка выдает 28 дней, т.е. правильно.
10. buh (buh) 11.05.08 03:09
Сейчас скачал свежую обработку. Опять считает неверно, т.е. 56 дней!!!
Послушайте, я же не придумываю это. Говорю что есть. Значит в некоторых ситуациях обработка отрабатывает некорректно.
И еще. Вы бы попробовали ситуацию другую. Т.е. приказ о приеме, не 06.06.07, а раньше, потом отпуск, а вот потом уже увольнение. Может здесь что-то некорректно отрабатывает?
11. buh (buh) 11.05.08 03:15
Вот более подробно:
Сотрудник принят на работу 06.06.05.
Отпуск за период 06.06.05 - 05.06.06 отгулял с 01.08.06 по 28.08.06
Отпуск за период 06.06.06 - 05.06.07 отгулял с 24.12.07 по 26.01.08
08.05.08 - увольняется.
Вот здесь обработка и считает 56 дней вместо 28.
12. buh (buh) 11.05.08 03:35
Посмотрел по коду и отладчику. Количество отработанных месяцев начинает считаться с даты приема, что неверно, т.к. человек гулял свои отпуска.
Поэтому когда Вы делаете приказ о приеме 06.06.07 у Вас все корректно отрабатывает. А вот шаг в сторону и .... ошибка. Желательно исправить. Полезная вещь
13. Antia Antia (Antia) 11.05.08 17:30
Опять взял демо-базу. Принял Лукина на работу 06.06.05. Сделал НачислениеОтпуска с 01.08.06 по 28.08.06. Сделал НачислениеОтпуска с 24.12.07 по 26.01.08. Увольняю 08.05.08 - получаю 28 дней компенсации.

Да, подсчет начинается с даты приема. Но ранее использованные отпуска потом учитываются в строках:
// Вычитаем использованные ранее дни отпуска
ДнейКомпенсацииОтпуска = Месяцев*28/12 - ДнейОтпуска7 - ДнейОтпуска6*28/24;
14. buh (buh) 12.05.08 04:51
Ну вот что в отладчике дает эта формула, для того случая, который я описал Выше:
ДнейКомпенсацииОтпуска = 36*28/12 - 28 - 0 = 56.
Давайте все же разберемся, в чем может быть дело...
15. buh (buh) 12.05.08 08:01
А может быть дело в том, что на самый первый отпуск документа Начисление отпуска нет, т.к. база новая и есть только приказ на отпуск? Поэтому и не учитывается этот отпуск как отгулянный? Если так, то, на мой взгляд, целесообразно добавить выборку и по приказам на отпуск, а не только по начислению отпуска
16. Antia Antia (Antia) 12.05.08 08:20
Да, ПриказПоОтпуску никак не учитывается. Потому что он в начислениях не участвует и в некоторых организациях им совсем не пользуются.
17. Antia Antia (Antia) 12.05.08 12:34
Итак, проблема не в моем алгоритме.
Проблема в том, что в Вашей базе учет ведется не за весь период. И надо как-то сообщить ЗиК об отпусках до начала ведения учета в программе.
Вы для этого решили ввести приказы на отпуск. Другим такие приказы вводить будет лень и они, например, введут в справочнике сотрудников число дней отпуска до начала учета в программе. Или что-то еще. Сомнительно, что можно сделать универсальную обработку для всех этих случаев. Проще взять мою обработку за основу и настроить на нюансы конкретного предприятия.
Благодарю Вас за плодотворное обсуждение.
18. buh (buh) 12.05.08 16:10
На самом деле проблема все же в алгоритме, т.к. даже у 1С в их документах универсальность все же некая прослеживается. По крайней мере 1С делает выборку по всем возможным документам, а не по какому-то одному конкретному. Да и если Вы добавите выборку по всем возможным документам отпуска, то ценность и универсальность Вашего алгоритма только повысится. Конечно, на всех не угодишь, но подавляющее большинство организаций все же когда нибудь начинают новую базу, оставляя приказы. Приказы заводить все равно нужно, т.к. иначе не будет правильно формироваться Т2. Ну да дело ваше, просто, повторюсь, добавив и эту выборку ваш алгоритм только выиграл бы...
19. Gsokolov (GSokolov) 14.05.08 09:16
Идея отличная! Замечания на будущее:
1) Не учитывается, что при наличии инвалидности продолжительность отпуска 30 дней, а не 28.
2) Отбор записей по ЖР проблематичен из-за того, что ЖР зачастую не отражает весь период работы сотрудника и, бывает, его "чистят" для уменьшения размера базы. Перспективней использовать для поиска отпусков документы, по аналогии с алгоритмом формы Т-2 ЗиК, тогда для корректной работы за периоды, когда расчет в ЗиК не велся, достаточно ввести задним числом приказы на отпуск, отражающие условия сотрудников, принятых до начала работы в ЗиК.
3) после расчета не мешает перерисовать видимость измененных реквизитов в форме.
20. isn Игнатьев (isn) 16.05.08 13:43
еще одна проблема- если отпуск начислялся документом ВводЛюбогоРасчета - вываливается с ошибкой на "поле агрегатного объекта не обнаружено" т.к. видрасчета в этом документе нет.
21. Antia Antia (Antia) 17.05.08 09:43
2 isn
Документа ВводЛюбогоРасчета в типовой ЗиК нет. Если вы ЗиК переделываете, то и обработку исправляйте.
Serg-48; Abadonna; +2 Ответить
22. Antia Antia (Antia) 17.05.08 10:04
2 Gsokolov
1) Спасибо за подсказку. Отпуск 30 дней не только у инвалидов, но и у пожилых людей. Отпуск 31 день у работников до 18 лет. Пока не совсем понимаю, как учесть наступление инвалидности в периоде подсчета стажа. Подумаю.
2) В первой версии обработки подсчет шел по документам. Во второй я от документов отказался из-за трудоемкости учета исправлений. Подумаю еще, поглядывая в сторону Т-2. Но быстро не получится - пока нет ни времени, ни клиента, которому это нужно...
3) Зачем?
23. Antia Antia (Antia) 18.08.08 19:54
Учтены изменения по отпускам за свой счет, внесенные в ТК 22.07.08.
24. Solo (Solo1) 12.11.09 09:28
Установила обработку. При попытке создать приказ об увольнении вылетает ошибка - не найден модуль обработки Считать дни компенсации (606). Что не так сделала, если у всех работает?
25. Svetlana E (Svetlana_E) 24.11.09 20:10
Плюс поставила, но! так и не учтено, что длина отпуска м.б. не 28 дней. :(
26. Antia Antia (Antia) 26.11.09 17:16
(24) Наверное, пункт 1 инструкции не выполнили - текст процедуры СчитатьДниКомпенсации() в модуль формы документа не вставили. Процедура должна быть где-нибудь в начале модуля, раньше, чем она вызывается.
27. Lushka712 (lushka712) 27.01.10 14:17
Не могу установить обработку выдает ошибку
СчитатьДниКомпенсации<<?>>();
{Документ.ПриказОбУвольнении.Форма.Модуль(618)}: Процедура не обнаружена (СчитатьДниКомпенсации)
Подскажите,как ее устранить
28. Дмитрий Аншаков (pencil) 20.11.10 15:58
Большое спасибо, очень пригодилось.
29. Марина (hate86) 25.09.11 09:30
Svetlana_E пишет:
так и не учтено, что длина отпуска м.б. не 28 дней.

В принципе, на сколько я понимаю, можно добавить на форму поле, в которое "ручками" вводится кол-во дней отпуска, если оно отличное от 28, передается в переменную N, и в формуле
Antia пишет:
ДнейКомпенсацииОтпуска = Месяцев*28/12 - ДнейОтпуска7 - ДнейОтпуска6*28/24;

"28" заменяется на эту переменную.
Если не права, подправьте;-) На досуге попробую провернуть сей финт)
30. Светлана Фоменко (safia-med) 03.09.14 12:12
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа