|
Количество рабочих дней, календарных , между двумя датами в запросе | ☑ | ||
---|---|---|---|---|
0
СвинТуз
04.03.15
✎
17:51
|
Обычная задача.
Есть дата отгрузки. Есть число дней отсрочки. Рабочих. Как в запросе определить дату начала просрочки? |
|||
1
СвинТуз
04.03.15
✎
17:51
|
праздники можно игнорировать
|
|||
2
tixis
04.03.15
✎
17:52
|
регалментированныйпроизводственныйкалендарь есть в конфе?
|
|||
3
yavasya
04.03.15
✎
17:52
|
регламентированный производствееный календарь
|
|||
4
СвинТуз
04.03.15
✎
17:53
|
нет
|
|||
5
yavasya
04.03.15
✎
17:53
|
или свой календарь напиши
|
|||
6
vicof
04.03.15
✎
17:53
|
Производственный календарь берем и отбираем рабочие и предпраздничные даты. Потом складываем. Соединяем с таблицей дат отгрузок. ПРофит.
|
|||
7
tixis
04.03.15
✎
17:54
|
что за конфа?
|
|||
8
PR
04.03.15
✎
17:55
|
(0) Красиво никак.
Потому что рабочих дней может быть пару дней в году, то есть непонятно, за какой период брать производственный календарь. Если некрасиво, то брать с запасом, например, дней в два раз больше + 30, чем по календарю. |
|||
9
Злопчинский
04.03.15
✎
17:56
|
Извините за нескромный вопрос ламера... если в запросе надо определить дату начала просрочки - то нафига это делать в запросе? если это тупо никак не связано с выборкой и фильтрацией данных...
|
|||
10
Злопчинский
04.03.15
✎
17:57
|
(8) а с учетом того что острочки могут быть такие что отсрочка уже есть, а произв.календарь еще постановлением правительства не утвержден
|
|||
11
СвинТуз
04.03.15
✎
17:58
|
(5)
вот думаю ) как раз с календарем можно и праздники учитывать (9) хочу ... (8) нужно тупо выкинуть 6-ки и 7-ки если отсрочка делится на 7 без остатка на самом деле все прозаично. хуже если от деления есть остаток |
|||
12
vicof
04.03.15
✎
17:59
|
(11) Ничо не прозаично. А если семерка - рабочий день, выпавший на вс?
|
|||
13
СвинТуз
04.03.15
✎
18:00
|
(5)
на самом деле таким путем получить дату начала просрочки тоже не легко ... |
|||
14
PR
04.03.15
✎
18:01
|
(11) Если только 6 и 7, то проще, но логика на самом деле та же
|
|||
15
СвинТуз
04.03.15
✎
18:01
|
(12)
да уже работает |
|||
16
and2
04.03.15
✎
18:01
|
ВЫБРАТЬ ПЕРВЫЕ 22
ДанныеПроизводственногоКалендаря.Дата ИЗ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря ГДЕ ДанныеПроизводственногоКалендаря.Дата >= &ДатаН И ДанныеПроизводственногоКалендаря.ВидДня = &ВидДня |
|||
17
PR
04.03.15
✎
18:01
|
+(14) Только брать тогда не производственный календарь, а определять дни недели в интервале от и до.
|
|||
18
PR
04.03.15
✎
18:02
|
(16) А если отсрочка 30 дней?
А если реализация 29 декабря? |
|||
19
СвинТуз
04.03.15
✎
18:03
|
(16) не думаю что это то
вам нужно дату подвинуть например на 14 дней |
|||
20
СвинТуз
04.03.15
✎
18:04
|
получить то число рабочих между двумя датами просто
а вот подвинуть будет сложнее |
|||
21
and2
04.03.15
✎
18:04
|
(18) вот если отсрочка 1.5 года - то возможна проблема.
организационная |
|||
22
and2
04.03.15
✎
18:06
|
(20) тогда, как нормальные пацаны, пиши дату отсрочки в БД
|
|||
23
PR
04.03.15
✎
18:07
|
(22) Кстати, да, это вернее всего, если не страдать фигней
|
|||
24
kumena
04.03.15
✎
18:35
|
>> Обычная задача.
напоминает задачу на спеца по бухучету. >> Красиво никак. ошибаешься рома, есть красивый способ. сдвиг легко делается в запросе, надо только голову приложить. |
|||
25
kumena
04.03.15
✎
18:37
|
+24 решается через производственный календарь
|
|||
26
kumena
04.03.15
✎
18:45
|
(23) программист, умеющий писать такой запрос на какую зарплату тянет по твоему?
|
|||
27
Biker
04.03.15
✎
18:51
|
В ут 11 сделано так, раб дни пронумерованы,
прибавляешь к номеру даты отгрузки кол-во дней отсрочки и ищешь по полученному номеру дату. |
|||
28
kumena
04.03.15
✎
18:58
|
(27) браво!
|
|||
29
kumena
04.03.15
✎
19:01
|
до такой идеи я сам дошел, когда была необходимость, УТ я не занимаюсь совсем.
|
|||
30
kumena
04.03.15
✎
19:03
|
(27) но ты зря написал, испортил интригу )))
|
|||
31
СвинТуз
04.03.15
✎
19:12
|
(27)
не совсем понял ) а если год сменяется? спс подумаю ) |
|||
32
СвинТуз
04.03.15
✎
19:14
|
нумерация видимо в календаре?
|
|||
33
PR
04.03.15
✎
19:20
|
(26) Что делать с датой 29 декабря и отсрочкой 40 жней?
|
|||
34
PR
04.03.15
✎
19:20
|
+(33) дней
|
|||
35
Biker
04.03.15
✎
19:20
|
(32) ну да, рег свед там по каждому году календарь
(31) если год меняется делай проверку суммы на макс номер раб дней. |
|||
36
Biker
04.03.15
✎
19:21
|
(34) и тебе испортил интригу
|
|||
37
PR
04.03.15
✎
19:22
|
(35) В запросе делай проверку?
А если отсрочка 3000 дней? А если 300000 дней? А если производственный календарь не заполнен? Что-то красоты не очень наблюдается. |
|||
38
СвинТуз
04.03.15
✎
19:22
|
(35)
проще начать календарь , например, с 2010 и считать сплошняком для торговли так можно сделать |
|||
39
PR
04.03.15
✎
19:22
|
(38) Красивее с 0 года тогда уж
|
|||
40
PR
04.03.15
✎
19:23
|
(27) А номер даты отгрузки как определяется?
В два захода что ли делается получается? |
|||
41
СвинТуз
04.03.15
✎
19:24
|
(37)
а если прогнать до 2100 то можно не париться с заполнением самописка (40) два видимо но это проще чем выбором работать |
|||
42
Biker
04.03.15
✎
19:26
|
все делал через вложеный запрос к регистру
ничего вернет , значит календарь не заполнен, о чем и сообщается юзеру. |
|||
43
СвинТуз
04.03.15
✎
19:26
|
долго не будет
к тому времени когда дойдет в запросе до просрочки таблица сильно в размерах ужмется |
|||
44
Biker
04.03.15
✎
19:26
|
(41) это производственный календарь , у нас выходные правительство любит двигать.
|
|||
45
СвинТуз
04.03.15
✎
19:27
|
а вообще прикольно
качаю торговлю 11 загляну |
|||
46
СвинТуз
04.03.15
✎
19:27
|
(44)
это лучше чем ничего ))) |
|||
47
СвинТуз
04.03.15
✎
19:28
|
сейчас вообще отбрасывают только 6-ки и 7-ки
причем это делается в цикле а если в СКД нужно будет загнать? ) нужно наращивать систему спс за идею |
|||
48
Biker
04.03.15
✎
19:30
|
(46)(47) это как-то крива ,
грузи календарь отсюда хотя-бы http://xmlcalendar.ru/ В скд загоняй - разрешаю. |
|||
49
PR
04.03.15
✎
19:34
|
(47) 6 и 7 можно в запросе посчитать через день недели.
|
|||
50
СвинТуз
04.03.15
✎
19:35
|
(49)
я и посчитал только когда сдвижка не кратная 7 как мозги прогреваться стали |
|||
51
ssh2006
04.03.15
✎
19:37
|
(27) Пример запроса по нумерации рабочих дней производственного календаря, интервал три года.
ВЫБРАТЬ Календарь.ДатаКалендаря КАК ДатаКалендаря, КОЛИЧЕСТВО(Календарь1.ДатаКалендаря) КАК НомерРабДня, ВЫБОР КОГДА Календарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий) ИЛИ Календарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ЭтоРабочийДень ПОМЕСТИТЬ Календарь ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь1 ПО (Календарь1.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий) ИЛИ Календарь1.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный)) И (Календарь1.ДатаКалендаря >= НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&ТекущаяДата, ГОД, -1), ГОД)) И (Календарь1.ДатаКалендаря <= Календарь.ДатаКалендаря) ГДЕ Календарь.ДатаКалендаря МЕЖДУ НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&ТекущаяДата, ГОД, -1), ГОД) И КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&ТекущаяДата, ГОД, 1), ГОД) СГРУППИРОВАТЬ ПО Календарь.ДатаКалендаря, ВЫБОР КОГДА Календарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий) ИЛИ Календарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ ИНДЕКСИРОВАТЬ ПО ДатаКалендаря, НомерРабДня ; |
|||
52
СвинТуз
04.03.15
✎
19:37
|
(49)
не правильно это так прогу напрягать |
|||
53
PR
04.03.15
✎
19:38
|
(50) Если день недели даты отгрузки + остаток от деления отсрочки на 7 <= 5, то прибавляем остаток от деления отсрочки на 7, иначе остаток от деления отсрочки на 7 + 2
|
|||
54
СвинТуз
04.03.15
✎
19:47
|
(53)
ну смотри сначала нужно проверить куда стартовая попала так? потом добавить целое от деления *2 потом сдвинуть тоже не очень красиво то что получалось в три приема меня и тормознуло |
|||
55
СвинТуз
04.03.15
✎
19:49
|
хотя можно первый опустить ? )
|
|||
56
PR
04.03.15
✎
20:07
|
(54) Еще раз.
Берем Цел(отсрочка / 7) * 5, прибавляем (53). Всё. |
|||
57
kumena
04.03.15
✎
20:23
|
>> А если отсрочка 3000 дней? А если 300000 дней? А если производственный календарь не заполнен?
облажался что можно сделать так признайся. 8 или 82 года это не нормальные отсрочки? |
|||
58
kumena
04.03.15
✎
20:24
|
>> Берем Цел(отсрочка / 7) * 5, прибавляем (53).
бывают еще праздники, и переносы выходных, так это что лажа. |
|||
59
kumena
04.03.15
✎
20:28
|
+57 для сроков более года прописывают конкретные даты, т.к. количество рабочих дней там не предсказуемо, ввиду изменения производственного календаря. а до года способ через календарь самое то.
|
|||
60
PR
04.03.15
✎
20:31
|
(57) Еще раз. Я говорю про то, что красоты не получается.
|
|||
61
PR
04.03.15
✎
20:32
|
(58) Что значит лажа? Это вариант исключительно для случая с исключением 6 и 7.
|
|||
62
PR
04.03.15
✎
20:32
|
(59) Отсрочка 40 дней и дата 28 декабря, будут прописывать конкретную дату?
|
|||
63
tixis
04.03.15
✎
21:21
|
(60) красиво получается, пример решение задачи на спеца по бух
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |