Имя: Пароль:
1C
1С v8
Количество рабочих дней в месяце в виде запроса, не используя регистры т.п.ХЕЛП
0 Bittin
 
20.02.15
22:08
Здравствуйте.
Стоит задача: сделать запрос который бы выдал количество рабочих дней в месяце, в запрос только один параметр передается - Дата(в которой надо узнать) без использования регистров(производственных календарей и т.д.)


Есть такая наработка:

ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(&ПараметрДата, МЕСЯЦ) КАК НАЧАЛОПЕРИОДА
ПОМЕСТИТЬ Начало
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 1)) КАК Поле3,
    ВЫБОР
        КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 1)) > 4
            ТОГДА 0
        ИНАЧЕ 1
    КОНЕЦ КАК Поле1
ИЗ
    Начало КАК Начало




Дальше можно сделать 30 раз запрос с прибавление по дням и потом посчитать сколько единичек....но чето как то не так, муторно и неправиьно кажется........Помогите плизззз!
1 GROOVY
 
20.02.15
22:11
А праздники случайным числом определять будем?
2 Bittin
 
20.02.15
22:11
праздники не учитываем вообще
3 Bittin
 
20.02.15
22:15
точнее дальше немного подругому надо

        ВЫБОР
            КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 1)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
                ТОГДА ВЫБОР
                        КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 1)) > 4
                            ТОГДА 0
                        ИНАЧЕ 1
                    КОНЕЦ
            ИНАЧЕ 0
        КОНЕЦ КАК Поле2,
4 Ненавижу 1С
 
гуру
20.02.15
22:18
Почему не учитываем праздники. Я против
5 Bittin
 
20.02.15
22:19
))) потому что задача так поставлена...
6 Ненавижу 1С
 
гуру
20.02.15
22:22
То6да пляши от дня недели. В первые 28 дней любого месяца есть гарантированно 4 субботы и 4 воскресенья
7 Bittin
 
20.02.15
22:35
сделал вот так как,  рабочий вариант, есть вариант упростить?

ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(&ПараметрДата, МЕСЯЦ) КАК НАЧАЛОПЕРИОДА
ПОМЕСТИТЬ Начало
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВЫБОР
        КОГДА ДЕНЬНЕДЕЛИ(Начало.НАЧАЛОПЕРИОДА) > 5
            ТОГДА 0
        ИНАЧЕ 1
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 1)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 1)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 2)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 2)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 3)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 3)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 4)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 4)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 5)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 5)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 6)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 6)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 7)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 7)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 8)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 8)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 9)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 9)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 10)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 10)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 11)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 11)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 12)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 12)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 13)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 13)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 14)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 14)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 15)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 15)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 16)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 16)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 17)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 17)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 18)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 18)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 19)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 19)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 20)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 20)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 21)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 21)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 22)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 22)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 23)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 23)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 24)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 24)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 25)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 25)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 26)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 26)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 27)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 27)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 28)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 28)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 29)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 29)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 30)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 30)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 31)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.НАЧАЛОПЕРИОДА, ДЕНЬ, 31)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ КАК Поле2
ИЗ
    Начало КАК Начало
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ Начало
8 marvak
 
20.02.15
22:37
пипец
9 Ненавижу 1С
 
гуру
20.02.15
22:38
Слишком сложно
10 Bittin
 
20.02.15
22:39
А как укоротить?)))
11 Ненавижу 1С
 
гуру
20.02.15
22:41
Смотри (6)
12 marvak
 
20.02.15
22:42
может сначала определить число целых недель и умножить на 5?
потом разбираться с остатками
13 Bittin
 
20.02.15
22:48
А как определить ? взять начальную дату узнать какой день недели прибавить неделю узнать какая дата и какой день недели и так 5 раз а потом умножить полученный результат на  5 так что?
14 marvak
 
20.02.15
22:52
(13)
анализируй дни недель последних трех дней месяца
в первых 28 стопудово 20 рабочих дней.
15 marvak
 
20.02.15
22:52
то есть "анализируй дни недели"
16 Ненавижу 1С
 
гуру
20.02.15
23:04
вот число выходных, например (если нет праздников):

ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(&ТекущаяДата, МЕСЯЦ) КАК НачалоПериода,
    КОНЕЦПЕРИОДА(&ТекущаяДата, МЕСЯЦ) КАК КонецПериода,
    ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ТекущаяДата, МЕСЯЦ), ДЕНЬ, 29) КАК День29,
    ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ТекущаяДата, МЕСЯЦ), ДЕНЬ, 30) КАК День30,
    ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ТекущаяДата, МЕСЯЦ), ДЕНЬ, 31) КАК День31
ПОМЕСТИТЬ Месяц
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    8 + ВЫБОР
        КОГДА Месяц.День29 <= Месяц.КонецПериода
                И ДЕНЬНЕДЕЛИ(Месяц.День29) В (6, 7)
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА Месяц.День30 <= Месяц.КонецПериода
                И ДЕНЬНЕДЕЛИ(Месяц.День30) В (6, 7)
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА Месяц.День31 <= Месяц.КонецПериода
                И ДЕНЬНЕДЕЛИ(Месяц.День31) В (6, 7)
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ КАК Поле1
ИЗ
    Месяц КАК Месяц
17 Bittin
 
20.02.15
23:13
я доделал....ток чуток подругому....


ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(&ПараметрДата, МЕСЯЦ) КАК НАЧАЛОПЕРИОДА,
    ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ПараметрДата, МЕСЯЦ), ДЕНЬ, 27) КАК База
ПОМЕСТИТЬ Начало
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    20 + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.База, ДЕНЬ, 1)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.База, ДЕНЬ, 1)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.База, ДЕНЬ, 2)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.База, ДЕНЬ, 2)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА МЕСЯЦ(ДОБАВИТЬКДАТЕ(Начало.База, ДЕНЬ, 3)) = МЕСЯЦ(Начало.НАЧАЛОПЕРИОДА)
            ТОГДА ВЫБОР
                    КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(Начало.База, ДЕНЬ, 3)) > 5
                        ТОГДА 0
                    ИНАЧЕ 1
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ КАК Поле4
ИЗ
    Начало КАК Начало
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ Начало
18 Bittin
 
20.02.15
23:15
так менее страшнее?
19 Ненавижу 1С
 
гуру
20.02.15
23:15
(17) с тебя причитается))
20 Serg_1960
 
20.02.15
23:16
Производственный календарь не проще ли?
21 Bittin
 
20.02.15
23:19
(20) задание такое....не использовать произв календарь
22 Bittin
 
20.02.15
23:20
Спасибо всем за помощь и отдельное большое спасибо "marvak", "Ненавижу 1С"
23 Ненавижу 1С
 
гуру
20.02.15
23:20
(20) условия читай
24 Ненавижу 1С
 
гуру
20.02.15
23:21
(22) спасибо не булькает ))
25 Bittin
 
20.02.15
23:22
))))