Имя: Пароль:
1C
1С v8
1с ЗуП гос учреждения пересечение больничного и отпуска (Табель)
0 illiona
 
naïve
19.05.23
09:37
Всем добрый день. может кто сталкивался с такой проблемой.
1)У сотрудника 28.04 оформлен отпуск с 10.05.23 по 10.05.23, с
01.05.2023 по 10.09.2023 сотрудник находился на больничном(по уходу за ребенком) расчет больничного был произведен с 01.05-09.05 ,10 день не оплачивается(в 1с это отражено) ,но закрыт больничный 10.05. Документ Отсутствие (болезнь, прогул, неявка) проведен тоже с 01.05 - 10.05.  
В личной карточке Т-2 отпуск не показывает и в табеле 10.05 ставится как Б,а должен О.
Помогите разобраться

Если документ Отсутствие (болезнь, прогул, неявка)  провести 01.05-09.05, в табеле правильная буква и в карточке О, если 01.05-10.05 то ставится Б. Как правильно должны оформляться документы?
1 El_Duke
 
гуру
19.05.23
09:47
(0) "в табеле 10.05 ставится как Б,а должен О. "

С чего вдруг ?
Приоритет отпуска ниже чем больничного
2 illiona
 
naïve
19.05.23
09:50
так кадры сказали, что должно ставится О, т.к. это больничный по уходу за ребенком, вообще никак не должен влиять на отпуск. Поэтому и вопрос как в таких ситуациях делать, чтоб отпуск по табелю был, а не больничный
3 SleepyHead
 
гуру
19.05.23
10:02
(2) Всему веришь, что кадры сказали?

"В письме от 17.06.2020 № 14-2/ООГ-8522 специалисты Минтруда России также обратили внимание работодателей на то, что отпуск сотрудника не продлевается на дни ухода за больным ребенком. В ведомстве сослались на положения ст. 124 ТК РФ, согласно которым отпуск может быть продлен либо перенесен на другой срок только в случае болезни самого работника."

Пересечение отпуска и больничного - это больничный, если сотрудник хочет получить по нему оплату. Не хочет - может отказаться, будет считаться в отпуске.
Хочет - отпуск продлевается на дни больничного, но пересечение периодов считается больничным.
4 SleepyHead
 
гуру
19.05.23
10:04
В общем неправильно я написал. Отпуском это не считается )
5 illiona
 
naïve
19.05.23
10:06
(3)  а можете скинуть где документально написано , что пересечение периодов считается больничным
6 Гена
 
гуру
19.05.23
10:16
(3) (4) С точностью до наоборот: пересечение отпуска и БЛ по уходу считается отпуском. Пруф:
Приказ Минздрава России от 23.11.2021 N 1089н
49. Не формируется листок нетрудоспособности по уходу:
...в период ежегодного оплачиваемого отпуска и отпуска без сохранения заработной платы;

В ЗУПе давно реализован механизм обратного вытеснения отпуском такого "больничного". Так что ищем косяк у автора ветки:
1. релиз?
2. скрин БЛ, чтобы глянуть как заполнили
7 illiona
 
naïve
19.05.23
10:33
Зарплата и кадры государственного учреждения, редакция 3.1 (3.1.23.656)
8 illiona
 
naïve
19.05.23
10:37
9 illiona
 
naïve
19.05.23
10:38
Отправила Больничный лист, Отсутствие болезни, Отпуск
10 SleepyHead
 
гуру
19.05.23
10:38
(6) Да, я напутал, спасибо.
11 Гена
 
гуру
19.05.23
10:55
(8) щёлкните по синенькой 10 мая - в строке, где написано "не продлевается"
12 illiona
 
naïve
19.05.23
11:00
13 Гена
 
гуру
19.05.23
11:08
попробуйте поставить крыжик "Регистрировать"
14 illiona
 
naïve
19.05.23
11:14
Пробовала в Табеле выводит букву Т, при редактировании ее на О, выдает ошибку не верный вид времени. В карточке Т-2 отпуск этот не отражается
15 Гена
 
гуру
19.05.23
11:26
(14) тогда распроведите кадровый док отсутствия, похоже он самый приоритетный.
16 illiona
 
naïve
19.05.23
11:33
да, его распроводишь или дату ставить с 01-09 тогда встает корректно всё
Но кадры говорят, что им не удобно отслеживать и менять даты
17 Гена
 
гуру
19.05.23
11:37
(16) Обойдутся. Кадровый док Отсутствие в приоритете для табеля, зарплатный док его не перебивает.
Объясните им, что БЛ как был, так и остался по 10-е. Просто раз отсутствие 10-го уже не болезнь, то надо обязательно переделать. Только его.
18 illiona
 
naïve
19.05.23
12:32
Даже если провести документ Отсутствие  числом 09.05 , табель проводится с буквой О, но в карточку Т-2 этот отпуск уже не попадает. В Регистре РегистрСведений.ДанныеОтпусковКарточкиСотрудника следовательно его тоже нет.
19 illiona
 
naïve
20.05.23
12:53
Может что посоветуете,как быть с карточкой т-2?
20 Гена
 
гуру
20.05.23
14:57
Не стоит работать на 23.
Проверил на 25.40 = всё нормально в Т-2 при условии, что НЕ стоит выше рассмотренный крыжик "Регистрировать".
21 illiona
 
naïve
21.05.23
08:22
А в 23 версии получается ошибки?
22 Гена
 
гуру
21.05.23
08:26
(21) 23 - это полный сумбур из заплаток и расширений. Вести там НДФЛ невозможно. И, как видите, и Т-2 не срабатывает.
23 illiona
 
naïve
21.05.23
09:13
Получается только дописывать или внешний отчёт какой -то делать? Другого выхода нет
24 Гена
 
гуру
21.05.23
09:30
Как угодно. ЛепИте очередной костыль. Скоро заплаток в 23 будет больше первоначального кода )
25 illiona
 
