Учет дополнительных отпусков по подразделениям (ЗУП 2.5)

Учет дополнительных отпусков по подразделениям (ЗУП 2.5)

В программе «1С:Зарплата и управление персоналом 8» ведётся учёт права сотрудников на отпуск и расчёт остатков отпусков. Наряду с основным отпуском отдельным категориям работников в соответствии с законодательством РФ предоставляются ежегодные дополнительные отпуска с сохранением среднего заработка.

 
Перечень видов ежегодных отпусков, предоставляемых сотрудникам организаций, описывается в справочнике «Виды ежегодных отпусков» (меню «Предприятие»  – «Виды ежегодных отпусков»). Пользователь может внести необходимые для учёта в организации виды отпусков (рис. 1).

Продолжительность ежегодного отпуска определённого вида в программе задаётся тремя способами:

  • в целом для всех сотрудников организации;
  • для сотрудников, занимающих определённую должность;
  • для отдельных сотрудников.

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

 

Решение проблемы

Идем в конфигуратор и из справочника должности организации копируем табличную часть "" в справочник подразделения организации.

Выводим ее на форму элемента.

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

Далее находим в конфигураторе в модуле "ОстаткиОтпусков" процедуру "ИсходныеДанныеДляРасчетаОстатков" и исправляем там запрос на следующий.  

 

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

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

 

Пример результата отчета.

5 Comments

  1. alexandr851c

    отчетик

    Reply
  2. TrinitronOTV

    предложенный отчетик будет работать без изменения типовой конфигурации?

    Reply
  3. alexandr851c

    (2) TrinitronOTV, Необходимо будет добавить таб часть Ежегодные отпуска в подразделения организации. На обновления это ни как не повлияет

    Reply
  4. buy_sale

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

    Reply
  5. alexandr851c

    (4) рад что пригодилось

    Reply

Leave a Comment

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