Запрос по фактическим отпускам в ЗУП при 2-х и более корректировках отпуска исчезает в отчете
Разбираюсь с фактическими отпусками. У сотрудника они не формируются, т.е. отсутствуют в отчете "Фактические отпуска".
Там есть такой запрос, он при инициализации отчета собирается, и выглядит так:
Смысл таков запроса, как я понимаю, чтобы удалить сторно записи отпусков и взять правильные.
ВТФактическиеОтпускаСоСторноПризнаками определяются сторнируемая это запись или она сама сторнирует другую
И в результатирующей таблице
Они отсекаются.
Все хорошо, пока на отпуск есть один документ исправление. А их у некоторых, по 2 штуки.
Получилось так, что сперва исправили, и человек отгулял, потом в следующем году дали годовую премию, и все отпуска пересчитали, т.к. это требует законодательство. Средний заработок изменяется у человека, и надо пересчитывать.
И вот при появлении 2 и более документа исправления, сторно записи по такому запросу, получаются все сторно!
И в результате отчет "Фактические отпуска" выходит пустым!
Кто с таким сталкивался? Как решали?
Там есть такой запрос, он при инициализации отчета собирается, и выглядит так:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ФактическиеОтпускаСотрудниковОтбор.Сотрудник КАК Сотрудник,
| ФактическиеОтпускаСотрудниковОтбор.НачалоПериода КАК НачалоПериода,
| ФактическиеОтпускаСотрудниковОтбор.ОкончаниеПериода КАК ОкончаниеПериода
|ПОМЕСТИТЬ ВТОтборСУчетомОстатков
|ИЗ
| ВТФактическиеОтпускаОтбор КАК ФактическиеОтпускаСотрудниковОтбор
|
|ИНДЕКСИРОВАТЬ ПО
| Сотрудник
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ФактическиеОтпуска.Сотрудник КАК Сотрудник,
| ФактическиеОтпуска.ВидЕжегодногоОтпуска КАК ВидЕжегодногоОтпуска,
| ФактическиеОтпуска.ДатаНачала КАК ДатаНачала,
| ФактическиеОтпуска.ДатаОкончания КАК ДатаОкончания,
| ФактическиеОтпуска.Количество КАК Количество,
| ФактическиеОтпуска.Компенсация КАК Компенсация,
| ВЫБОР
| КОГДА ФактическиеОтпуска.ВидЕжегодногоОтпуска.СпособРасчетаОтпуска = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОтпуска.ВРабочихДнях)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ВРабочихДнях,
| ФактическиеОтпуска.РабочийПериодС КАК РабочийПериодС,
| ФактическиеОтпуска.РабочийПериодПо КАК РабочийПериодПо,
| ФактическиеОтпуска.Основание КАК Основание,
| ФактическиеОтпуска.Регистратор КАК Регистратор
|ПОМЕСТИТЬ ВТФактическиеОтпуска
|ИЗ
| РегистрНакопления.ФактическиеОтпуска КАК ФактическиеОтпуска
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТОтборСУчетомОстатков КАК ФактическиеОтпускаОтбор
| ПО ФактическиеОтпуска.Сотрудник = ФактическиеОтпускаОтбор.Сотрудник
| И ФактическиеОтпуска.ДатаОкончания >= ФактическиеОтпускаОтбор.НачалоПериода
| И (ФактическиеОтпуска.ДатаНачала <= ФактическиеОтпускаОтбор.ОкончаниеПериода
| ИЛИ ФактическиеОтпускаОтбор.ОкончаниеПериода = ДАТАВРЕМЯ(1, 1, 1))
|
|ИНДЕКСИРОВАТЬ ПО
| Сотрудник
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ФактическиеОтпуска.Сотрудник КАК Сотрудник,
| ФактическиеОтпуска.ВидЕжегодногоОтпуска КАК ВидЕжегодногоОтпуска,
| ФактическиеОтпуска.ДатаНачала КАК ДатаНачала,
| ФактическиеОтпуска.ДатаОкончания КАК ДатаОкончания,
| ФактическиеОтпуска.Количество КАК Количество,
| ФактическиеОтпуска.Компенсация КАК Компенсация,
| ФактическиеОтпуска.ВРабочихДнях КАК ВРабочихДнях,
| ФактическиеОтпуска.РабочийПериодС КАК РабочийПериодС,
| ФактическиеОтпуска.РабочийПериодПо КАК РабочийПериодПо,
| ФактическиеОтпуска.Основание КАК Основание,
| ФактическиеОтпуска.Регистратор КАК Регистратор,
| ВЫБОР
| КОГДА НЕ ФактическиеОтпускаСторно.Сотрудник ЕСТЬ NULL
| И ФактическиеОтпуска.Количество > 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СторнируемаяЗапись,
| ВЫБОР
| КОГДА НЕ ФактическиеОтпускаСторно.Сотрудник ЕСТЬ NULL
| И ФактическиеОтпуска.Количество < 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СторноЗапись
|ПОМЕСТИТЬ ВТФактическиеОтпускаСоСторноПризнаками
|ИЗ
| ВТФактическиеОтпуска КАК ФактическиеОтпуска
| ЛЕВОЕ СОЕДИНЕНИЕ ВТФактическиеОтпуска КАК ФактическиеОтпускаСторно
| ПО ФактическиеОтпуска.Сотрудник = ФактическиеОтпускаСторно.Сотрудник
| И ФактическиеОтпуска.ВидЕжегодногоОтпуска = ФактическиеОтпускаСторно.ВидЕжегодногоОтпуска
| И ФактическиеОтпуска.ДатаНачала = ФактическиеОтпускаСторно.ДатаНачала
| И ФактическиеОтпуска.ДатаОкончания = ФактическиеОтпускаСторно.ДатаОкончания
| И (ФактическиеОтпуска.Количество = -ФактическиеОтпускаСторно.Количество)
| И ФактическиеОтпуска.Регистратор <> ФактическиеОтпускаСторно.Регистратор
|
|ИНДЕКСИРОВАТЬ ПО
| Сотрудник
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ФактическиеОтпуска.Сотрудник КАК Сотрудник,
| ФактическиеОтпуска.ВидЕжегодногоОтпуска КАК ВидЕжегодногоОтпуска,
| ФактическиеОтпуска.ДатаНачала КАК ДатаНачала,
| ФактическиеОтпуска.ДатаОкончания КАК ДатаОкончания,
| ФактическиеОтпуска.Количество КАК КоличествоДней,
| ФактическиеОтпуска.Компенсация КАК ЭтоКомпенсация,
| ФактическиеОтпуска.Регистратор КАК Регистратор,
| ФактическиеОтпуска.ВРабочихДнях КАК ВРабочихДнях,
| ФактическиеОтпуска.РабочийПериодС КАК РабочийПериодС,
| ФактическиеОтпуска.РабочийПериодПо КАК РабочийПериодПо,
| ФактическиеОтпуска.Основание КАК Основание
|ПОМЕСТИТЬ ВТФактическиеОтпускаСотрудников
|{ВЫБРАТЬ
| Сотрудник.*,
| ВидЕжегодногоОтпуска.*,
| ДатаНачала,
| ДатаОкончания,
| КоличествоДней,
| ЭтоКомпенсация,
| Регистратор,
| ВРабочихДнях,
| РабочийПериодС,
| РабочийПериодПо,
| Основание}
|ИЗ
| ВТФактическиеОтпускаСоСторноПризнаками КАК ФактическиеОтпуска
|ГДЕ
| НЕ ФактическиеОтпуска.СторнируемаяЗапись
| И НЕ ФактическиеОтпуска.СторноЗапись
|{ГДЕ
| ФактическиеОтпуска.Сотрудник.*,
| ФактическиеОтпуска.ВидЕжегодногоОтпуска.*,
| ФактическиеОтпуска.ДатаОкончания,
| ФактическиеОтпуска.Количество,
| ФактическиеОтпуска.Компенсация,
| ФактическиеОтпуска.Регистратор,
| ФактическиеОтпуска.РабочийПериодС,
| ФактическиеОтпуска.РабочийПериодПо,
| ФактическиеОтпуска.Основание}
|
|ИНДЕКСИРОВАТЬ ПО
| Сотрудник";
ПоказатьСмысл таков запроса, как я понимаю, чтобы удалить сторно записи отпусков и взять правильные.
ВТФактическиеОтпускаСоСторноПризнаками определяются сторнируемая это запись или она сама сторнирует другую
И в результатирующей таблице
|ГДЕ
| НЕ ФактическиеОтпуска.СторнируемаяЗапись
| И НЕ ФактическиеОтпуска.СторноЗапись
Они отсекаются.
Все хорошо, пока на отпуск есть один документ исправление. А их у некоторых, по 2 штуки.
Получилось так, что сперва исправили, и человек отгулял, потом в следующем году дали годовую премию, и все отпуска пересчитали, т.к. это требует законодательство. Средний заработок изменяется у человека, и надо пересчитывать.
И вот при появлении 2 и более документа исправления, сторно записи по такому запросу, получаются все сторно!
И в результате отчет "Фактические отпуска" выходит пустым!
Кто с таким сталкивался? Как решали?
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот