Имя: Пароль:
1C
1С v8
Как замутить чат в 1С 8.2 без обработчика ожидания?
, ,
0 zsergey
 
19.01.14
10:47
Не нравиться мне реализация с ОбработчикомОжидания. Пользователей ожидается много (до 200), пусть периодичность опроса сообщения будет 5 сек, уже нагрузка на базу. Какие еще могут быть варианты? ВК не предлагать, интеграция с ICQ сервисами, и прочую лабуду не предлагать, нужно сделать час в пределах базы.
1 zsergey
 
19.01.14
10:49
"нужно сделать час" -> нужно сделать чат
2 jsmith82
 
19.01.14
10:49
>>ВК не предлагать
у ВК тоже много глюков, тоже нажимаешь Обновить
3 xReason
 
19.01.14
10:50
Ты видимо никогда не программировал. Все чаты работают через своего рода "Обаботчики ожиданий"
4 jsmith82
 
19.01.14
10:50
(3) я писал обработчики для 386-го, когда ты под стол пешком ходил
в чём проблема
5 jsmith82
 
19.01.14
10:51
(3) прости )))
6 jsmith82
 
19.01.14
10:52
ну а реально, в чём проблема
тоже сейчас стоит такая задача
7 zsergey
 
19.01.14
10:55
Да нет никакой проблемы! Погу написать этот чертов чат за 30 мин. МНЕ ПРОСТО ИНТЕРЕСНО, можно ли как-то по другому, может я что-то не знаю :)) Что вы так накинулись?
8 jsmith82
 
19.01.14
10:57
>>уже нагрузка на базу
имхается,  тут пошла нить неверных дум
9 jsmith82
 
19.01.14
10:57
либо Обновить, либо Обработчик
одно из двух
10 xReason
 
19.01.14
10:58
(4) Наезды не обснованные
11 jsmith82
 
19.01.14
11:00
(10) я извинился. попутал с ТС )
12 zsergey
 
19.01.14
11:03
в общем ясно, тему можно закрывать :)
13 jsmith82
 
19.01.14
11:06
(12) ясно что? что либо прерывания, либо обновить? ну это очевидно
14 zsergey
 
19.01.14
11:08
ясно, что по другому никак. Достал ты уже :)
15 Зойч
 
19.01.14
11:18
Поле HTML - и любой чат на выбор
16 jsmith82
 
19.01.14
11:19
(15) там движок старый. не прокатит
17 AlexITGround
 
19.01.14
11:27
Тема интересная, поэтому UP-ну
18 oleg_km
 
19.01.14
11:36
У нас подсистема Сообщения использует WinSock. Даже здесь на мисте неоднократно писалось. Использую лет 10, еще на фокспре, идаже раноше на дельфях.
19 jsmith82
 
19.01.14
11:51
(18) это на аппаратном уровне типа?
20 jsmith82
 
19.01.14
11:52
расскажи подробней. я сейчас как раз пишу подсистему на овер 100 людей
21 jsmith82
 
19.01.14
11:53
а, всё, понял. риквест пакет
22 oleg_km
 
19.01.14
12:09
(19) Где тут аппаратный уровень? Голимое API. Просто клиент опрашивает базу не по таймеру, а при запуске создает слушающий сокет UDP, регистрирует сеанс со своим IP и портом в базе. Когда отправитель отправляет сообщение, то он смотрит в базе сеансы пользователей и рассылает им датаграммы. Клиент получает датаграмму и делает запрос в базу: есть ему сообщение. Схематично это выглядит так
23 jsmith82
 
19.01.14
12:10
(22) ок
24 1СКонсультант
 
19.01.14
12:37
Простите за тупой вопрос, но я в этом плане нуб. А зачем обработчик ожидания? Я так себе представляю - сделать чат в виде дс и поставить автообновление 5 секунд и не парится. В чем трудность?
25 oleg_km
 
19.01.14
12:46
(24) В чем отличие обработчика ожидания и автообновления? Вернее, как на 1С можно реализовать автообновление, кроме как используя обработчик ожидания?
26 jsmith82
 
19.01.14
12:51
(25) +100500
27 sikuda
 
19.01.14
13:00
(0) сделать чат не средствами 1С(nodejs), а хранить данные в 1С - не думал этом?
28 sikuda
 
19.01.14
13:02
Вот даже есть база с которой начать http://infostart.ru/public/202956/
29 IamAlexy
 
19.01.14
13:03
(0) ну сделай динамический список выводящий сообщения чата..
чо ты как маленький.. в  нем поставь по умолчанию период обновления 3 сек..  и все.
30 zsergey
 
19.01.14
13:12
(28,29) не пойдет, у нас база в режиме ОП (УПП)
А на HTML в ОП не взлетит, если верить в (16)
31 1СКонсультант
 
19.01.14
13:29
(25) в настройке списка ставишь автообновление и все
32 Злопчинский
 
19.01.14
13:35
(29) вот нафейхоа обновлять каждые 3 секунды.. если состояние изменяется например непредсказуемо...? сообщение пришло - вот пусть ТОГДА и автообновляется
33 vlandev
 
19.01.14
13:56
Может какую-то хранимку умную написать в скуле , ну или там фоновое задание , которое будет событие посылать клиенту , а у клиента по событию будет обработчик срабатывать? Такой вариант можно на 1С реализовать?
34 Злопчинский
 
19.01.14
14:02
(33) ну, на клюшках в файловом варианте чаты такие есть - ставится отслеживание папки/файла - как изменение произошло - генерится внешнее событие - 1Ска его отрабатывает шттано. как в снеговике - видимо все сложнее.. особенно в тонких клиентах..
35 DrLekter
 
19.01.14
14:09
Подписка на событие - не?
36 sda553
 
19.01.14
14:14
(0) Никак. Любой обработчик внешнего события после подключения физически так же опрашивает сервер с некоторой периодичность, не появилось ли нового сообщения для него.
Т.е. создает ту же нагрузку на сервер.
37 oleg_km
 
19.01.14
14:37
(36) Winsock не создает ту же нагрузку, что и автообновление
38 sikuda
 
19.01.14
15:12
(30) html поле само может опрашивать сервер, без 1С.
И для тебя будет откровением, но средства урезанного IE7 в 1С на порядок богаче нативных 1С. Проблема с html в 1С только одна - как-же сделать совместимое IE7 и html5.
39 Лефмихалыч
 
19.01.14
16:30
(0) если отказаться от идиотской идеи делать чат в базе, то и проблем с обработчиками ожиданий не будет.
Юзайте почту, джабер или что угодно еще
40 oleg_km
 
19.01.14
16:37
(39) Почему почта не является базой?
41 IamAlexy
 
19.01.14
16:38
еще раз тупому объясните - чем динамический список то не угодил ?
42 oleg_km
 
19.01.14
16:40
(41) Ну типа если пользователю никто не пишет, то он втупую дергает базу. А как в этом случае первоначальный вызов организовать? Ведь пользователь не будет весь день пялиться в динамический список
43 Лефмихалыч
 
19.01.14
16:40
(41) динамический список не может самопроизвольно открыть поверх всего, когда пришло самое важное за весь день сообщение "Привет, как дела"
44 Котокот
 
19.01.14
16:43
(43) Может
45 mrDSide
 
19.01.14
16:59
(0) На сервере фоновый процесс запусти (Регламентное задание), которое будет обрабатывать твой регистр и отправлять нужным пользователям сообщения (каждый клиент сам будет писать сообщение и адресата в регистр).
46 GANR
 
19.01.14
17:12
(0) ActiveX какие-нибудь прикрутить, сокеты.
47 Torquader
 
19.01.14
17:27
На самом деле, если брать поле html-документа, то из него можно сделать запрос к серверу, без запроса никак не взлетит, но никто не говорит, что сервер должен сразу ответить.
Обычно, сервер сразу отвечает заголовком, а потом несколькими порциями с интервалами в несколько минут передаёт информацию о событиях.
Я, например, для этого писал специальный сервер на php, который открывает на каждого клиента отдельное соединение, и, если клиенту нужно что-то сообщить, то пишет в указанный сокет информацию, а если событий какое-то время нет, то посылается пустой пакет обмена, чтобы соединение не рвалось по тайм-ауту.
48 mrDSide
 
19.01.14
17:53
(45) +
Глобальный контекст (Global context)
ПоказатьОповещениеПользователя (ShowUserNotification)
Синтаксис:

ПоказатьОповещениеПользователя(<Текст>, <НавигационнаяСсылка>, <Пояснение>, <Картинка>)
Параметры:

<Текст> (необязательный)

Тип: Строка.
Текст оповещения.
<НавигационнаяСсылка> (необязательный)

Тип: Строка.
Навигационная ссылка. Показывается как гиперссылка. При нажатии на нее происходит переход по указанной ссылке.
<Пояснение> (необязательный)

Тип: Строка.
Пояснение оповещения.
<Картинка> (необязательный)

Тип: Картинка.
Картинка, которая будет показана в оповещении.
Описание:

Показывает окно, по умолчанию располагающееся внизу экрана, которое постепенно затухает и исчезает с экрана.
В окне может располагаться ссылка, выбор которой вызывает определенные для ссылки действия (например, открытие формы).

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.
Примечание:

Ссылка выдается, если указан параметр <Пояснение>.

сюда ссылку на запись регистра.
49 George Wheels
 
19.01.14
18:12
Мне понравилось (35). Создать левый справочник, документ,... и подписку на событие.
50 mrDSide
 
19.01.14
18:45