Имя: Пароль:
1C
1С v8
Как работает Обработчик ожидания при свернутой 1с?
,
0 БалбесВ1с
 
24.07.13
19:30
ПодключитьОбработчикОжидания("Кнопка1Нажатие",3, 0)
Если сворачиваю 1с то потом при открытии ошибка выскакивает.
Вот процедура
Процедура Кнопка1Нажатие()
Ip = ПолеВвода1;          
   Try
         strComputer = ".";
      ServicesSet = GetCOMObject("winmgmts:{impersonationLevel=impersonate}!\\" + strComputer + "\root\cimv2");
      TIMEOUT = 200 ;
      BUFFER_SIZE = 32;
      Items =  ServicesSet.ExecQuery("SELECT * FROM Win32_PingStatus where Address='" + IP + "' and BufferSize=" + BUFFER_SIZE + " and NoFragmentation=true and TimeOut=" + TIMEOUT ,,48)
   Except
      Сообщить("Исключение");
   EndTry;
  
   For Each Item  In Items Do
   Если Item.ResponseTime < 64 Тогда     
         ЭлементыФормы.Надпись1.ЦветФона     =  Новый Цвет(0,255,0);
            
   Иначе
         ЭлементыФормы.Надпись1.ЦветФона     =  Новый Цвет(255,0,0);
   КонецЕсли;
   EndDo;

КонецПроцедуры

ПодключитьОбработчикОжидания("Кнопка1Нажатие",3, 0)
1 БалбесВ1с
 
24.07.13
19:32
Сама ошибка-
Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)
Если Item.ResponseTime < 64 Тогда
2 Живой Ископаемый
 
24.07.13
19:39
в в8 есть отладка, точно говорю
3 БалбесВ1с
 
24.07.13
19:43
(2)Я и так знаю что  Item.ResponseTime = NULL если я свернул 1с.
Почему вот вопрос.
4 Живой Ископаемый
 
24.07.13
19:46
то есть вопрос не касается 1С, а сугубо определенного ком-класса и его поведения?
5 France
 
24.07.13
19:47
не достаточно проверить тип?.. или цель через 1С разобратся с событиями виндов?..
6 БалбесВ1с
 
24.07.13
19:47
Условие воткнул на NULL теперь ошибка не выскакивает,но не нравится мне так.
7 БалбесВ1с
 
24.07.13
19:48
(4)Если это касается сом класса,то я туда не полезу.Было бы это мне объяснено.
8 Живой Ископаемый
 
24.07.13
19:51
2(7) а почему? В последней "инструменты разработчика" есть WQL
На форуме есть даже ссылка на ютуб-ролик как там легко исследовать ком-классы зарегенные в винде.
9 БалбесВ1с
 
24.07.13
19:59
(8)Дело в том,что если нажатие кнопки запускать несколько раз,быстро,то  Item.ResponseTime = NULL.Видимо запускается второй ком объект,хотя первый еще не отработал.
И при сворачивании окна 1с форма как бы закрывается а потом опять открывается и не факт что не запустились 2 ком объекта одновременно.
10 Живой Ископаемый
 
24.07.13
19:59
не интересно
11 БалбесВ1с
 
24.07.13
20:00
Конечно! Это вам не мутабельность.
12 БалбесВ1с
 
24.07.13
20:02
Просто может кто встречал в типовых использование подобного.Как там интересно избегают подобного.Наверняка какие-то условия или просто я неправильно использую функционал встроенного языка.
13 France
 
24.07.13
20:02
а в чем задача? может, другой путь подскажут..
14 БалбесВ1с
 
24.07.13
20:04
(13)Да банальная задача - узнать какой канал связи используется - дсл или спутник.По величине латентности.
15 БалбесВ1с
 
24.07.13
20:05
Пригодилось бы при обменах.Если дсл упал,то ждешь его появления,а потом запускаешь обмен.
16 hhhh
 
24.07.13
20:23
(11) ну если пользователь нажимает кнопку 30 раз в секунду, разве нужно ему каждый раз цвет фона менять? Глаза у него не вылезут из орбит?
17 БалбесВ1с
 
24.07.13
21:10
(16)Это на этапе написания.Для наглядности.
Потом график можно будет сделать.
18 France
 
24.07.13
21:35
(14) так, считай эти задержки сам в 1С... ведь кодом из 0 все равно не определить канал передачи..
19 БалбесВ1с
 
24.07.13
21:39
(18)Там все и определяется)
Если Item.ResponseTime < 500 ставлю и всё.
На спутнике задержка больше 600.
Дсл 50-70мс.
20 France
 
24.07.13
21:41
(19) все равно не уловил... время задержи ничего не говорит о канале.. может у дсл хандра или критические дни??
21 France
 
24.07.13
21:42
уже, вижу... айСиЭмПи пользуешь... но стремнный вариант..
22 БалбесВ1с
 
24.07.13
21:49
Вот такая у меня хорошая корпоративная сеть)) Все закрыто - даже icmp,кроме одного ip.
Иначе бы я ключевые точки пинговал и все))
А так приходится через задержку вычислять.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.