naïve
13.06.23
11:59
В этой функции удаляет один день пересеченного отпуска
Процедура ОбновитьДанныеОтпусковКарточкиСотрудника(Сотрудники) Экспорт
    
    Если Сотрудники.Количество() = 0 Тогда
        Возврат;
    КонецЕсли;
    
    СостоянияОтпуска = Новый Массив;
    СостоянияОтпуска.Добавить(Перечисления.СостоянияСотрудника.ОтпускОсновной);
    СостоянияОтпуска.Добавить(Перечисления.СостоянияСотрудника.ДополнительныйОтпуск);
    СостоянияОтпуска.Добавить(Перечисления.СостоянияСотрудника.ДополнительныйОтпускНеоплачиваемый);
    СостоянияОтпуска.Добавить(Перечисления.СостоянияСотрудника.ОтпускУчебныйОплачиваемый);
    СостоянияОтпуска.Добавить(Перечисления.СостоянияСотрудника.ОтпускУчебныйНеоплачиваемый);
    СостоянияОтпуска.Добавить(Перечисления.СостоянияСотрудника.ОтпускНаСанаторноКурортноеЛечение);
    
    ПредставлениеСостояний = Новый Соответствие;
    ПредставлениеСостояний.Вставить(Перечисления.СостоянияСотрудника.ОтпускПоБеременностиИРодам, НСтр("ru='Отпуск по беременности и родам'"));
    ПредставлениеСостояний.Вставить(Перечисления.СостоянияСотрудника.ОтпускПоУходуЗаРебенком, НСтр("ru='Отпуск по уходу за ребенком'"));
    
    Запрос = Новый Запрос;
    
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
    СоздатьВТДанныеОтпусковКарточкиСотрудника(Запрос.МенеджерВременныхТаблиц, Сотрудники);
    
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ДанныеОтпусковКарточкиСотрудника.Сотрудник КАК Сотрудник,
        |    ДанныеОтпусковКарточкиСотрудника.ПериодЗаписи КАК ПериодЗаписи,
        |    ДанныеОтпусковКарточкиСотрудника.ДатаНачала КАК ДатаНачала,
        |    ДанныеОтпусковКарточкиСотрудника.ДокументОснование КАК ДокументОснование,
        |    ДанныеОтпусковКарточкиСотрудника.ВидОтпуска КАК ВидОтпуска
        |ИЗ
        |    ВТТекущиеДанныеОтпусков КАК ДанныеОтпусковКарточкиСотрудника
        |        ЛЕВОЕ СОЕДИНЕНИЕ ВТПериодыОтпусков КАК ПериодыОтпусков
        |        ПО ДанныеОтпусковКарточкиСотрудника.Сотрудник = ПериодыОтпусков.Сотрудник
        |            И ДанныеОтпусковКарточкиСотрудника.ПериодЗаписи = ПериодыОтпусков.ПериодЗаписи
        |            И ДанныеОтпусковКарточкиСотрудника.ДатаНачала = ПериодыОтпусков.ДатаНачала
        |            И ДанныеОтпусковКарточкиСотрудника.ДатаОкончания = ПериодыОтпусков.ДатаОкончания
        |            И (ПериодыОтпусков.ДокументОснование = ДанныеОтпусковКарточкиСотрудника.ДокументОснование)
        |            И ДанныеОтпусковКарточкиСотрудника.Состояние = ПериодыОтпусков.Состояние
        |            И ДанныеОтпусковКарточкиСотрудника.ВидОтпуска = ПериодыОтпусков.ВидОтпуска
        |ГДЕ
        |    ПериодыОтпусков.Сотрудник ЕСТЬ NULL
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ДанныеОтпусков.Сотрудник КАК Сотрудник,
        |    ДанныеОтпусков.ПериодЗаписи КАК ПериодЗаписи,
        |    ДанныеОтпусков.ДатаНачала КАК ДатаНачала,
        |    ДанныеОтпусков.ДатаОкончания КАК ДатаОкончания,
        |    ДанныеОтпусков.ДокументОснование КАК ДокументОснование,
        |    ДанныеОтпусков.Состояние КАК Состояние,
        |    ДанныеОтпусков.ВидОтпуска КАК ВидОтпуска,
        |    ДанныеОтпусков.ВидОтпускаПредставление КАК ВидОтпускаПредставление,
        |    ДанныеОтпусков.КоличествоДней КАК КоличествоДней,
        |    ДанныеОтпусков.РабочийПериодС КАК РабочийПериодС,
        |    ДанныеОтпусков.РабочийПериодПо КАК РабочийПериодПо,
        |    ДанныеОтпусков.Компенсация КАК Компенсация,
        |    ДанныеОтпусков.Основание КАК Основание,
        |    ДанныеОтпусков.ИсходнаяДатаНачала КАК ИсходнаяДатаНачала,
        |    ДанныеОтпусков.ИсходнаяДатаОкончания КАК ИсходнаяДатаОкончания,
        |    ДанныеОтпусков.ИсходныйДокумент КАК ИсходныйДокумент,
        |    ДанныеОтпусков.ИсходныйДокументДата КАК ИсходныйДокументДата,
        |    ДанныеОтпусков.ИсходныйДокументНомер КАК ИсходныйДокументНомер,
        |    ДанныеОтпусков.ВидДоговора КАК ВидДоговора
        |ИЗ
        |    ВТДанныеОтпусковКарточкиСотрудника КАК ДанныеОтпусков";
    
    РезультатыЗапроса = Запрос.ВыполнитьПакет();
    
    // Удаление записей
    Выборка = РезультатыЗапроса[РезультатыЗапроса.Количество() - 2].Выбрать();
    Пока Выборка.Следующий() Цикл
        НаборЗаписей = РегистрыСведений.ДанныеОтпусковКарточкиСотрудника.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Сотрудник.Установить(Выборка.Сотрудник);
        НаборЗаписей.Отбор.ПериодЗаписи.Установить(Выборка.ПериодЗаписи);
        НаборЗаписей.Отбор.ДатаНачала.Установить(Выборка.ДатаНачала);
        НаборЗаписей.Отбор.ДокументОснование.Установить(Выборка.ДокументОснование);
        НаборЗаписей.Отбор.ВидОтпуска.Установить(Выборка.ВидОтпуска);
        НаборЗаписей.Записать();
    КонецЦикла;
    
    // Добавление записей
    Выборка = РезультатыЗапроса[РезультатыЗапроса.Количество() - 1].Выбрать();
    Пока Выборка.Следующий() Цикл
        НаборЗаписей = РегистрыСведений.ДанныеОтпусковКарточкиСотрудника.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Сотрудник.Установить(Выборка.Сотрудник);
        НаборЗаписей.Отбор.ПериодЗаписи.Установить(Выборка.ПериодЗаписи);
        НаборЗаписей.Отбор.ДатаНачала.Установить(Выборка.ДатаНачала);
        НаборЗаписей.Отбор.ДокументОснование.Установить(Выборка.ДокументОснование);
        НаборЗаписей.Отбор.ВидОтпуска.Установить(Выборка.ВидОтпуска);
        НоваяЗапись = НаборЗаписей.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяЗапись, Выборка);
        Если Выборка.ДатаНачала <> Выборка.ИсходнаяДатаНачала Или Выборка.ДатаОкончания <> Выборка.ИсходнаяДатаОкончания Тогда
            Если СостоянияОтпуска.Найти(Выборка.Состояние) = Неопределено Тогда
                НоваяЗапись.КоличествоДней = ЗарплатаКадрыКлиентСервер.ДнейВПериоде(Выборка.ДатаНачала, Выборка.ДатаОкончания);
            ИначеЕсли НоваяЗапись.ВидДоговора = Перечисления.ВидыДоговоровССотрудниками.КонтрактВоеннослужащего
                Или НоваяЗапись.ВидДоговора = Перечисления.ВидыДоговоровССотрудниками.ВоеннослужащийПоПризыву Тогда
                Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоДовольствия") Тогда
                    Модуль = ОбщегоНазначения.ОбщийМодуль("РасчетДенежногоДовольствия");
                    НоваяЗапись.КоличествоДней = Модуль.КалендарныхДнейОтпуска(Выборка.ДатаНачала,Выборка.ДатаОкончания);
                КонецЕсли;
            Иначе
                ОтпускВРабочихДняхПоДоговору = ОстаткиОтпусков.ОтпускСотрудникаВРабочихДняхПоДоговору(Выборка.Сотрудник, Выборка.ДатаНачала);
                ОписаниеВидаОтпуска = ОстаткиОтпусков.ОписаниеВидаОтпуска(Выборка.ВидОтпуска, ОтпускВРабочихДняхПоДоговору);
                НоваяЗапись.КоличествоДней = УчетРабочегоВремениРасширенный.ДлительностьИнтервала(Выборка.Сотрудник, Выборка.ДатаНачала, Выборка.ДатаОкончания, ОписаниеВидаОтпуска.СпособРасчетаПоКалендарнымДням, ОписаниеВидаОтпуска.ЕжегодныйОтпуск);
            КонецЕсли;
        КонецЕсли;
        Если Не ЗначениеЗаполнено(НоваяЗапись.ВидОтпускаПредставление) Тогда
            НоваяЗапись.ВидОтпускаПредставление = ПредставлениеСостояний[Выборка.Состояние];
        КонецЕсли;
        НоваяЗапись.Основание = КадровыйУчетРасширенный.ОснованиеДляРеестра(Выборка.ИсходныйДокументДата, Выборка.ИсходныйДокументНомер);
        Если ЗначениеЗаполнено(Выборка.Основание) Тогда
            НоваяЗапись.Основание = НоваяЗапись.Основание + " " + Выборка.Основание;
        КонецЕсли;
        НаборЗаписей.Записать();
    КонецЦикла;
    
