|   |   | 
| 
 | Количество рабочих дней, календарных , между двумя датами в запросе | ☑ | ||
|---|---|---|---|---|
| 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) красиво получается, пример решение задачи на спеца по бух     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |