helpf.pro
Регистрация
 0 
Распечатать

Как получить количество рабочих дней в месяце по календарю?

Для одного проекта потребовалось получить количество рабочих дней в месяце по календарю, без учета праздников.

В результате получилась простая функция:

Код 1C v 8.3
 Функция ПолучитьКолВоРабочихДнейПоКалендарю(ДатаМесяца)
Рабочие=0;
Кон=НачалоМесяца(ДатаМесяца); КонМес = КонецМесяца(ДатаМесяца);
Пока Кон<=КонМес Цикл 
Если (ДеньНедели(Кон)=6) или (ДеньНедели(Кон)=7)Тогда
//выходные дни не считаем
Иначе
Рабочие=Рабочие+1;      
КонецЕсли;    
Кон=Кон+86400;
КонецЦикла;
Возврат Рабочие;            
КонецФункции

А получить количество Выходных дней в месяце можно так:

Код 1C v 8.3
 Функция ПолучитьКолВоРабочихДнейПоКалендарю(ДатаМесяца)
Вых=0;
Кон=НачалоМесяца(ДатаМесяца); КонМес = КонецМесяца(ДатаМесяца);
Пока Кон<=КонМес Цикл 
Если (ДеньНедели(Кон)=6) или (ДеньНедели(Кон)=7)Тогда
Вых=Вых+1;      
КонецЕсли;    
Кон=Кон+86400;
КонецЦикла;
Возврат Вых;            
КонецФункции
Разместил:   Версии: | 8.x | 8.2 УП | 8.3 |  Дата:   Прочитано: 3516
 0 
Распечатать
Возможно, вас также заинтересует
Как заполнить табличную часть формы программно? 2
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код...
1C и Google Maps 12
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во...
1С Предприятие что это? 6
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который...
COM-подключение к базе 7.7 из 8.2 1С 4
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе="...
Google maps : вывод точек на карту и режим панорамы 2
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С...
Посмотреть все результаты поиска похожих
Комментарии
alexusiv
19.06.2016 23:27Комментарий: 1
alexusiv

Запросом

ВЫБРАТЬ

0 КАК Цифра

ПОМЕСТИТЬ Цифры

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ

1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ

2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ

3

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ

4

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ

5

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ

6

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ

7

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ

8

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ

9

;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ

ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, Цифры4.Цифра * 1000 + Цифры3.Цифра * 100 + Цифры2.Цифра * 10 + Цифры1.Цифра * 1) КАК ДатаДень

ПОМЕСТИТЬ ТаблицаДней

ИЗ

Цифры КАК Цифры1

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Цифры КАК Цифры2

ПО (Цифры2.Цифра * 10 + Цифры1.Цифра * 1 <= РАЗНОСТЬДАТ(&НачалоПериода,КонецПериода, ДЕНЬ))

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Цифры КАК Цифры3

ПО (Цифры3.Цифра * 100 + Цифры2.Цифра * 10 + Цифры1.Цифра * 1 <= РАЗНОСТЬДАТ(&НачалоПериода,КонецПериода, ДЕНЬ))

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Цифры КАК Цифры4

ПО (Цифры4.Цифра * 1000 + Цифры3.Цифра * 100 + Цифры2.Цифра * 10 + Цифры1.Цифра * 1 <= РАЗНОСТЬДАТ(&НачалоПериода,КонецПериода, ДЕНЬ))

;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ

КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВложенныйЗапрос.ДатаДень) КАК ДатаДень

ИЗ

(ВЫБРАТЬ

ТаблицаДней.ДатаДень КАК ДатаДень,

ДЕНЬНЕДЕЛИ(ТаблицаДней.ДатаДень) КАК ДеньНедели

ИЗ

ТаблицаДней КАК ТаблицаДней) КАК ВложенныйЗапрос

ГДЕ

ВложенныйЗапрос.ДеньНедели = 6

ИЛи ВложенныйЗапрос.ДеньНедели = 7

Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.