КонецПроцедуры


https://disk.yandex.ru/i/ew9zzE0p9wAiHQ - здесь этот отпуск есть
https://disk.yandex.ru/i/uB3-8rG0H2h_DA - здесь он удалился
https://disk.yandex.ru/i/2WtBzU5gWxuyzQ - больничный лист
Получается как-то этот один день(период) надо выцеплять и отпуск по нему оставлять, чтоб из регистра не удалял
26 Гена
 
гуру
13.06.23
13:03
(25) Уточните, убрали ли с кадрового дока отсутствий Б с 10.05 ?
27 illiona
 
naïve
14.06.23
04:05
28 Гена
 
гуру
14.06.23
07:02
(27) Тогда повторюсь: у меня в демо 25 идеально отрабатывает данную ситуацию для Т-2
29 SleepyHead
 
гуру
14.06.23
07:09
(28)

- Доктор, у меня нога болит
- Вот, у меня точно такая же нога -  и она не болит!
30 illiona
 
naïve
14.06.23
09:00
А в регистре https://disk.yandex.ru/i/uB3-8rG0H2h_DA - удаляется у вас запись отпуска, если больничный накладывается?
31 Гена
 
гуру
14.06.23
09:12
(30) нет, всё нормально, отпуск. Но именно если изначально до того исправлен кадровый документ отсутствия по болезни.
32 illiona
 
naïve
14.06.23
09:53
а исправляете путей корректировки Отсутствия или распроводите и правите? можно картинки посмотреть как у вас, какие даты при наложении больничного на отпуск проставляются?
33 Гена
 
гуру
14.06.23
10:11
34 illiona
 
naïve
14.06.23
10:31
т.е. получается только ручная корректировка Отсутствия? наверное кадрам это не понравится(
35 illiona
 
naïve
14.06.23
10:50
(33) спасибо
36 Гена
 
гуру
14.06.23
10:53
(34) Объясните кадрам, что отсутствие надо маркировать в КАДРОВЫХ доках как пока невыясненные неявки НН, а дальше работать будут зарплатные документы, тот же БЛ, который придёт электронно из СФР.
37 Гена
 
гуру
14.06.23
10:54
(35) не за что... не стоит держаться за кривую 23.