|
Функция возвращающая выходные и праздничные дни | ☑ | ||
---|---|---|---|---|
0
Dmitry_333
24.05.18
✎
12:19
|
Добрый день.
Хотел было написать такую функцию для своей текущей потребности (принимает дату и, если она официальный нерабочий день, возвращает истину). Но подумал, что это достаточно очевидная вещь и наверняка уже таковая есть. Если так и есть, дайте пожалуйста ссылочку. |
|||
1
Волшебник
24.05.18
✎
12:20
|
вот лентяй
|
|||
2
Малыш Джон
24.05.18
✎
12:21
|
(0) В конфигурациях как правило присутствует Производственный календарь или его аналоги. Обычно используют его.
|
|||
3
Dmitry_333
24.05.18
✎
12:24
|
(1) ну дык зачем лишний раз велосипед изобретать-))
(2) Спасибо! |
|||
4
Cool_Profi
24.05.18
✎
12:24
|
Регламентированный производственный календарь - не. никогда не слышал
|
|||
5
SleepyHead
гуру
24.05.18
✎
12:45
|
(0) Смотри в общих модулях, наверняка есть подсистемя работы с календарями, и в ней все нужные функции для этого. В ЗУП точно есть.
|
|||
6
Dmitry_333
24.05.18
✎
12:56
|
Все оказалось не так просто. Работаю со специализированной конфой (мониторинг транспорта), и там нет производственного календаря.
Скорее всего в самом деле придется писать функцию. Не подадите идею, откуда можно этот справочник заполнять? Ну типа как загружаются курсы валют с сайта рбк. |
|||
7
Dmitry_333
24.05.18
✎
12:57
|
*этот справочник имел ввиду календарь
|
|||
8
Малыш Джон
24.05.18
✎
13:00
|
(6) Обычно используют регистр сведений, так как, хотя набор праздничных дней стандартен(Новый год, 23 февраля, 8 марта и т.д.), но из года в год происходят переносы праздничных дней, в субботу работаем за понедельник - вот это вот всё.
Делай автозаполнение в начале года стандартными выходными и праздниками, а потом ручками вноси все переносы и изменения в соответствии с законодательством. |
|||
9
singlych
24.05.18
✎
13:04
|
||||
10
Temai
24.05.18
✎
13:07
|
Держи, я сегодня добрый
Функция ДобавитьКДатеРабочиеДни(ПередаваемаяДата = Неопределено, КоличествоРабочихДней) Экспорт Если ПередаваемаяДата = Неопределено или ПередаваемаяДата = Дата(1,1,1) Тогда ПередаваемаяДата = ТекущаяДата(); КонецЕсли; СледующийДень = НачалоДня(ПередаваемаяДата); //СледующийДень = ПередаваемаяДата+60*60*24; Пропущено = 0; СЦ=0; Для СЦ = 1 По КоличествоРабочихДней Цикл СледующийДень = СледующийДень+60*60*24; Если НЕ ЭтоРабочийДень(СледующийДень) Тогда Пропущено = Пропущено+1; КонецЕсли; КонецЦикла; Если Пропущено<>0 Тогда СледующийДень = ДобавитьКДатеРабочиеДни(СледующийДень,Пропущено); КонецЕсли; Возврат СледующийДень; КонецФункции Функция ЭтоРабочийДень(ПроверяемаяДата = Неопределено) Экспорт Если ПроверяемаяДата = Неопределено или ПроверяемаяДата = Дата(1,1,1) Тогда ПроверяемаяДата = ТекущаяДата(); КонецЕсли; НаборЗаписей = РегистрыСведений.РегламентированныйПроизводственныйКалендарь.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ДатаКалендаря.Установить(ПроверяемаяДата); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() > 0 Тогда ВидДня = НаборЗаписей[0].ВидДня; Если ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий или ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный Тогда Возврат Истина; Иначе Возврат Ложь; КонецЕсли; Иначе Возврат Истина; КонецЕсли; КонецФункции |
|||
11
Dmitry_333
24.05.18
✎
13:54
|
Всем бооольшое спасибо!
(10)Temai отдельное гран мерси!-) |
|||
12
Temai
24.05.18
✎
14:20
|
Пользуйся на здоровье бро
|
|||
13
Волшебник
24.05.18
✎
14:22
|
(10) Неправильная функция. В сабже нужно ровно наоборот.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |