|
выявление момента времени для запуска на выполнение кода | ☑ | ||
---|---|---|---|---|
0
LivingStar
11.03.15
✎
17:43
|
Задача, сделать рассылку смс за 8 часов и за 1 час. Есть регламентированное задание которое запускается примерно каждые 3 минуты. В нем делается запрос документов в течении года. Высчитывается дата от которой нужно делать отправку смс:
| ДатаВремяОтправки = ДатаДок - КолЧасов * 3600; | как действовать потом? Как выявлять момент что текущая дата уже за 8 часов от ДатаВремяОтправки, и выполнить необходимый код. Или же что текущая дата за 1 час от ДатаВремяОтправки и так же выполнить код делающий отправку смс? |
|||
1
D_E_S_131
11.03.15
✎
17:46
|
Может разделить процесс на 2 части?
1. Определяет время отправки для документов и хранит его где-то. 2. Выбирает документы с временем отправки < ТекДата() и еще не отправленные, отправляет смс, отмечает доки как отправленные. |
|||
2
DexterMorgan
11.03.15
✎
18:00
|
ТС давно тебя не слышно! Рассылка каждые три минуты документов за год это пять!
|
|||
3
D_E_S_131
11.03.15
✎
18:01
|
(2) Не ну а что такого? Шлются себе они и шлются.
|
|||
4
LivingStar
11.03.15
✎
18:02
|
(1) да пока решаю все делать в одном месте
можно же так. ВремяОтправки определяю без проблем. Можно на лету высчитывать, хранить не обязательно. С этим проблем нет. я выбираю за год документы пока, и высчитывая ДатуОтправки нужно как то сейчас при запуске каждую 3 минуту определять ДатаОтправки примерно за 8 ли часов или за час, и выполнять код или нет |
|||
5
LivingStar
11.03.15
✎
18:03
|
(3) да при отправке смс нужно исключить не верные отправки, и не отправки. Что бы четко отправлялись за 8 часов и за 1 час. Как то высчитывать это. Подошло им время или нет. Думаю погрешность 5 минут там, или сколько не страшна.
Но как так просчитывать не пойму..... |
|||
6
H A D G E H O G s
11.03.15
✎
18:06
|
(0) Здорово! Давно тебя не видел, как сам, как код?
|
|||
7
LivingStar
11.03.15
✎
18:06
|
(1) процесс можно разделить хоть на сколько частей, важно что бы был алгоритм известен. Мне сейчас не известен как просчитывать сам момент отправки и выполнять код или нет.
Ясно что в пересчете этом фигурируют 2 даты, ДатаВремяОтправки и ТекущаяДата() Учитывая что отбираю документы в пределах года, ДатаВремяОтправки могут быть любыми |
|||
8
D_E_S_131
11.03.15
✎
18:08
|
"Мне сейчас не известен как просчитывать сам момент отправки" — как регл.задание запускается, так и наступает "момент отправки".
"...и выполнять код или нет." — я предложил это сделать по условию "подошла дата отправки и еще не отправлен". |
|||
9
LivingStar
11.03.15
✎
18:12
|
(8) я так пробовал, но меня смутило то что вообще ничего не отправилось (((
У меня в цикле перебираются документы, известна ДатаОтправки так как её проверять? |
|||
10
D_E_S_131
11.03.15
✎
18:15
|
А документы у тебя перебираются всегда все с начала года?
|
|||
11
LivingStar
11.03.15
✎
18:15
|
(8) документы в выборке те по которым не отправлено смс
|
|||
12
D_E_S_131
11.03.15
✎
18:16
|
(11) Т.е. где-то отметка о том, что этот док-т отправлен все-таки ставится?
|
|||
13
LivingStar
11.03.15
✎
18:18
|
(10) в выборке делаю отбор по нужной дате, это не дата документа. Поставил что первая начало года, вторая текущая, конец дня.
(12) у документа есть тч, отправленные смс, там дата и кто отправил, и ещё колонка, отправленоЗа, так в эту колонку будет проставляться 8 или 1 (8 часов или час). И потом они ну будут уже попадать в запрос. |
|||
14
D_E_S_131
11.03.15
✎
18:20
|
А ТЧ для чего? Док-т несколько раз может отправляться?
|
|||
15
LivingStar
11.03.15
✎
18:24
|
(14) решил в эту тз писать, что была отправка за 8 часов или за час
по документу может отправляться за 8 часов и за 1 час |
|||
16
LivingStar
11.03.15
✎
18:25
|
сделать можно как угодно, но говорю, пока не понятно как отправлять, как высчитать что ДатаВремяОтправки попала в промежуток за 8 часов и выполнить отправку и так же за час?
|
|||
17
LivingStar
12.03.15
✎
06:38
|
есть у кого соображения по моменту отправки смс, как он должен высчитываться? что бы отправка производилась только тем документам по которым она от 8 часов и от 1 часа.
|
|||
18
patria0muerte
12.03.15
✎
06:50
|
Как вариант - два регистра и справочник со значениями интервалов отправки (за 8 часов, за час, за x времени):
В первом РС хранить список доков на отправку с интервалами и периоды отправки. При удачной отправке - очищать записи за определенный период Во втором (хотя чуется мне, что он нафиг не нужен) - можно хранить историю отправки... А моменты, когда нужно отправлять - фиксируй сразу при записи документа и пиши в первый РС. А его уже чеши Рег.Заданием. |
|||
19
LivingStar
12.03.15
✎
06:52
|
как вам вот такое решение?
Если ДатаВремяОтправки < ТекущаяДата() и ДатаВремяОтправки > ТекущаяДата()-60*(КолЧасов*60) Тогда ДатаВремяОтправки становится меньше ТекущаяДата() и ДатаВремяОтправки больше ТекущаяДата() минус час или 8 часов то есть как только ДатаВремяОтправки попадает в промежуток за 8 часов или за 1 час в который нужно отправить смс, так как регламентное задание выполняется примерно каждые 3 минуты, погрешность будет не большая |
|||
20
LivingStar
12.03.15
✎
06:53
|
(18) да вопрос в том что бы как это время отправки высчитывать??? вот идея появилась в (19) верная ли?
|
|||
21
patria0muerte
12.03.15
✎
07:17
|
Как... прибавил нужную цифру к дате и записал в регистр, типа как план рассылки... нафига каждый раз рег заданием лопатить все документы и динамически все даты рассчитывать... А если допустим в течении 2х часов ляжет рег. задание... по твоему методу - то что должно было отправиться в эти 2 часа - никуда не улетит впринципе...
|
|||
22
LivingStar
12.03.15
✎
07:20
|
(21) а вы как предлагаете? по кнопке отправлять?
|
|||
23
LivingStar
12.03.15
✎
07:21
|
(21) задача что бы это выполнялось автоматически
|
|||
24
LivingStar
12.03.15
✎
07:23
|
(21) как все же вы представляете момент отправки смс???? перибираются документы за неопределенный период, за год, и как выявлять каким отправлять смс??? учитывая то что смс им должно быть отправлено за 8 часов и за час от определенной даты и никак иначе?!!!
|
|||
25
patria0muerte
12.03.15
✎
07:25
|
А про рег. задание тебе я еще в (18) писал...
Суть в том, чтобы даты и время отправки рассчитывать и хранить в регистре заранее. а уже рег. задание выберет из него все, что <= текущей даты и сформирует оповещения (или что там тебе надо) Дальнейшее обсуждение с тобой бессмысленно, всегда пожалуйста.. |
|||
26
patria0muerte
12.03.15
✎
07:26
|
И вообще, все что я писал - сказали тебе еще в (1)
|
|||
27
LivingStar
12.03.15
✎
07:31
|
(26) Выбирает документы с временем отправки < ТекДата()
- говорю же у массы документов дата отправки меньше чем текущая дата, и им ненужно ничего отправлять |
|||
28
patria0muerte
12.03.15
✎
07:34
|
Ну так фиксируй не все документы, а только нужные. Чувак - тебе дали концепцию - дальше барахтайся в ней сам и делай как хочешь
|
|||
29
ShoGUN
12.03.15
✎
07:34
|
(27) А по какому условию тогда выбираются документы?
Не задача, а шиза какая-то... |
|||
30
ShoGUN
12.03.15
✎
07:35
|
Точней задача может и нормальная, но (0) не хочет её говорить, а решение - шиза.
|
|||
31
LivingStar
12.03.15
✎
07:40
|
(29) за год говорю выбираются, при учете что кт ото мог заказать услугу в начале года на исполнение в середине
условие отправки в (19) как думаете нормальное? |
|||
32
ShoGUN
12.03.15
✎
07:55
|
(31) Чему в (19) равна ДатаВремяОтправки? Как она вычисляется? Если как в (0) - то условие в (19) никогда не выполнится.
|
|||
33
LivingStar
12.03.15
✎
09:05
|
(32) Почему не выполнится???? В ноль от даты услуги, отнимается либо 8 часов либо час. получается дата меньше на 8 часов или на час. Почему условие в (19) никогда не выполнится?
|
|||
34
ShoGUN
12.03.15
✎
09:07
|
(33) Контекст того, что ты хочешь - мне лично непонятен. Что такое "дата услуги"? Это дата документа? Или ещё какая-то дата?
ЯННП. |
|||
35
hhhh
12.03.15
✎
09:20
|
(0) всё-таки жестоко так поступать с клиентами. Например, он сделал заказ год назад, он уже про это давным давно забыл. И вдруг приходит смс-ка, забирайте в течение часа. Да он копыта может откинуть от нервного стресса. Надо, думаю предупреждать хотя бы за неделю.
|
|||
36
LivingStar
12.03.15
✎
09:23
|
(34) Это не дата документа, это время к которой назначено выполнение услуги. Задача отправить смс заказчику за 8 часов и за 1 час. В (0) вычисление дат отправки, за 8 часов или за 1 час, в зависимости от значения КолЧасов.
В (19) сверка этой даты отправки смс за 8 часов или за 1 час. Находится ли дата отправки документа в этом интервале или нет. Если находится, то производится отправка смс, и запись значения в тч документа, для исключения его в дальнейших выборках. Как понимаю если условие в (19) работает, что осенило меня сегодня и не нужно больше над этим ничего мудрить, то можно запускать в работу или продумывать прописку этого все в регистры там и прочее, что бы не считать динамически. Хотя и так можно. |
|||
37
LivingStar
12.03.15
✎
09:24
|
(35) Да с менеджментом же все зафиксировано там. Если заказ не актуальный он и делается не актуальным!!! В запросе сейчас к сатти нужно добавить будет эти условия, спасибо что напомнили!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |