Исправление расчета остатков отпусков в рабочих днях в ЗУП 2.5.54.1

Если на вашем предприятии ведется учет отпусков не только в календарных днях, но и в рабочих, то Вам сюда

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

Для временного решения пришлось покопаться в общем модуле ОстаткиОтпусков и внести кое какие изменения, а проще говоря закомментировать.

Ищем Функция ОстаткиОтпусков(ТаблицаДанных) в общем модуле ОстаткиОтпусков, в этой функции есть запрос

со строки 871 комментируем так :

    |ПОМЕСТИТЬ ВТВидыЕжегодныхОтпусков
    |ИЗ
    |    ВТТаблицаСотрудников КАК ТаблицаСотрудников
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыЕжегодныхОтпусков КАК ВидыЕжегодныхОтпусков
    |        ПО (НЕ ВидыЕжегодныхОтпусков.ПометкаУдаления)
    //|            И (ВЫБОР
    //|                КОГДА ТаблицаСотрудников.ВидОсновногоОтпуска = ЗНАЧЕНИЕ(Справочник.ВидыЕжегодныхОтпусков.ПустаяСсылка)
    //|                        И ТаблицаСотрудников.ВидДополнительногоОтпуска = ЗНАЧЕНИЕ(Справочник.ВидыЕжегодныхОтпусков.ПустаяСсылка)
    //|                    ТОГДА ВЫБОР
    //|                            КОГДА ТаблицаСотрудников.ВидЕжегодногоОтпуска = ЗНАЧЕНИЕ(Справочник.ВидыЕжегодныхОтпусков.ПустаяСсылка)
    //|                                ТОГДА ТаблицаСотрудников.СпособРасчетаОтпусков = ВидыЕжегодныхОтпусков.СпособРасчетаОстаткаОтпуска
    //|                            ИНАЧЕ ТаблицаСотрудников.ВидЕжегодногоОтпуска = ВидыЕжегодныхОтпусков.Ссылка
    //|                        КОНЕЦ
    //|                ИНАЧЕ ТаблицаСотрудников.ВидОсновногоОтпуска = ВидыЕжегодныхОтпусков.Ссылка
    //|                            И НЕ ТаблицаСотрудников.ИсключитьОсновнойОтпуск
    //|                        ИЛИ ТаблицаСотрудников.ВидДополнительногоОтпуска = ВидыЕжегодныхОтпусков.Ссылка
    //|            КОНЕЦ)
    |        ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК НачисленияОсновногоОтпуска
    |        ПО (ВЫБОР
    |                КОГДА ТаблицаСотрудников.ПорядокРасчетаОсновногоОтпуска = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетаОтпуска.ПоШестидневке)
    |                    ТОГДА НачисленияОсновногоОтпуска.Ссылка = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднемуОтпШестидневка)
    |                ИНАЧЕ НачисленияОсновногоОтпуска.Ссылка = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднемуОтпКалендарныеДни)
    |            КОНЕЦ)

 

а также со строки 953 комментируем так :

 

    |            ПО ОстаткиОтпусков.Ссылка.Сотрудник = ОстаткиОтпусковСрез.Сотрудник
    |                И ОстаткиОтпусков.ВидЕжегодногоОтпуска = ОстаткиОтпусковСрез.ВидЕжегодногоОтпуска
    |                И ОстаткиОтпусков.Ссылка = ОстаткиОтпусковСрез.Ссылка
    |        ПО ТаблицаСотрудников.Сотрудник = ОстаткиОтпусков.Ссылка.Сотрудник
    //|            И (ВЫБОР
    //|                КОГДА ТаблицаСотрудников.ВидОсновногоОтпуска = ЗНАЧЕНИЕ(Справочник.ВидыЕжегодныхОтпусков.ПустаяСсылка)
    //|                        И ТаблицаСотрудников.ВидДополнительногоОтпуска = ЗНАЧЕНИЕ(Справочник.ВидыЕжегодныхОтпусков.ПустаяСсылка)
    //|                    ТОГДА ВЫБОР
    //|                            КОГДА ТаблицаСотрудников.ВидЕжегодногоОтпуска = ЗНАЧЕНИЕ(Справочник.ВидыЕжегодныхОтпусков.ПустаяСсылка)
    //|                                ТОГДА ТаблицаСотрудников.СпособРасчетаОтпусков = ОстаткиОтпусков.ВидЕжегодногоОтпуска.СпособРасчетаОстаткаОтпуска
    //|                            ИНАЧЕ ТаблицаСотрудников.ВидЕжегодногоОтпуска = ОстаткиОтпусков.ВидЕжегодногоОтпуска.Ссылка
    //|                        КОНЕЦ
    //|                ИНАЧЕ ТаблицаСотрудников.ВидОсновногоОтпуска = ОстаткиОтпусков.ВидЕжегодногоОтпуска
    //|                            И НЕ ТаблицаСотрудников.ИсключитьОсновнойОтпуск
    //|                        ИЛИ ТаблицаСотрудников.ВидДополнительногоОтпуска = ОстаткиОтпусков.ВидЕжегодногоОтпуска
    //|            КОНЕЦ)
    |
    |УПОРЯДОЧИТЬ ПО
    |    Сотрудник,

 

После этих действий сохраняем конфигурацию и проверяем остатки отпусков в рабочих днях.

Надеюсь в будущих релизах 1С исправит эту ошибку, а пока жду ваших предложений по решению данного вопроса, может кто лучше сделает?

Важно: В Справочнике Виды ежегодных отпусков должен быть только 1 вид отпуска с флажком Предоставлять отпуск всем сотрудникам

7 Comments

  1. NPMar

    Спасибо большое!

    Reply
  2. Cristal725

    Спасибо большое,что обратили внимание на эту ситуацию. Очень мало информации в интеренте по этому поводу.

    Reply
  3. Cristal725

    И еще чем грозит то, что решение временное. Ну кроме того, что при обновлениях конфу придется постоянно подправлять.

    Reply
  4. Alex Star

    (2) Cristal725, Обратишь тут, когда на всём заводе остатки отпусков поменялись, а уж расчет резерва отпусков что показывал… Самое интересное 1Сники сами на это не отреагировали, прошло обновление, а всё так-же глючно осталось, пришлось опять комментить…

    Reply
  5. Cristal725

    А у нас беда: в Справочнике Виды ежегодных отпусков 2 вида отпуска с флажком Предоставлять отпуск всем сотрудникам. Как допилить?

    Reply
  6. Alex Star

    (5) Cristal725, Я просто убрал один флажок, этот вид добавился с каким то обновлением, и у нас нет на предприятии этого вида отпуска. А что касается допила, то по этому это решение и является временным, потому что разбираться времени нет, как только 1С исправит косяки так сразу эту галочку можно и поставить, только это в корне не правильно, т.к. у нас только основной отпуск всем дается. Жаль что больше никто не предложил решения, а так хотелось посмотреть 🙁

    Reply
  7. Эсти

    спасибо. полезная статья

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *