Имя: Пароль:
1C
 
выявление момента времени для запуска на выполнение кода
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) Да с менеджментом же все зафиксировано там. Если заказ не актуальный он и делается не актуальным!!! В запросе сейчас к сатти нужно добавить будет эти условия, спасибо что напомнили!!!