Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   как определить время выполнения задания (http://forums.kuban.ru/f1040/kak_opredelit-_vremya_vypolneniya_zadaniya-6584783.html)

LivingStar 11.03.2015 17:37

как определить время выполнения задания
 
Задача, сделать рассылку смс за 8 часов и за 1 час. Есть регламентированное задание которое запускается примерно каждые 3 минуты. В нем делается запрос документов в течении года. Высчитывается дата от которой нужно делать отправку смс:
|
ДатаВремяОтправки = ДатаДок - КолЧасов * 3600;
|
как действовать потом? Как выявлять момент что текущая дата уже за 8 часов от ДатаВремяОтправки, и выполнить необходимый код. Или же что текущая дата за 1 час от ДатаВремяОтправки и так же выполнить код делающий отправку смс?

Uho 11.03.2015 17:40

эээ... [b]вычитание[/b] не предлагать?

LivingStar 11.03.2015 17:45

(1) а что из чего???? не совсем понимаю, стал делать по одному примеру, но что то вижу не рабочий вариант:

ДатаВремяОтправки = ДатаВремяПодачиТранспортаНСО - КолЧасов * 3600;
//

ДиапазонОтСтарта = ТекущаяДата() - ДатаВремяОтправки;
ДиапазонОтСтарта = МАКС(ДиапазонОтСтарта , -ДиапазонОтСтарта);
//

Сообщить(Строка(н) + "). " + Строка(СтрТз.СсылкаЗаказТрансфера) + " Диапазон старта «" + Строка(ДиапазонОтСтарта) + "», ДатаВремяОтправки " + Строка(ДатаВремяОтправки));
//

Если ДиапазонОтСтарта < (60 * (КолЧасов * 60)) Тогда

LivingStar 11.03.2015 17:47

(1) я получил ДатаВремяОтправки, это дата за вычетом требуемого количества часов от нужной даты, как мне сейчас отлавливать момент что она равна "примерно" текущаей дате?

Uho 11.03.2015 17:50

Если ТекущаяДата() > ДатаВремяОтправки И СМСещеНЕотправлено Тогда ОтправитьСМС() КонецЕсли;

LivingStar 11.03.2015 17:57

(4) да пробовал так, но как то тоже не подходит!!!
СМСЕщёНЕотправлено, это да! фильтруется в запросе, то есть уже отправленым повторно отправляться не будет. Они будут отсутствовать в выборке.

Но как то не пойму!!! В (4) тоже мне кажется не надежное и не универсальное решение. Нужно как то хитрее.

Uho 11.03.2015 18:19

5-LivingStar > в (4) необходимое и достаточное условие, что еще надо?

LivingStar 11.03.2015 18:32

(6) ну ладно завтра попробую,

вот так тогда просто

Если ТекущаяДата() > ДатаВремяОтправки

так как в выборке и так те по которым не было отправки

LivingStar 11.03.2015 18:37

() так а если там старые всякие смс по которым не было отправки, и текущая дата будет всегда больше ихней, а по ним не надо делать отправку, то есть будет контролироваться что не за час или за 8 часов а просто что текущая дата стала больше

LivingStar 11.03.2015 18:48

(6) в базе много данных, так как я отбираю за год, то там есть и документы за несколько месяцев, что просто попадут под условия, а нужно за 8 часов и за час.

qweqwe123123 11.03.2015 19:17

зачем тогда за год?

VZ 11.03.2015 21:53

(0) ЗАЧЕМ?
Цель раскрой, время-то тебе зачем? Если ты спамишь, спамера интересует размер кучи говна, кою на бедных пользователей вываливаете, а время-то зачем? Извращенное удовольствие?
Или что-то техническое?

DeiMos 11.03.2015 22:21

Как вариант, моя контора спамит наших клиентов порядка 10000 рассылок СМС в день.
В каждой из них написано: "Мы тебе кучу бабла заслали".

DeiMos 11.03.2015 22:23

Так вот время - интересует провайдера СМС.
Если мы чё-то 30 тысяч счастливчиков осчастливить готовы деньгами, то провайдер чё-то сопротивляется 30 000 СМС.

VZ 12.03.2015 00:01

13-DeiMos > Дык провайдеру время зачем? Его объем интересует: в количестве рассылок, и в мегабайтах в общем.

LivingStar 12.03.2015 06:27

(10) подразумевая то что заказы в документах могут делаться на длительный период вперед, за год что бы не потерять такие

LivingStar 12.03.2015 06:29

(11) это смс информировании клиента о заказанной услуге, в данное время менеджеры делают это по кнопке из документа

к каждому документу привязано дата время предаставляемой услуги услуги, нужно автоматизировать отправку смс за 8 часов и за 1 час

LivingStar 12.03.2015 06:52

как вам вот такое решение?

Если ДатаВремяОтправки < ТекущаяДата() и ДатаВремяОтправки > ТекущаяДата()-60*(КолЧасов*60) Тогда


ДатаВремяОтправки становится меньше ТекущаяДата() и ДатаВремяОтправки больше ТекущаяДата() минус час или 8 часов

то есть как только ДатаВремяОтправки попадает в промежуток за 8 часов или за 1 час в который нужно отправить смс, так как регламентное задание выполняется примерно каждые 3 минуты, погрешность будет не большая

Uho 12.03.2015 10:34

8-LivingStar > по "старым" ты должен заранее позаботиться и не включать их в выборку

qweqwe123123 12.03.2015 14:02

17-LivingStar > это за 8 часов она у тебя 160 раз уйдёт. клиент порадуется. веди учёт фактов отправки смс.

Uho 12.03.2015 14:26

19-Зелёный тролль > см.(5)


Текущее время: 15:03. Часовой пояс GMT +3.