Имя: Пароль:
1C
1С v8
Как убрать выходные дни из даты в запросе (Дебеторка)?
,
0 Vladius
 
24.03.14
12:27
Есть отчет по дебеторке. Считает сколько дней просрочено следующим образом.

РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата, ДОБАВИТЬКДАТЕ(&ДатаКонца, ДЕНЬ, 1), ДЕНЬ) - ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности

Он берет дату документа и дату отчета и считает кол-во дней между этими датами, затем берется допустимое количество дней просрочки с договора и считает разницу.

Допустим просрочено 7 дней с понедельника по воскресенье. А надо что бы было просрочено 5 дней так как суб. и воскр. выходные.

Это вообще реально в запросе сделать?
1 cw014
 
24.03.14
12:28
Можешь заюзать регламентированный производственный календарь, если УПП
2 Vladius
 
24.03.14
12:31
(1) А каким образом? Я уже думал о календаря но понятия не имею как в запросе это реализовать. Там же просто разница дней считается и все.
3 France
 
24.03.14
12:32
(0) что за конфа?? в типовых вроде как указывается рабочие дни или календарные..
4 cw014
 
24.03.14
12:32
Не считай разницу, а выбери количество дней из календаря без выходных по вхождению от даты начала по дату окончания
5 Vladius
 
24.03.14
12:38
(3) УТП для Украины.
6 France
 
24.03.14
12:53
(5) для ут 10.3 (Россия) в настройках параметров учета есть "Способ контроля дней задолженности": по рабочим дням; по календарным дням.  Поищи, скорее всего и в УТП есть - он же потомок УТ??
7 МихаилМ
 
24.03.14
12:53
напишите формулу  

вычисления кол-ва раб дней без учета праздников

подсказка http://habrahabr.ru/post/67092/
8 МихаилМ
 
24.03.14
13:12
9 Vladius
 
24.03.14
13:15
(8) Формула не прокатит так как пилю универсальный отчет а там все в запросе надо сделать.
Пытаюсь через регл. календарь получить рабочие дни.
10 Ненавижу 1С
 
гуру
24.03.14
13:16
(9) будь мужиком, сделай в запросе
11 Vladius
 
24.03.14
13:17
(6) У нашей дебеторки изначально была 1 формула расчета просрочки.
Такую настройку нашел, сейчас гляну типовой отчет как там реализовано.
12 Ненавижу 1С
 
гуру
24.03.14
13:18
соедини с календарем по условию
ДатаКалендаря МЕЖДУ НачалоПериода и КонецПериода
И ВидДНЯ В ...
13 Vladius
 
24.03.14
13:20
(12) Уже так сделал.

РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата И &ДатаКонца

РегламентированныйПроизводственныйКалендарь.ВидДня = &ВидДня

Почему то нашел количество дней - 1
14 Ненавижу 1С
 
гуру
24.03.14
13:22
(13) возможно забыл про вид "предпраздничный"
15 Vladius
 
24.03.14
13:25
(14)
УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ВидДня", Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий);
16 Ненавижу 1С
 
гуру
24.03.14
13:28
(15) плять, ну так сделай уже

РегламентированныйПроизводственныйКалендарь.ВидДня В (ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий),ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный))
17 Vladius
 
24.03.14
13:31
(16) Ты не понял, даже если БЕЗ условия ВидДня он подтягивает кол-во дней - 1

РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата И &ДатаКонца
18 Vladius
 
24.03.14
13:31
Хотя разница в 8 дней с датой документа и отчета.
19 Vladius
 
24.03.14
13:34
Забыл поменять МАКСИМУМ на СУММА.

Вопрос решен.
20 Ненавижу 1С
 
гуру
24.03.14
13:35
(17) на конкрентных числах давай, какой период и какой результат
21 Cube
 
24.03.14
13:45
Слабаки! Вот, вроде работает, если что, допилить напильником:

ВЫБРАТЬ
    ВЫБОР
        КОГДА НАЧАЛОПЕРИОДА(&Дата1, ДЕНЬ) >= НАЧАЛОПЕРИОДА(&Дата2, ДЕНЬ)
            ТОГДА 0
        ИНАЧЕ ВЫБОР
                КОГДА ДЕНЬНЕДЕЛИ(&Дата1) < 6
                    ТОГДА 5 - ДЕНЬНЕДЕЛИ(&Дата1)
                ИНАЧЕ 0
            КОНЕЦ + ВЫБОР
                КОГДА РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, 7), НЕДЕЛЯ), КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&Дата2, ДЕНЬ, -7), НЕДЕЛЯ), ДЕНЬ) > 0
                    ТОГДА РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, 7), НЕДЕЛЯ), КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&Дата2, ДЕНЬ, -7), НЕДЕЛЯ), ДЕНЬ) - (ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, 7), НЕДЕЛЯ), КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&Дата2, ДЕНЬ, -7), НЕДЕЛЯ), ДЕНЬ) / 7 КАК ЧИСЛО(15, 0))) * 2 + 1
                ИНАЧЕ 0
            КОНЕЦ + ВЫБОР
                КОГДА ДЕНЬНЕДЕЛИ(&Дата2) > 5
                    ТОГДА ВЫБОР
                            КОГДА НАЧАЛОПЕРИОДА(&Дата1, НЕДЕЛЯ) = НАЧАЛОПЕРИОДА(&Дата2, НЕДЕЛЯ)
                                ТОГДА 0
                            ИНАЧЕ 5
                        КОНЕЦ
                ИНАЧЕ ДЕНЬНЕДЕЛИ(&Дата2)
            КОНЕЦ
    КОНЕЦ КАК Поле3
22 Cube
 
24.03.14
13:46
(0) "Дебеторка" пишется через "и" - дебиторка...
23 Vladius
 
24.03.14
13:47
(21) Чё слабаки? Уже все решил).

ДатаКалендаря МЕЖДУ НачалоПериода и КонецПериода
И ВидДНЯ В ...
24 Cube
 
24.03.14
13:50
(23) А я решил без производственного календаря...
Правда, на счет боевого применения, скорее всего с календарем лучше. Но задача стояла выкинуть субботу и воскресение - сделано.
25 France
 
24.03.14
14:09
(11) все же решил продолжить строгание костыля?
26 Ненавижу 1С
 
гуру
24.03.14
14:17
(24) это псевдорешение