|
(ДобавленииКДате) Как можно исключить Выходные и Праздничные дни? | ☑ | ||
---|---|---|---|---|
0
Артем12345
17.11.16
✎
07:55
|
Приветствую! Подскажите как правильно исключить Выходные и Праздничные дни в Документообороте 1.3. Суть задачи: нужно ДобавитьКДате учитывая только рабочие. Например сегодня 17.11 четверг, пользователь ставит, что нужно добавить 2 дня, в итоге дата должна получиться 21.11, а не 19.11. Что сделал (Перетянул из ЗУП 2.5 Производственный календарь, далее во вложенном запросе получаю все рабочии и предпраздничные дни). А дальше завис, надо как то прибавить по датам полученным во вложенном запросе, а как понять не могу.
ВЫБРАТЬ ДОБАВИТЬКДАТЕ(Жалоба.Дата, ДЕНЬ, &КолДней) КАК НоваяДата ИЗ Документ.Жалоба КАК Жалоба ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря, РегламентированныйПроизводственныйКалендарь.ВидДня КАК ВидДня ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.Год = &Год И (РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий) ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный))) КАК ВложенныйЗапрос ПО Жалоба.Дата = ВложенныйЗапрос.ДатаКалендаря ГДЕ ВложенныйЗапрос.ДатаКалендаря = &ДатаКалендаря СГРУППИРОВАТЬ ПО ДОБАВИТЬКДАТЕ(Жалоба.Дата, ДЕНЬ, &КолДней) |
|||
1
aleks_default
17.11.16
✎
08:59
|
Тебе надо посчитать количество тех дней, которые ты выбрал из производственного календаря
|
|||
2
patria0muerte
17.11.16
✎
09:31
|
||||
3
patria0muerte
17.11.16
✎
09:35
|
Если грубо - тебе надо пронумеровать производственный календарь, и джойнить его по дата+ количество дней
|
|||
4
patria0muerte
17.11.16
✎
09:43
|
Точнее - не так.
Джойнишь из пр. календаря строку с номером равным 1 + Количество дней. Ну ты понел. |
|||
5
patria0muerte
17.11.16
✎
09:44
|
А вообще по идее - в ДО все это (и отчеты и функции которые все это делают) должно уже быть, так что лучше юзай типовое.
|
|||
6
Артем12345
17.11.16
✎
10:28
|
Спасибо,
(4) что то подробное пытаюсь сделать, пока не получилось; (5)версия конфы ДО 1.3.1.6, ничего не нашел. Посмотрю в других конфигурациях может встречу то, что подтолкнет в нужном направлении) |
|||
7
Vladal
17.11.16
✎
10:36
|
Перетянул РегламентированныйПроизводственныйКалендарь?
Вот и отлично! Теперь просто за период календаря получить только необходимое количество рабочих дней и в итоге будет искомая дата. Примерно так: Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ " + ЧислоДней + " | РегламентированныйПроизводственныйКалендарь.ДатаКалендаря |ИЗ | РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь |ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря > &ДатаНач | И (РегламентированныйПроизводственныйКалендарь.ВидДня = &РабочийДень | ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = &ПредпраздничныйДень) |"; |
|||
8
Vladal
17.11.16
✎
10:39
|
хотя... более кузяво будет параметры задать так:
И (РегламентированныйПроизводственныйКалендарь.ВидДня = Значение(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий) ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = Значение(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный) |
|||
9
mistеr
17.11.16
✎
11:05
|
(7) Упорядочить забыл.
|
|||
10
Артем12345
18.11.16
✎
07:53
|
Всем спасибо, особенно (7) Vladal, всё получилось
|
|||
11
Лефмихалыч
18.11.16
✎
08:47
|
(8) более кузяво было бы выкинут в пень ИЛИ. Либо объединение, либо "И" и равенство.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |