Имя: Пароль:
1C
 
Запуск на выполнение регламентированного задания
0 LivingStar
 
06.03.15
12:30
Есть регламентированное задание. Которое будет запускаться с каким то промежутком времени. Суть его, выбрать документы и отправить смс по установленным в них номерам. Но отправка смс должна производиться за час от даты в документе и за 8 часов. Как это целесообразно правильнее сделать в коде, что с чем сравнивать, что то не дойдет.

есть выборка документов, я иду по ней перебором, как определять что до даты документа остался час, или 8 часов???
1 Остап Сулейманович
 
06.03.15
12:36
(0)
ПрошелЧАС = (ТекущаяДата() - ТвойДокумент.Дата) > 3600;

Прошло8Часов = (ТекущаяДата() - ТвойДокумент.Дата) > (8 * 3600);
2 DrZombi
 
гуру
06.03.15
12:36
(0) Используй смещение времени.
Лучше реализовывать все это через Еще один РС, где будешь проставлять Дату создания Записи для Отправки СМС.
3 Ёпрст
 
06.03.15
12:36
сравнить с текущаяДата
©КапитанОчевидность
4 LivingStar
 
06.03.15
12:49
(1)(2)(3) спасибо!
(2) так документов много, будут много записей в этот регистр попадать

я решил заносить дату отправки в тч документа, сейчас вот решаю как сравнивать
5 SanGvin
 
06.03.15
12:55
плоский регистр сведений, + сравнение с текущей датой в запросе (со смещением даты дока)
6 LivingStar
 
06.03.15
13:05
(5) не совсем понимаю ((((
7 SanGvin
 
06.03.15
16:33
(6) делаешь регистр сведений, 1 измерение (наприме рссылка над документ), ресурсов два - отправка за 8 ч и отправка за 1 ч (можно и иначе - запилить еще изменение напрмиер с количеством часо до отправки, но так проще)

Потом в запросе выбираешь документы, джойнишь на регистр, смотришь, где не заполнены флаги отправки.

Условие по дате относительно текущей даты делаешь. Для манипуляции с датами в запросе помоему функция ДОБАВИТЬКДАТЕ есть. Принимает отрицательные значения.
8 LivingStar
 
08.03.15
11:21
(1) как бы поточнее определять время до нужной даты, за час и за 8 часов, веть просто знаки сравнения могут влиять и на рузные даты вообще если будет совпадать условие
9 LivingStar
 
08.03.15
11:27
(8+) есть то есть дата1 и другая дата2 которая больше даты1 на неопределенное количество часов или дней

как выявлять момент когда дата1 осталось 8 часов до дата2 и час до дата2 ?
10 Остап Сулейманович
 
08.03.15
12:34
(9) Птля... Да по аналогии же.
Например.

ВремяСтарта1Час = ТвойДокумент.Дата + 3600;
ВремяСтарта8Час = ТвойДокумент.Дата + 8 * 3600;

// Для 1-го старта
ДиапазонОтСтарта = ТекущаяДата() - ВремяСтарта1Час;
//Так я определяю модуль числа еще со времен 7-ки
//возможно в 8-ке что то поменялось
//но меня устраивает и так
ДиапазонОтСтарта = МАКС(ДиапазонОтСтарта, -ДиапазонОтСтарта);

//Если мы в интервале 1-а минута
Если ДиапазонОтСтарта < (60) Тогда
    Сообщить("По команде ""Ложись"" - ложись.");
//Если мы в интервале 10ть минут
ИначеЕсли ДиапазонОтСтарта < (60*10) Тогда
    Сообщить("Всем занять позицию низкого старта");
Иначе
    Сообщить("Можно пить пиво. Либо еще рано впадать в отчаяние, либо уже все полимеры съедены");
КонецЕсли;
11 LivingStar
 
08.03.15
14:45
(10) Ок спасибо! Нужно просто тщательно самому поразмыслить. Спасибо за пример!!!
12 LivingStar
 
10.03.15
13:27
у кого есть ещё какие идеи по отправке смс????

к примеру сейчас планирую выполнение старта
13 LivingStar
 
10.03.15
13:33
(10) ТекущаяДата()  - ДатаВремяОтправки дало - 7076

что это дает мне понятно
14 LivingStar
 
10.03.15
13:37
(7) время отправки за 1 час и за 8 часов учел, регистр сведений для этого не обязателен, но как мне делать отправку??? как отлавливать момент старта, по какому условию?

из (10) не совсем понятно
15 LivingStar
 
10.03.15
13:38
нет четкого представления как определять момент запуска старта за 8 часов и за 1 час
16 LivingStar
 
10.03.15
15:04
(10) что у вас означает вот эта строка?

ДиапазонОтСтарта = МАКС(ДиапазонОтСтарта, -ДиапазонОтСтарта);

максимум из одного и того же значения, второе со знаком минус
17 LivingStar
 
10.03.15
16:06
(10) как вы тут сравниваете 2 даты? одну с минусом? на этом ошибка вылетает

ДиапазонОтСтарта = МАКС(ДиапазонОтСтарта, -ДиапазонОтСтарта);
18 LivingStar
 
10.03.15
16:39
в принципе разобрался с (10) запустил у себя не знаю как будет отрабатывать
19 LivingStar
 
11.03.15
16:18
у меня ДиапазонОтСтарта = 4976040

ТекущаяДата() - 13.01.2015 6:00:00 = 4976040

подскажите как тут быть?

а 60 * (КолЧасов * 60) = 28800 всего
20 LivingStar
 
11.03.15
16:22
не пойму с чем что сравнивать:

как то это не клеится:

        // КОЭФФИЦИЭНТ ЧИСЛОВОЙ РАЗНИЦЫ С НСО
        Если ЗначениеЗаполнено(СтрТз.СсылкаЗаказТрансфера.вгтГород2.ЧасоваяРазницаСНовосибирском) Тогда
            РазницаСНСО = Число(СтрЗаменить(СтрТз.СсылкаЗаказТрансфера.вгтГород2.ЧасоваяРазницаСНовосибирском, "+", ""));
        Иначе
            РазницаСНСО = 0;
        КонецЕсли;
        // ДАТА ВРЕМЯ ПОДАЧИ ТРАНСПОРТА ПЕРЕВЕДЕННОЕ В НОВОСИБИРСКОЕ ВРЕМЯ
        Если РазницаСНСО >= 0 Тогда
            ДатаВремяПодачиТранспортаНСО = СтрТз.СсылкаЗаказТрансфера.ДатаВремяПодачиТранспорта + (РазницаСНСО * 3600);
        Иначе
            ДатаВремяПодачиТранспортаНСО = СтрТз.СсылкаЗаказТрансфера.ДатаВремяПодачиТранспорта - (РазницаСНСО * 3600);    
        КонецЕсли;
        // ВРЕМЯ ОТПРАВКИ ПЕРВОГО СМС ЗА 8 ЧАСОВ ДО ДАТЫ ВРЕМЕНИ ПОДАЧИ ТРАНСПОРТА ПО НОВОСИБИРСКУ
        //ДатаВремяОтправкиЗа8Часов = ДатаВремяПодачиТранспортаНСО - 8 * 3600;
        // ВРЕМЯ ОТПРАВКИ ВТОРОГО СМС ЗА 1 ЧАС ДО ДАТЫ ВРЕМЕНИ ПОДАЧИ ТРАНСПОРТА ПО НОВОСИБИРСКУ
        //ДатаВремяОтправкиЗа1Час   = ДатаВремяПодачиТранспортаНСО - 3600;
        //
        // ДАТА ВРЕМЯ ПОДАЧИ ТРАНСПОРТА ЗА ВЫЧЕТОМ НЕОБХОДИМОГО КОЛИЧЕСТВА ЧАСОВ ДЛЯ ОТПРАВКИ СМС
        ДатаВремяОтправки = ДатаВремяПодачиТранспортаНСО - КолЧасов * 3600;
        //                
        ДиапазонОтСтарта  = ТекущаяДата() - ДатаВремяОтправки;
        ДиапазонОтСтарта  = МАКС(ДиапазонОтСтарта , -ДиапазонОтСтарта);
        //
        Сообщить(Строка(н) + "). " + Строка(СтрТз.СсылкаЗаказТрансфера) + " Диапазон старта  «" + Строка(ДиапазонОтСтарта) + "», ДатаВремяОтправки " + Строка(ДатаВремяОтправки));
        //
        Если ДиапазонОтСтарта < (60 * (КолЧасов * 60)) Тогда
21 LivingStar
 
11.03.15
17:08
должно быть условие что высчитанное ДатаВремяОтправки должно быть больше ТекущаяДата(), ДАа ?