|
Получить количество рабочих дней между двумя датами запросом | ☑ | ||
---|---|---|---|---|
0
Kuzen
09.08.11
✎
15:54
|
Подсчитываем дни с помощью регистра сведений РегламентированныйПроизводственныйКалендарь.
* Стоит условие что дата окончания должна попадать на рабочий день. * Начальная дата не проверяется на то, что должна быть рабочим днем. * Начальная дата за рабочий день не считается. * Нет проверок что календарь не заполнен, это можно сделать отдельно. ВЫБРАТЬ Даты.ДатаНачала КАК ДатаНачала, Даты.ДатаОкончания КАК ДатаОкончания, КОЛИЧЕСТВО(РПК.ДатаКалендаря) - 1 КАК КоличествоРабочихДней ИЗ (ВЫБРАТЬ ПодсчетРабочихДней.ДатаНачала КАК ДатаНачала, ПодсчетРабочихДней.ДатаОкончания КАК ДатаОкончания ИЗ (ВЫБРАТЬ Календарь1.ДатаКалендаря КАК ДатаНачала, Календарь2.ДатаКалендаря КАК ДатаОкончания ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь1, (ВЫБРАТЬ Календарь2.ДатаКалендаря КАК ДатаКалендаря ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь2 ГДЕ (Календарь2.ДатаКалендаря > &Дата1 И Календарь2.ДатаКалендаря < &Дата2) И Календарь2.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)) КАК Календарь2 ГДЕ Календарь1.ДатаКалендаря >= &Дата1 И Календарь1.ДатаКалендаря <= &Дата2 И Календарь1.ДатаКалендаря < Календарь2.ДатаКалендаря) КАК ПодсчетРабочихДней) КАК Даты, РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РПК ГДЕ РПК.ДатаКалендаря МЕЖДУ Даты.ДатаНачала И Даты.ДатаОкончания И РПК.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий) СГРУППИРОВАТЬ ПО Даты.ДатаНачала, Даты.ДатаОкончания УПОРЯДОЧИТЬ ПО ДатаНачала, ДатаОкончания |
|||
1
lubja
09.08.11
✎
16:02
|
в чем вопрос?
|
|||
2
Defender aka LINN
09.08.11
✎
16:02
|
Хвастаешься?
|
|||
3
dadmitrii
09.08.11
✎
16:19
|
из типовой упп
Запрос.Текст = " |ВЫБРАТЬ | ЕстьNull(СУММА(ВЫБОР | КОГДА РегламентированныйПроизводственныйКалендарь.ВидДня = &РабочийДень | ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = &ПредпраздничныйДень | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ),0) КАК ЧислоРабочихДней |ИЗ | РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь |ГДЕ | РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНач И &ДатаКон |
|||
4
Kuzen
09.08.11
✎
16:45
|
(3) Дело в том что есть еще другой запрос в котором соответственно есть дата начальная и число рабочих дней и нужно получить дату окончания.
Этот запрос не поможет, так как даты это параметры. А мой можно прицепить к другому запросу и получить дату окончания исходя из даты начала и количества рабочих дней. (2) Нет, просто искал готовое решение и не нашел, выложил может кому пригодится. В моем случае есть бизнес процесс который начинается с определенной даты, а закончится должен через сколько то рабочих дней и какой датой он должен окончится нужно вычислить. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |