|
Расчет даты в рабочих днях | ☑ | ||
---|---|---|---|---|
0
NIGHTHUNTER
18.05.22
✎
06:00
|
Конфигурация 1С:ERP Управление предприятием 2 (2.5.6.291) .
Подскажите пожалуйста. каким образом можно рассчитать реквизит До, по рабочим дням? Используя рабочие даты для этого. Я сделал пересчет обычными датами, числами, - Объект.До = ТекущаяДата() + (24*60*60) * Объект.СрокПредоставленияДокумента; Что оказалось не правильным. И нужно в пересчете учитывать только рабочие дни. |
|||
1
Bigbro
18.05.22
✎
06:02
|
используй календарь, в котором указано какие дни считать рабочими. (с) Ваш Кэп.
учти, что в разных регионах календари разные. если твоя задача теоретически может выполняться более чем в одной локации. |
|||
2
PuhUfa
18.05.22
✎
06:44
|
И наверняка есть готовая функция для этого в общих модулях...
|
|||
3
NIGHTHUNTER
18.05.22
✎
06:44
|
(1) Как я понимаю этот календарь есть в конфигурации (0)? Как его использовать, я не знаю и узнаю.
Так же есть разные примеры, как это возможно делать. Но как это можно делать в моем случае? Для одной территории. Везде рабочие дни одни. РФ. Думаю, я. |
|||
4
NIGHTHUNTER
18.05.22
✎
06:45
|
(2) Я и хочу узнать какая? Так как они есть разные в разных конфигурациях.
И где то есть примеры самостоятельного этого пересчета. Высчитывая выходные дни, может и праздники. Должен быть типовой для этого в конфигурации (0) . |
|||
5
VoditelKobyly
18.05.22
✎
07:13
|
Посмотри есть ли у тебя в конфе функция ДатаПоКалендарю
|
|||
6
NIGHTHUNTER
20.05.22
✎
13:00
|
(5) Да, в ОбщемМодуле КалендарныеГрафики .
// Возвращает дату, которая отличается указанной даты ДатаОт на количество дней, // входящих в указанный график или производственный календарь ГрафикРаботы. // // Параметры: // ГрафикРаботы - СправочникСсылка.Календари // - СправочникСсылка.ПроизводственныеКалендари - график или // производственный календарь, который необходимо использовать для расчета даты. // ДатаОт - Дата - дата, от которой нужно рассчитать количество дней. // КоличествоДней - Число - количество дней, на которые нужно увеличить дату начала. // ВызыватьИсключение - Булево - если Истина, вызвать исключение в случае незаполненного графика. // // Возвращаемое значение: // Дата, Неопределено - дата, увеличенная на количество дней, входящих в график. // Если выбранный график не заполнен, и ВызыватьИсключение = Ложь, возвращается Неопределено. // Функция ДатаПоКалендарю(Знач ГрафикРаботы, Знач ДатаОт, Знач КоличествоДней, ВызыватьИсключение = Истина) Экспорт Если Не ЗначениеЗаполнено(ГрафикРаботы) Тогда Если ВызыватьИсключение Тогда ВызватьИсключение НСтр("ru = 'Не указан график работы или производственный календарь.'; |en = 'Work schedule or business calendar is not specified.'"); КонецЕсли; Возврат Неопределено; КонецЕсли; ДатаОт = НачалоДня(ДатаОт); Если КоличествоДней = 0 Тогда Возврат ДатаОт; КонецЕсли; МассивДней = Новый Массив; МассивДней.Добавить(КоличествоДней); МассивДат = ДатыПоКалендарю(ГрафикРаботы, ДатаОт, МассивДней, , ВызыватьИсключение); Возврат ?(МассивДат <> Неопределено, МассивДат[0], Неопределено); КонецФункции Там разные есть функции. Они как то могут помочь? |
|||
7
Kassern
20.05.22
✎
13:05
|
(6) там же все по-русски написано, вы не можете понять, что данный код делает?
|
|||
8
NIGHTHUNTER
20.05.22
✎
13:09
|
(7) У меня вечер. Я сейчас не могу информацию воспринимать.
Я так на будущее. Теперь в понедельник, буду это разбирать. |
|||
9
Kassern
20.05.22
✎
13:11
|
(8) а как же выходные для саморазвития?
|
|||
10
NIGHTHUNTER
20.05.22
✎
13:22
|
(9) Где бы сил на это взять?
Выходные, я видимо буду в огороде проводить. Выбирать новую лопату. и тд. Тут как то подряд, 2 сломались. Выкорчевывал куст. |
|||
11
NIGHTHUNTER
23.05.22
✎
10:17
|
И эта конструкция
Объект.До = ТекущаяДата() + (24*60*60) * Объект.СрокПредоставленияДокумента; И эта, дали одинаковый результат ГрафикРаботы = Справочники.ПроизводственныеКалендари.НайтиПоКоду("РФ"); ДатаОт = ТекущаяДата(); КоличествоДней = Объект.СрокПредоставленияДокумента; Объект.До = КалендарныеГрафики.ДатаПоКалендарю(ГрафикРаботы, ДатаОт, КоличествоДней); Как выявить, что КалендарныеГрафики.ДатаПоКалендарю, работает правильно ? |
|||
12
H A D G E H O G s
23.05.22
✎
10:25
|
(11) Нужно копать дальше.
Вам хорошо, вы -сильный. |
|||
13
Ryzeman
23.05.22
✎
10:26
|
выделяешь мышкой в коде "ДатаПоКалендарю", нажимаешь F12, нажимаешь [enter]. Сперва читаешь описание функции (большинство фукнций 1сников сносно описаны), если этого недостаточно - глазками пробегаешься по коду и смотришь что он делает. Заодно мотаешь на ус "как надо".
|
|||
14
NIGHTHUNTER
23.05.22
✎
11:36
|
(13)
В (6) ее листинг с описанием. А в конфигурации в справочнике ПроизводственныеКалендари, есть два элемента. http://joxi.ru/p27pgLvCL9jElA , у обоих код РФ. ГрафикРаботы = Справочники.ПроизводственныеКалендари.НайтиПоКоду("РФ"); ДатаОт = ТекущаяДата(); КоличествоДней = Объект.СрокПредоставленияДокумента; Объект.До = КалендарныеГрафики.ДатаПоКалендарю(ГрафикРаботы, ДатаОт, КоличествоДней); Я ищу по коду и передаю в функцию. Но на сколько это нормлаьно отрабатывает, я не знаю. Производсвенный календарь это что то грандиозное http://joxi.ru/l2Zz3VEClBML02 . Как это. можно самому делать? Хочется узнать, на сколько правильно отрабатывает функция (6). И нужно ли использовать ее? Может другую какую то? Там же есть разные. |
|||
15
Kassern
23.05.22
✎
11:38
|
(14) "Производсвенный календарь это что то грандиозное" - ахах, производственный календарь, это всего лишь справочник, данные которого хранятся в регистре сведений простом. "Грандиозное" здесь лишь форма красивая с календариком)
|
|||
16
Ryzeman
23.05.22
✎
12:11
|
(14) У тебя на скрине не код, а наименование. В типовых код этого справочника уникален.
Ну и что ты в этом листинге увидел? Где значение, которое тебе функция возвращает? Ответь сам на вопрос - правильное или нет? Или может там ещё одна функция есть в которую надо посмотреть? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |