Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Не срабатывает метод ТребуетсяВыполнение

Не срабатывает метод ТребуетсяВыполнение
Я
   fdv_83
 
17.02.21 - 14:16
Здравствуйте, уважаемые форумчане.

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.