Имя: Пароль:
1C
1С v8
Не срабатывает метод ТребуетсяВыполнение
0 fdv_83
 
17.02.21
14:16
Здравствуйте, уважаемые форумчане.

Возникла такая проблема. В конфигурации имеется справочник "Графики обслуживания". В этом справочнике записывается расписание, по которому должно происходить обслуживание. Имеется также обработка, которая, согласно расписанию, создаёт документы на обслуживание. В ней используется следующий метод: ТребуетсяВыполнение = Расписание.ТребуетсяВыполнение(День,ПоследняяДатаВыполнения,); Но этот метод возвращает Истина на определённую дату (15 ноября). На остальные даты, на которые настроены расписания, возвращается Ложь. Не могу понять в чём проблема. Может есть какой-то нюанс?
1 НоваяВолна
 
17.02.21
14:22
(0) Синтаксис:
ТребуетсяВыполнение(<ДатаДляПроверки>, <ДатаНачалаПоследнегоЗапуска>, <ДатаЗавершенияПоследнегоЗапуска>)
Параметры:
<ДатаДляПроверки> (необязательный)
Тип: Дата.
Дата, для которой нужно проверить расписание. Если дата не задана, используется текущая дата.
2 fdv_83
 
17.02.21
14:30
(1) Этот момент я проверял. Туда передаётся дата. Ниже выдержка из отладки.

Расписание    один день, по месяцам  [Ноябрь ], 2-го числа месяца, 3-й день недели в месяце; один раз в день    РасписаниеРегламентногоЗадания

День    02.11.2021 0:00:00    Дата

ТребуетсяВыполнение    Ложь    Булево

ПоследняяДатаВыполнения    01.01.0001 0:00:00    Дата
3 fisher
 
17.02.21
14:47
Могу предположить, что метод вычисляет только следующее выполнение относительно указанного предыдущего. Но это неточно.
4 fisher
 
17.02.21
14:49
Попробуй не передавать второй параметр.
5 fisher
 
17.02.21
14:58
15 ноября какого года? Но все равно не очень похоже на "2-е число месяца".
6 fdv_83
 
17.02.21
15:01
(5) Если я расписание поменяю на 15 ноября, то оно пройдёт
7 fdv_83
 
17.02.21
15:02
(4) Проверил. Но результат тот же.
8 fisher
 
17.02.21
15:03
Вопрос, по сути, стоит так: почему 15 ноября Истина. По-идее, вообще не должно выполняться никогда. Ну, вернее должно только когда 2 ноября будет средой. Если я правильно понял описание расписания :)
9 fisher
 
17.02.21
15:04
Хотя нет. Что такое "3-й день недели в месяце" - я не понимаю.
10 fdv_83
 
17.02.21
15:10
(8) Решилось. В расписании сделал реквизит день недели в месяце равным 0 и заработало.
11 fisher
 
17.02.21
15:12
Если я правильно понял описание ИТС, которое тоже невнятное, то "день недели в месяце" имеет смысл при указании выполнения по дням недели. Чтобы можно было сделать расписание типа "каждый второй понедельник месяца". Как оно срабатывало в твоем случае - решительно непонятно.
12 fdv_83
 
17.02.21
15:36
В моём случае "каждый третий понедельник месяца". Как раз 15 ноября 2021 - это третий понедельник месяца. Кажись, как то так.
13 fisher
 
17.02.21
15:55
(12) Так у тебя ж в (2) условие "2-го числа месяца" и ничего про понедельник?
14 fdv_83
 
17.02.21
16:17
(13) 2-го числа месяца - это 2 ноября (к примеру), 3-й день недели в месяце - дата должна принадлежать третьей неделе месяца. Поэтому 2 ноября 2021 не попадало под эти два условия, а 15 ноября 2021 попадало под эти условия.
15 fisher
 
17.02.21
17:00
(14) Я туплю, видимо. Каким образом 15 ноября 2021 попадает под условие "2-е число месяца"? Оно же 15-е? :)
16 fdv_83
 
17.02.21
17:12
(15) Я ранее писал, что, если расписание поменять на 15 ноября, то оно срабатывает (6)
17 Йохохо
 
17.02.21
17:21
"3-й день недели в месяце - дата должна принадлежать третьей неделе месяца" у меня был сосед, который, когда курил травку, всегда читал Ландавшица
18 fisher
 
17.02.21
17:43
(16) Дошло, где я затупил. Я (0) понял так, что когда ты расписание из (2) проверяешь на дате 15 ноября, то ТребуетсяВыполнение возвращает Истину. И на этом моменте выпал в осадок :)