Имя: Пароль:
1C
1С v8
К текущей дате прибавить 10 рабочих дней
,
0 Миюки
 
22.06.23
11:52
Добрый день!
Подскажите пожалуйста, мне надо к текущей (да в принципе к любой дате) прибавить например 10 рабочих дней. Необходимо исключить праздники и выходные. Предполагаю, что нужно как-то использовать производственный календарь, но никогда не сталкивалась.
Т.е. сегодня 22.06.2023 и я хочу прибавить 10 рабочих дней. Должно получится 6 июля.
Как это сделать подскажите пожалуйста?
1 Garykom
 
гуру
22.06.23
11:53
кнопочка Я справа от темы
2 KJlag
 
22.06.23
11:56
(0) из календаря вытаскиваешь все даты за исключением выходных и праздников больше твоей даты.
сортируешь по возрастанию и берешь первые 10, помещаешь во временную таблицу,
а дальше сортируешь её в обратном порядке и берешь первые 1.
3 Масянька
 
22.06.23
11:59
(0) Рабочие дни (текст не мой, автор выкладывал в общий доступ ь(за что ему спасибо))
    Запрос.Текст = "ВЫБРАТЬ
    |    НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ) КАК ДатаКалендаря
    |ИЗ
    |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
    |ГДЕ
    |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаМесяца, МЕСЯЦ) И КОНЕЦПЕРИОДА(&ДатаМесяца, МЕСЯЦ)
    |    И РегламентированныйПроизводственныйКалендарь.ВидДня В (ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий), ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный))
    |
    |УПОРЯДОЧИТЬ ПО
    |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря УБЫВ";
4 dali
 
22.06.23
13:13
Если бузгалтерия КалендарныеГрафики.ДатаПоКалендарю можно попробовать.
5 dali
 
22.06.23
13:13
*бухгалтерия )
6 Волшебник
 
22.06.23
13:14
(3) а если надо по графику работы конкретного сотрудника? Ваш автор добрая душа не выкладывал такое?
7 Donkey_hot
 
22.06.23
13:17
(0) Не верю, что нет метода в БСП под эту задачу.
8 Donkey_hot
 
22.06.23
13:20
(7) Да вот хотя бы:
// Возвращает дату, которая отличается указанной даты ДатаОт на количество дней,
// входящих в указанный график или производственный календарь ГрафикРаботы.
//
// Параметры:
//   ГрафикРаботы    - СправочникСсылка.Календари
//                     - СправочникСсылка.ПроизводственныеКалендари - график или
//                    производственный календарь, который необходимо использовать для расчета даты.
//   ДатаОт            - Дата - дата, от которой нужно рассчитать количество дней.
//   КоличествоДней    - Число - количество дней, на которые нужно увеличить дату начала.
//   ВызыватьИсключение - Булево - если Истина, вызвать исключение в случае незаполненного графика.
//
// Возвращаемое значение:
//   Дата, Неопределено - дата, увеличенная на количество дней, входящих в график.
//                          Если выбранный график не заполнен, и ВызыватьИсключение = Ложь, возвращается Неопределено.
//
Функция ДатаПоКалендарю(Знач ГрафикРаботы, Знач ДатаОт, Знач КоличествоДней, ВызыватьИсключение = Истина) Экспорт
9 Волшебник
 
22.06.23
13:22
(8) Вы скучный
10 Миюки
 
22.06.23
13:25
(8) интересно, спасибо!
11 Donkey_hot
 
22.06.23
13:30
(9) Грешен...
12 dali
 
22.06.23
13:34
(10) Э! а мне спасибо, я это еще в (4) написал
13 Миюки
 
22.06.23
13:45
(4) и Вам огромное спасибо! ))
14 Масянька
 
22.06.23
14:33
(6) В задании (0) речь о производственном календаре.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший