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

Определить дату окончанию по производственному календарю

Автор vitasw, 18 июн 2015, 22:58

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

vitasw

Здравствуйте.
Практически в любой типовой есть РС производственный календарь. Условие задачи: есть дата начала и количество дней (число), нужно определить дату окончания. НО! (как всегда есть "но"), дата начала + кол-во дней считать нельзя - на этот период может выпадать праздник и тогда этот день в подсчете не должен учавствовать. Что-то никак не соображу как это в запрос можно реализовать.
Спасибо.

LexaK

запускаете перебор даты от нужной даты + 1 день,
для каждой даты получаете номер дня недели 1,2,3... определяете выходные дни (6,7) - пропускаете,
например в ЗУПе еще есть РС.ПеренесенныеРабочиеДни
Измерения: Год, РабочийДень, ВыходнойДень
проверяете дату там, если день рабочий то считаете, если выходной пропускаете.

если помогло нажмите: Спасибо!

vitasw

:) Как перебором это все достать - не вопрос. Весь цинус заключается как в запросе получить на выходе одно поле с датой окончания.

LexaK

а если использовать регистр Производственный календарь, там вообще все просто.
сначала надо определить какую рабочую неделю будем считать, там есть пятидневка и шестидневка, берем пятидневку, в этом поле по рабочим дням (с учетом праздников и переносов) стоят 1,
поэтому что бы определить конечную дату от заданной, на указанное количество рабочих дней, просто надо просуммировать эти единички, нарастающим итогом и поставить по условию на равенство суммы заданному количеству дней.
Вроде все подсказки указал.

Сможете сами построить запрос?

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

если не получится напишите, выложу готовое решение, в принципе, его анализ тоже сможет вам что=то дать.
если помогло нажмите: Спасибо!

vitasw

Если не сложно, выложите запрос. На словах то я это понимаю, а вот реализовать - как Муму, все понимаю, но сказать не могу.

LexaK

при параметрах
Дата = 01.05.2015
Дней = 5
возвращает результат - 12.05.2015

запрос может вернуть несколько строчек, но нас интересует первая - где рабочая дата, следующие могут быть выходными днями

ВЫБРАТЬ
Рег.ДатаКалендаря,
Сумма(Рег1.Пятидневка) как Количество
ИЗ
РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Рег
левое соединение
РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Рег1
по Рег.Год = Рег1.Год
и Рег.ДатаКалендаря >= Рег1.ДатаКалендаря
и Рег1.ДатаКалендаря >= &Дата
ГДЕ
Рег.Год = Год(&Дата)
и Рег.ДатаКалендаря >= &Дата
сгруппировать по
Рег.ДатаКалендаря
имеющие
Сумма(Рег1.Пятидневка) = &Дней
УПОРЯДОЧИТЬ ПО
Рег.ДатаКалендаря
если помогло нажмите: Спасибо!

vitasw

Спасибо. То что нужно. теперь хоть начал понимать смысл "имеющие".

Теги:

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

Рейтинг@Mail.ru

Поиск