Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 12:25

В док. Отпуск сотрудников считает рабочие и не рабочие дни.

Автор Stanislav Gareev, 01 окт 2019, 15:51

0 Пользователей и 1 гость просматривают эту тему.

Stanislav Gareev

Здравствуйте. Такой момент при вводе полей начало - окончание отпуска, в графе количество дней считаются рабочие и не рабочие дни. Собственно нужно чтобы считались только рабочие дни. Проблема в том, что в запросе я вообще не вижу этого (пока молодой в этом деле). Если кто знает, прошу помочь. Я приложу скриншоты, если что то нужно дополнительно, пришлю.
https://yadi.sk/i/TTAPvTFejEF5Nw
ОтпускаСотрудниковСотрудники.Сотрудник КАК Сотрудник,
ОтпускаСотрудниковСотрудники.ВидОтпуска КАК ВидОтпуска,
ОтпускаСотрудниковСотрудники.НомерСтроки КАК НомерСтроки,
ОтпускаСотрудниковСотрудники.ДатаНачала КАК ДатаНачала,
ОтпускаСотрудниковСотрудники.ДатаОкончания КАК ДатаОкончания,
ОтпускаСотрудниковСотрудники.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск КАК НачалоПериодаЗаКоторыйПредоставляетсяОтпуск,
ОтпускаСотрудниковСотрудники.КонецПериодаЗаКоторыйПредоставляетсяОтпуск КАК КонецПериодаЗаКоторыйПредоставляетсяОтпуск
ПОМЕСТИТЬ ВТОтпускаСотрудников
ИЗ
&ОтпускаСотрудников КАК ОтпускаСотрудниковСотрудники
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОтпускаСотрудников.Сотрудник КАК Сотрудник,
ОтпускаСотрудников.НомерСтроки КАК НомерСтроки
ПОМЕСТИТЬ ВТСтрокиСНекорректноЗаполненнымПериодомПредоставленияОтпуска
ИЗ
ВТОтпускаСотрудников КАК ОтпускаСотрудников
ГДЕ
ВЫРАЗИТЬ(ОтпускаСотрудников.ВидОтпуска КАК Справочник.ВидыОтпусков).ОтпускЯвляетсяЕжегодным
И (ОтпускаСотрудников.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ ОтпускаСотрудников.КонецПериодаЗаКоторыйПредоставляетсяОтпуск = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ ОтпускаСотрудников.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск >= ОтпускаСотрудников.КонецПериодаЗаКоторыйПредоставляетсяОтпуск)
И ОтпускаСотрудников.ДатаНачала <= ОтпускаСотрудников.ДатаОкончания

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ОтпускаСотрудников.Сотрудник,
ОтпускаСотрудников.НомерСтроки
ИЗ
ВТОтпускаСотрудников КАК ОтпускаСотрудников
ГДЕ
ОтпускаСотрудников.ДатаНачала > ОтпускаСотрудников.ДатаОкончания
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОтпускаСотрудников.Сотрудник КАК Сотрудник,
МАКСИМУМ(ОтпускаСотрудниковДругие.НомерСтроки) КАК НомерСтроки
ПОМЕСТИТЬ ВТПересекаютсяПериодыОтпусков
ИЗ
ВТОтпускаСотрудников КАК ОтпускаСотрудников
ЛЕВОЕ СОЕДИНЕНИЕ ВТОтпускаСотрудников КАК ОтпускаСотрудниковДругие
ПО ОтпускаСотрудников.Сотрудник = ОтпускаСотрудниковДругие.Сотрудник
И ОтпускаСотрудников.ВидОтпуска <> ОтпускаСотрудниковДругие.ВидОтпуска
И ОтпускаСотрудников.ДатаОкончания >= ОтпускаСотрудниковДругие.ДатаНачала
И ОтпускаСотрудников.ДатаОкончания <= ОтпускаСотрудниковДругие.ДатаОкончания
И (ОтпускаСотрудников.ДатаНачала <> ДАТАВРЕМЯ(1, 1, 1))
И (ОтпускаСотрудников.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1))

СГРУППИРОВАТЬ ПО
ОтпускаСотрудников.Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПересекаютсяПериодыОтпусков.Сотрудник КАК Сотрудник,
ПересекаютсяПериодыОтпусков.НомерСтроки КАК НомерСтроки,
ОтпускаСотрудников.ВидОтпуска КАК ВидОтпуска,
ИСТИНА КАК ПересекаютсяПериоды,
ЛОЖЬ КАК НекорректныйПериодПредоставления
ПОМЕСТИТЬ ВТСводный
ИЗ
ВТПересекаютсяПериодыОтпусков КАК ПересекаютсяПериодыОтпусков
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТОтпускаСотрудников КАК ОтпускаСотрудников
ПО ПересекаютсяПериодыОтпусков.НомерСтроки = ОтпускаСотрудников.НомерСтроки

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
СтрокиСНекорректноЗаполненнымПериодомПредоставленияОтпуска.Сотрудник,
СтрокиСНекорректноЗаполненнымПериодомПредоставленияОтпуска.НомерСтроки,
ОтпускаСотрудников.ВидОтпуска,
ЛОЖЬ,
ИСТИНА
ИЗ
ВТСтрокиСНекорректноЗаполненнымПериодомПредоставленияОтпуска КАК СтрокиСНекорректноЗаполненнымПериодомПредоставленияОтпуска
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТОтпускаСотрудников КАК ОтпускаСотрудников
ПО СтрокиСНекорректноЗаполненнымПериодомПредоставленияОтпуска.НомерСтроки = ОтпускаСотрудников.НомерСтроки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Сводный.Сотрудник КАК Сотрудник,
Сводный.НомерСтроки КАК НомерСтроки,
Сводный.ВидОтпуска КАК ВидОтпуска,
МАКСИМУМ(Сводный.ПересекаютсяПериоды) КАК ПересекаютсяПериоды,
МАКСИМУМ(Сводный.НекорректныйПериодПредоставления) КАК НекорректныйПериодПредоставления
ИЗ
ВТСводный КАК Сводный

СГРУППИРОВАТЬ ПО
Сводный.Сотрудник,
Сводный.НомерСтроки,
Сводный.ВидОтпуска

УПОРЯДОЧИТЬ ПО
НомерСтроки

alexandr_ll

Цитата: Stanislav Gareev от 01 окт 2019, 15:51
Здравствуйте. Такой момент при вводе полей начало - окончание отпуска, в графе количество дней считаются рабочие и не рабочие дни. Собственно нужно чтобы считались только рабочие дни. Проблема в том, что в запросе я вообще не вижу этого (пока молодой в этом деле). Если кто знает, прошу помочь. Я приложу скриншоты, если что то нужно дополнительно, пришлю.
https://yadi.sk/i/TTAPvTFejEF5Nw
ОтпускаСотрудниковСотрудники.Сотрудник КАК Сотрудник,
ОтпускаСотрудниковСотрудники.ВидОтпуска КАК ВидОтпуска,
ОтпускаСотрудниковСотрудники.НомерСтроки КАК НомерСтроки,
ОтпускаСотрудниковСотрудники.ДатаНачала КАК ДатаНачала,
ОтпускаСотрудниковСотрудники.ДатаОкончания КАК ДатаОкончания,
ОтпускаСотрудниковСотрудники.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск КАК НачалоПериодаЗаКоторыйПредоставляетсяОтпуск,
ОтпускаСотрудниковСотрудники.КонецПериодаЗаКоторыйПредоставляетсяОтпуск КАК КонецПериодаЗаКоторыйПредоставляетсяОтпуск
ПОМЕСТИТЬ ВТОтпускаСотрудников
ИЗ
&ОтпускаСотрудников КАК ОтпускаСотрудниковСотрудники
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОтпускаСотрудников.Сотрудник КАК Сотрудник,
ОтпускаСотрудников.НомерСтроки КАК НомерСтроки
ПОМЕСТИТЬ ВТСтрокиСНекорректноЗаполненнымПериодомПредоставленияОтпуска
ИЗ
ВТОтпускаСотрудников КАК ОтпускаСотрудников
ГДЕ
ВЫРАЗИТЬ(ОтпускаСотрудников.ВидОтпуска КАК Справочник.ВидыОтпусков).ОтпускЯвляетсяЕжегодным
И (ОтпускаСотрудников.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ ОтпускаСотрудников.КонецПериодаЗаКоторыйПредоставляетсяОтпуск = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ ОтпускаСотрудников.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск >= ОтпускаСотрудников.КонецПериодаЗаКоторыйПредоставляетсяОтпуск)
И ОтпускаСотрудников.ДатаНачала <= ОтпускаСотрудников.ДатаОкончания

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ОтпускаСотрудников.Сотрудник,
ОтпускаСотрудников.НомерСтроки
ИЗ
ВТОтпускаСотрудников КАК ОтпускаСотрудников
ГДЕ
ОтпускаСотрудников.ДатаНачала > ОтпускаСотрудников.ДатаОкончания
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОтпускаСотрудников.Сотрудник КАК Сотрудник,
МАКСИМУМ(ОтпускаСотрудниковДругие.НомерСтроки) КАК НомерСтроки
ПОМЕСТИТЬ ВТПересекаютсяПериодыОтпусков
ИЗ
ВТОтпускаСотрудников КАК ОтпускаСотрудников
ЛЕВОЕ СОЕДИНЕНИЕ ВТОтпускаСотрудников КАК ОтпускаСотрудниковДругие
ПО ОтпускаСотрудников.Сотрудник = ОтпускаСотрудниковДругие.Сотрудник
И ОтпускаСотрудников.ВидОтпуска <> ОтпускаСотрудниковДругие.ВидОтпуска
И ОтпускаСотрудников.ДатаОкончания >= ОтпускаСотрудниковДругие.ДатаНачала
И ОтпускаСотрудников.ДатаОкончания <= ОтпускаСотрудниковДругие.ДатаОкончания
И (ОтпускаСотрудников.ДатаНачала <> ДАТАВРЕМЯ(1, 1, 1))
И (ОтпускаСотрудников.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1))

СГРУППИРОВАТЬ ПО
ОтпускаСотрудников.Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПересекаютсяПериодыОтпусков.Сотрудник КАК Сотрудник,
ПересекаютсяПериодыОтпусков.НомерСтроки КАК НомерСтроки,
ОтпускаСотрудников.ВидОтпуска КАК ВидОтпуска,
ИСТИНА КАК ПересекаютсяПериоды,
ЛОЖЬ КАК НекорректныйПериодПредоставления
ПОМЕСТИТЬ ВТСводный
ИЗ
ВТПересекаютсяПериодыОтпусков КАК ПересекаютсяПериодыОтпусков
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТОтпускаСотрудников КАК ОтпускаСотрудников
ПО ПересекаютсяПериодыОтпусков.НомерСтроки = ОтпускаСотрудников.НомерСтроки

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
СтрокиСНекорректноЗаполненнымПериодомПредоставленияОтпуска.Сотрудник,
СтрокиСНекорректноЗаполненнымПериодомПредоставленияОтпуска.НомерСтроки,
ОтпускаСотрудников.ВидОтпуска,
ЛОЖЬ,
ИСТИНА
ИЗ
ВТСтрокиСНекорректноЗаполненнымПериодомПредоставленияОтпуска КАК СтрокиСНекорректноЗаполненнымПериодомПредоставленияОтпуска
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТОтпускаСотрудников КАК ОтпускаСотрудников
ПО СтрокиСНекорректноЗаполненнымПериодомПредоставленияОтпуска.НомерСтроки = ОтпускаСотрудников.НомерСтроки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Сводный.Сотрудник КАК Сотрудник,
Сводный.НомерСтроки КАК НомерСтроки,
Сводный.ВидОтпуска КАК ВидОтпуска,
МАКСИМУМ(Сводный.ПересекаютсяПериоды) КАК ПересекаютсяПериоды,
МАКСИМУМ(Сводный.НекорректныйПериодПредоставления) КАК НекорректныйПериодПредоставления
ИЗ
ВТСводный КАК Сводный

СГРУППИРОВАТЬ ПО
Сводный.Сотрудник,
Сводный.НомерСтроки,
Сводный.ВидОтпуска

УПОРЯДОЧИТЬ ПО
НомерСтроки

Согласно трудовому кодексу отпуск начисляется в календарных днях
https://zakonius.ru/trud/vklyuchayutsya-li-vyhodnye-dni-v-otpusk

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск