Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Пауза при выполнении кода без внешних компонент

Пауза при выполнении кода без внешних компонент
Я
   daixiao
 
24.07.18 - 11:23
Ребята, простите, но оставлю тут ещё один способ для вас и будущего меня.

Посидел я, подумал и родил такую процедуру для вставки паузы при проведении документов в старой УТ. На удивление, работает. ХТТП и ФТП тоже тестил. Там не работает, ошибка генериться раньше, чем таймаут пройдёт.

Процедура Пауза(ДлительностьВСекундах) Экспорт
    Если ДлительностьВСекундах>0 Тогда
        Попытка
            Профиль = Новый ИнтернетПочтовыйПрофиль;
            Профиль.АдресСервераSMTP = "8.8.8.8";
            Профиль.Таймаут = ДлительностьВСекундах;
            Профиль.ПортSMTP         = 25; 
            Почта = Новый ИнтернетПочта;
            Почта.Подключиться(Профиль);
        Исключение
        Конецпопытки;
    КонецЕсли;
КонецПроцедуры
 
 
   Fragster
 
1 - 24.07.18 - 11:31
могут забанить, пинг локалхост или даже слип.экзе надежнее
   Локи-13
 
2 - 24.07.18 - 11:36
ЗапуститьПриложение("powershell -command ""& {Start-Sleep -Seconds 30}""",,Истина);
   Nikoss
 
3 - 24.07.18 - 11:38
какова практическая ценность "Пауза при выполнении кода"?
   Локи-13
 
4 - 24.07.18 - 11:41
(3) полно. любой демон требует паузы
   Локи-13
 
5 - 24.07.18 - 11:45
например, фоновое задание, которое должно каждый 5 секунд что-то делать, при этом сохранять состояние между вызовами.

Проще это реализовать как демона с паузой 5 сек.
   Лефмихалыч
 
6 - 24.07.18 - 11:46
(5) много ли добра в таких заданиях?..
   Лефмихалыч
 
7 - 24.07.18 - 11:46
(2) спасибо, запомню
   Локи-13
 
8 - 24.07.18 - 11:49
(6) обычно это многопоточка + варианты с бэкендом, когда нужен быстрый отклик, но инициализация занимает более 5 секунд
   daixiao
 
9 - 24.07.18 - 11:51
(1) Кто забанит? 8.8.8.8? Там же нет никакого почтового сервера.
Вообще, хост не важен. Я как тестил, так и оставил.
Главное - порт на хосте не должен reject'иться, а должен либо drop'аться, либо на нём кто-то должен висеть, но не SMTP.

Работает, например, если у вас на сервере запущен веб-сервер. Укажите 127.0.0.1:80.

(1) (2) Все другие давно перечисленные в Книга знаний: Перепроведение документов в 1С:Предприятие без блокировки других пользователей методы мне не захотелось. Ибо переедешь куда-нибудь на линукс (есть и такое в планах) и опять править.
   Fragster
 
10 - 24.07.18 - 12:00
(9) если порт будет закрыт, то у тебя ошибка будет разу же.
 
 Рекламное место пустует
   Nikoss
 
11 - 24.07.18 - 12:01
(9) и переезжать не придется никуда. Обновишь платформу и выражение из (0)
"На удивление, работает. ХТТП и ФТП тоже тестил. Там не работает, ошибка генериться раньше, чем таймаут пройдёт."
Внезапно станет, на удивление, не работать))
   Fragster
 
12 - 24.07.18 - 12:02
(9) >Ибо переедешь куда-нибудь на линукс (есть и такое в планах) и опять править.

пинг есть и под линуксом, в http://catalog.mista.ru/public/173394/ именно он используется для организации паузы для синхронного запуска
   Garykom
 
13 - 24.07.18 - 12:07
"вставки паузы при проведении документов в старой УТ" - мдя
   Garykom
 
14 - 24.07.18 - 12:08
Сцуко когда уже поймут что есть другие более лучшие методы и главное штатные!!!!
   Fragster
 
15 - 24.07.18 - 12:09
(13)(14) вот ты глумишься, а у меня когда-то робот так последовательность круглосуточно восстанавливал - по документу в секунду.
   almar
 
16 - 24.07.18 - 12:09
Необходимость в паузе есть, если генерируешь пароли, используя Новый ГенераторСлучайныхЧисел. Если его 2 раза запустить в одну и ту же секунду, то он выдаст одинаковые случайные числа. Я использовал для паузы
ТД=ТекущаяДата();
Пока ТД=ТекущаяДата() Цикл
КонецЦикла;
   Fragster
 
17 - 24.07.18 - 12:10
(16) >Необходимость в паузе есть, если генерируешь пароли, используя Новый ГенераторСлучайныхЧисел. Если его 2 раза запустить в одну и ту же секунду, то он выдаст одинаковые случайные числа.

нет
   Garykom
 
18 - 24.07.18 - 12:10
   Fragster
 
19 - 24.07.18 - 12:10
(18) ага, в фоновом задании...
   Nikoss
 
20 - 24.07.18 - 12:11
(16) еще и проц вешать, не комильфо
   Garykom
 
21 - 24.07.18 - 12:13
(19) Извини но ты смешал в кучу.
Кто тебе мешает периодически проверять и запускать фоновое снова или не запускать если еще старое не закончилось?
   Fragster
 
22 - 24.07.18 - 12:14
(21) ты вообще пробовал запускать фоновые раз в секунду?
   Fragster
 
23 - 24.07.18 - 12:16
это ты смешал вы кучу. в (4), (5), (8) все объяснено. если старт задания сравним с временем выполнения задания, то зачем перегружать? Проблемы при массовом одновременном входе в 1с не ловил никогда?
Вон, во фреше вообще общая очередь заданий сделана, чтобы не перегружать большим количеством одновременных запусков сервера.
   Garykom
 
24 - 24.07.18 - 12:18
(22) ОК кто мешает помещать задания в общую очередь через обработку ожидания?
   Fragster
 
25 - 24.07.18 - 12:26
(24) а выполнять очередь кто будет? конкретный случай в (15) - фоновое получало границу последовательности, проводило следующий документ, если последовательность сбита, затем делало паузу в 1 секунду и все по кругу.
   Garykom
 
26 - 24.07.18 - 12:29
(25) А выполнять фоновое, причем всего одно и может разные задания не только последовательность восстанавливать но и еще что заложишь.
   Fragster
 
27 - 24.07.18 - 12:29
(26) а в фоновом дергать твою очередь заданий без паузы?
   Garykom
 
28 - 24.07.18 - 12:29
(26)+ Фоновое крутится всегда, проверяя нет ли новых заданий.

А задания помещаешь с нужными паузами.
   Fragster
 
29 - 24.07.18 - 12:29
не тупи...
   Fragster
 
30 - 24.07.18 - 12:31
повторяюсь, восстановление последовательности со скоростью один документ в секунду (чтобы не мешать остальным пользюкам)
   Garykom
 
31 - 24.07.18 - 12:32
(30) Я тебя понял, просто реализовал самым простейшим способом работающим.
   Fragster
 
32 - 24.07.18 - 12:46
(31) я понимаю этот способ (висящий клиент) во времена 7.7, но во времена 8 уже нет. Даже ответа на (27) не вижу, не говоря уже о том, что с клиента запихивать что-то одинаковое раз в секунду в некую очередь неэффективно. когда там есть разнообразие заданий, или, например, они должны генериться по событию - тогда да. И то, клиент тут не нужен, события должны прилетать в веб сервис, пулинг не эффективен.
   daixiao
 
33 - 24.07.18 - 14:07
(14) Ишь ты.) Это какие? Современные штатные платформенные средства - есть, не спорю. А использовать их как? Переписать процедуру ЗаполнениеДокументов.ВыполнитьВосстановление и перепроверять при обновлении конфы? Свою процедуру ваять?

(11) (10) Да, есть такое. Имейте в виду, если рискнете использовать.

(12) ping есть и под линуксом. Но перед использованием лучше сравнить параметры, они различаются. "ping.exe /?", "man ping".
 
 
   Локи-13
 
34 - 24.07.18 - 14:31
(9) powershell под линуксом тоже есть
   Fragster
 
35 - 24.07.18 - 14:35
(33).3 если посмотришь исходники из (12), то посмотришь, что это там учитывается.
   Fragster
 
36 - 24.07.18 - 14:35
(34) из коробки?
   Fragster
 
37 - 24.07.18 - 14:35
тогда уж лучше sleep


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует