|
0 / 0 / 0
Регистрация: 29.04.2010
Сообщений: 208
|
|
7.7 Обработка Ожидания01.03.2012, 11:11. Показов 29693. Ответов 13
Метки нет (Все метки)
Добрый день. Столкнулась с такой проблемой: необходимо с разным интервалом времени вызывать две процедуры из глобального модуля. Если разместить две ОбработкаОжидания(), выполняется только вторая. Как быть?
0
|
|
| 01.03.2012, 11:11 | |
|
Ответы с готовыми решениями:
13
Курсор ожидания c# Страница ожидания
|
|
0 / 0 / 0
Регистрация: 27.04.2008
Сообщений: 371
|
|
| 01.03.2012, 11:22 | |
|
Как вариант написать батник вызывающий эти процедуры и через планировщик заданий запускать их.
0
|
|
|
0 / 0 / 0
Регистрация: 29.04.2010
Сообщений: 208
|
||
| 01.03.2012, 11:41 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 11.12.2010
Сообщений: 107
|
|
| 01.03.2012, 11:46 | |
|
Я на ОбработкуОжидания положила процедуру, в которой потом анализировала время и уже по нему смотрела, какую из процедур вызывать дальше.
0
|
|
|
0 / 0 / 0
Регистрация: 29.04.2010
Сообщений: 208
|
||
| 01.03.2012, 11:58 | ||
0
|
||
|
1 / 1 / 0
Регистрация: 15.11.2009
Сообщений: 947
|
|
| 03.03.2012, 10:01 | |
|
У меня таких процедур аж 7. И возникают задачи:
- вызывать с разной частотой. - за один раз вызывать только одну процедуру. Иначе может упасть быстродействие вообще. А если пару процедур сработали одновременно, то "тормознет" на несколько сек. Мой Глобальный модуль: Код ( (Unknown Language)): Перем ТекВызов; // текущий счетчик вызовов Процедура Ожидание() // При старте системы Если ПустоеЗначение(ТекВызов) = 1 Тогда ТекВызов = 0; КонецЕсли; ТекВызов = ТекВызов + 1; //------ Автоснятие резерва Если (ТекВызов % 5 = 0) Тогда ОжиданиеРезерв(); КонецЕсли; //------ Сигнал или Завершение системы Если (ТекВызов % 3 = 0) Тогда ОжиданиеСигнал(); КонецЕсли; //------ Заказ товара Если (ТекВызов % 37 = 0) Тогда ОжиданиеЗаказ(); КонецЕсли; КонецПроцедуры // Ожидание Процедура ПриНачалеРаботыСистемы() ОбработкаОжидания("Ожидание", 5); КонецПроцедуры // ПриНачалеРаботыСистемы
0
|
|
|
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
|
|
| 03.03.2012, 11:09 | |
|
Дайнеко, а что это за %? не встречал такого
У меня так Код ( (Unknown Language)): Перем ТекЧас; Процедура ПриНачалеРаботыСистемы() ОбработкаОжидания("ПериодическиеПроцедур ы",300); КонецПроцедуры Процедура ПериодическиеПроцедуры() Часы = ""; ТекущееВремя(Часы); Если (ТекЧас = "") Тогда //первый запуск ВыгрузкаНаСайт(); Изменениестатусов(); Отчет30Дней(); БитыеСсылки(); ИначеЕсли Часы<ТекЧас Тогда// следующий день ВыгрузкаНаСайт(); Изменениестатусов(); Отчет30Дней(); БитыеСсылки(); ИначеЕсли (ТекЧас+1 = Часы) Тогда//новый час ВыгрузкаНаСайт(); Изменениестатусов(); КонецЕсли; ОтправкаСМС();// каждые пять минут ТекЧас = Часы; КонецПроцедуры
0
|
|
|
0 / 0 / 0
Регистрация: 29.04.2010
Сообщений: 208
|
||
| 04.03.2012, 14:42 | ||
0
|
||
|
1 / 1 / 0
Регистрация: 24.07.2008
Сообщений: 658
|
|
| 04.03.2012, 15:00 | |
|
Гы, я тоже не знал про %
Век живи, век учись В ЖКК нашел % - остаток от деления, при выполнении оба операнда округляются до целого
0
|
|
|
1 / 1 / 0
Регистрация: 15.11.2009
Сообщений: 947
|
||
| 04.03.2012, 21:41 | ||
Таким приемом я попытался сбалансировать нагрузку. Вот во фрагменте puh14 процедуры вызываются каждый час. И если уж бабахнуло, то отработали все процедуры сразу. Если они тяжеловесные, то у пользователя 1С замрет на несколько сек. У меня же: - проверка вызывается частенько (секунд 5) - меленькие можно вызывать каждый раз. Например, обмен сообщениями. - остальные, с коэффициентом. Получается частота их вызова в сек = 5*Кфц. - коэффициенты указываю не кратные друг другу. Лучше всего простые числа. Это гарантирует, что за один вызов Ожидания() сработает только одна проца. Хотя надежней и поставить после каждой "Возврат" С этим делом надо аккуратно. Представьте сидит человек 30 в базе. И у всех каждые н секунд бабахает вроде "Отчет30Дней()". А поставишь ОбработкаОжидания(,300); - потеряешь оперативность.
0
|
||
|
0 / 0 / 0
Регистрация: 29.04.2010
Сообщений: 208
|
||
| 05.03.2012, 10:55 | ||
Как это побороть?
0
|
||
|
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
|
||
| 05.03.2012, 18:06 | ||
|
Списибо, буду знать про %.
Насчет одновременно бабахнуло - у меня выгрузки, отправки мыла и т.п. повешены на отдельного пользователя "Бендер" - потому как робот. У остальных пользователей периодические отчеты вызываются - но я их на прямые запросы переписал, посему тормозов нет.
Процедура ПриНачалеРаботыСистемы() Если ИмяПользователя() = "Робот" Тогда ОбработкаОжидания("ПериодическиеПроцедур ы",300); КонецЕсли; КонецПроцедуры Вешаете скриптик (или батник) запускающий нужную базу с этим пользователем в планировщик задач и все. У меня этот робот трудится в отдельной всегда работающей терминальной сессии, чтобы всегда подруился, посмотрел как работает.
0
|
||
|
1 / 1 / 0
Регистрация: 15.11.2009
Сообщений: 947
|
||
| 06.03.2012, 00:04 | ||
"Проверка" - периодический вызов процедуры указанной в ОбработкаОжидания(). "Сработала процедура" - выполнилось в "Проверке" некоторое условие и запустилась вторая процедура, выполнившая некоторую полезную работу. Какие приемы: 1) Первая ситуация: процедура должна срабатывать каждый час (каждые N минут). Если люди работают в терминале, то надо поставить срабатывание не проверкой часов компьютера: снял ТекущееВремя() и проверил, что минут=0 (думаю, понятно, почему). А по отсчету от момента запуска 1С. Например, если проверка вызывается каждые 10 сек., а полезную работу выполнять каждый час, то сверять, что счетчик вызовов кратен 3600/10. (Вот сдесь и нужен коварный знак "%"!) 2) Вторая ситуация: сработать раз в день, но в установленное время. Чтобы часы на всех компах сработали по-разному, нужно сверять время, но добавить +/- несколько секунд. Например, прибавить "Пользователь.Код". 3) После того как добились асинхронной работы пользователей, боремся с дублированием. Разумеется, надо продумать, что когда проц-ра отработает у одного пользователя, то когда она вызовется у другого пользователя, повторения результата быть не должно, новый док-т не запишется. Так у меня работает снятие резерва. У первого пользователя создался документ СнятиеРезерва, резерв снялся. У второго пытается сделать тоже, но 1С проанализировала, что резерва нет и пустой документ не записывает. Только нужна разбежка про времени. Считаем, что процедура отрабатыввает 2 сек. Значит проверка должна быть не чаше 5-10 сек. 4) Прием с константой-семафором. Перед отработкой процедуры ставится что-то в константу. Другие программы видят ее и ничего не делают. 5) Способ Puh14 с "зомби" - реальный. Но ориентирован на большую контору, которую, хорошо бы, и сам программист обслуживал.
0
|
||
|
0 / 0 / 0
Регистрация: 29.04.2010
Сообщений: 208
|
|
| 10.03.2012, 11:59 | |
|
Всем спасибо за советы, думаю, они мне помогут.
0
|
|
| 10.03.2012, 11:59 | |
|
Помогаю со студенческими работами здесь
14
Таймаут ожидания Режим ожидания Функция ожидания Анимация ожидания Анимация ожидания Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|