как определить время выполнения задания Задача, сделать рассылку смс за 8 часов и за 1 час. Есть регламентированное задание которое запускается примерно каждые 3 минуты. В нем делается запрос документов в течении года. Высчитывается дата от которой нужно делать отправку смс: | ДатаВремяОтправки = ДатаДок - КолЧасов * 3600; | как действовать потом? Как выявлять момент что текущая дата уже за 8 часов от ДатаВремяОтправки, и выполнить необходимый код. Или же что текущая дата за 1 час от ДатаВремяОтправки и так же выполнить код делающий отправку смс? |
эээ... [b]вычитание[/b] не предлагать? |
(1) а что из чего???? не совсем понимаю, стал делать по одному примеру, но что то вижу не рабочий вариант: ДатаВремяОтправки = ДатаВремяПодачиТранспортаНСО - КолЧасов * 3600; // ДиапазонОтСтарта = ТекущаяДата() - ДатаВремяОтправки; ДиапазонОтСтарта = МАКС(ДиапазонОтСтарта , -ДиапазонОтСтарта); // Сообщить(Строка(н) + "). " + Строка(СтрТз.СсылкаЗаказТрансфера) + " Диапазон старта «" + Строка(ДиапазонОтСтарта) + "», ДатаВремяОтправки " + Строка(ДатаВремяОтправки)); // Если ДиапазонОтСтарта < (60 * (КолЧасов * 60)) Тогда |
(1) я получил ДатаВремяОтправки, это дата за вычетом требуемого количества часов от нужной даты, как мне сейчас отлавливать момент что она равна "примерно" текущаей дате? |
Если ТекущаяДата() > ДатаВремяОтправки И СМСещеНЕотправлено Тогда ОтправитьСМС() КонецЕсли; |
(4) да пробовал так, но как то тоже не подходит!!! СМСЕщёНЕотправлено, это да! фильтруется в запросе, то есть уже отправленым повторно отправляться не будет. Они будут отсутствовать в выборке. Но как то не пойму!!! В (4) тоже мне кажется не надежное и не универсальное решение. Нужно как то хитрее. |
5-LivingStar > в (4) необходимое и достаточное условие, что еще надо? |
(6) ну ладно завтра попробую, вот так тогда просто Если ТекущаяДата() > ДатаВремяОтправки так как в выборке и так те по которым не было отправки |
() так а если там старые всякие смс по которым не было отправки, и текущая дата будет всегда больше ихней, а по ним не надо делать отправку, то есть будет контролироваться что не за час или за 8 часов а просто что текущая дата стала больше |
(6) в базе много данных, так как я отбираю за год, то там есть и документы за несколько месяцев, что просто попадут под условия, а нужно за 8 часов и за час. |
зачем тогда за год? |
(0) ЗАЧЕМ? Цель раскрой, время-то тебе зачем? Если ты спамишь, спамера интересует размер кучи говна, кою на бедных пользователей вываливаете, а время-то зачем? Извращенное удовольствие? Или что-то техническое? |
Как вариант, моя контора спамит наших клиентов порядка 10000 рассылок СМС в день. В каждой из них написано: "Мы тебе кучу бабла заслали". |
Так вот время - интересует провайдера СМС. Если мы чё-то 30 тысяч счастливчиков осчастливить готовы деньгами, то провайдер чё-то сопротивляется 30 000 СМС. |
13-DeiMos > Дык провайдеру время зачем? Его объем интересует: в количестве рассылок, и в мегабайтах в общем. |
(10) подразумевая то что заказы в документах могут делаться на длительный период вперед, за год что бы не потерять такие |
(11) это смс информировании клиента о заказанной услуге, в данное время менеджеры делают это по кнопке из документа к каждому документу привязано дата время предаставляемой услуги услуги, нужно автоматизировать отправку смс за 8 часов и за 1 час |
как вам вот такое решение? Если ДатаВремяОтправки < ТекущаяДата() и ДатаВремяОтправки > ТекущаяДата()-60*(КолЧасов*60) Тогда ДатаВремяОтправки становится меньше ТекущаяДата() и ДатаВремяОтправки больше ТекущаяДата() минус час или 8 часов то есть как только ДатаВремяОтправки попадает в промежуток за 8 часов или за 1 час в который нужно отправить смс, так как регламентное задание выполняется примерно каждые 3 минуты, погрешность будет не большая |
8-LivingStar > по "старым" ты должен заранее позаботиться и не включать их в выборку |
17-LivingStar > это за 8 часов она у тебя 160 раз уйдёт. клиент порадуется. веди учёт фактов отправки смс. |
19-Зелёный тролль > см.(5) |
Текущее время: 15:03. Часовой пояс GMT +3. |