Имя: Пароль:
1C
 
Как передать "клиенту" с "сервера" какое-либо сообщение?
0 Frol
 
09.07.07
15:53
Ситуация в следующем: во имя увеличения скорости обработки больших массивов информации некая часть исполняемого кода перенесена на сервер 1С в виде отдельной процедуры. Но т.к. сама обработка (даже после переноса исполнения на сервер) достаточно долго выполняется, хотелось бы оповещать пользователя (сообщением или строкой состояния) о том, что обработка не зависла, выполняется и все такое. Есть ли способ передать клиенту, вызвавшему процедуру на сервере подобные сообщения?
1 zalexey
 
09.07.07
16:06
Сообщить()
2 France
 
09.07.07
16:16
(1) пробовал?
3 RomaH
 
naïve
09.07.07
16:18
ИМХО, нет - код хоть и исполняется на сервере, но даже если передашь что-то, то клиен-то в это время занят
4 RomaH
 
naïve
09.07.07
16:20
т.е. сообщить и состояние - не катят
а прочитать что-то во время исполнения кода на сервере - не получится
5 Immortal
 
09.07.07
16:24
и чем это интересно занят клиент?
(я про состояние())
6 RomaH
 
naïve
09.07.07
16:28
(5) в каком релизе Состояние на сервере отрабатывает?
7 Deteur
 
09.07.07
16:30
(6) Ни в каком
8 RomaH
 
naïve
09.07.07
16:32
было предложение использовать подсистему анализа данных

т.е. перед выполнением в РС пишешь входящие параметры, после выполнения - время

и в следующий раз - получаешь примерное время выполнения

но все-равно все висеть будет
т.е. лучшее что получишь средствами 1С это статическую надпись во сколько это все примерно закончится
9 Immortal
 
09.07.07
16:38
(6) передать на клиента в смысли.
10 RomaH
 
naïve
09.07.07
16:39
(9) ну допустим передал - что дальше?
11 zalexey
 
09.07.07
16:43
(2) а что вроде работает.
Смотри в УТ общий модуль "УправлениеЗапасамиПартионныйУчет" выполняется только на сервере. Сообщения о том что не списано по партиям пользователь видит.

Состояние не прокатывает. Что не так?
12 Immortal
 
09.07.07
16:53
(10) ну и усё. вот в (11) мысль=)
в том смысле что это конечно же будет прерывание твоей процедуры на серваке, т.к. распараллеливания нету,ну так по другому имхо никак.
13 vde69
 
09.07.07
17:01
да в общем нет проблемм...

есть довольно много способов, например:
в модуле обьекта (например обработки) обьявляем экспортную величину и форму которая должна отрабатывать (например с индикатором)

далее перед запуском серверной процедуры запускаем обработчик ожидания куда подключам форму которая берет данные из своего модуля, а на сервер передаем ОБЪЕКТ обработка (не путать с формой) и он там будет менять переменную...

зы на 8.1 такое НЕ РАБОТАЕТ!
14 France
 
09.07.07
17:02
(11) а там не написано "Если Клиент" и все в таком духе?.. глянь внимательно..
15 zalexey
 
09.07.07
17:14
(14) нет, только #Если ВнешнееСоединение
Глобальный контекст
Сообщить (Message)
Синтаксис:
Сообщить(<Текст сообщения>, <Статус>)
Параметры:
<Текст сообщения> (обязательный)
Тип: Строка. Текст сообщения.
<Статус> (необязательный)
Тип: СтатусСообщения. Статус сообщения. Определяет вид пиктограммы.
Значение по умолчанию: Обычное
Описание:
Выводит текст сообщения в окно сообщений. Если в момент вызова окно сообщений отсутствует, то будет открыто новое окно сообщений. Сообщение, в зависимости от его смысловой нагрузки, можно пометить одной из пиктограмм, входящих в предопределенный набор.

Нигде не написано, что недоступен на сервере
16 France
 
09.07.07
17:20
(15) "Описание встроенного языка. Часть 1, стр 1-99" - "недоступен на сервере предприятия"...
17 GROOVY
 
09.07.07
17:29
(0) Никак.
18 zalexey
 
09.07.07
23:49
(16) завтра на работе проверю... работало же.
19 Стальная Крыса
 
10.07.07
04:07
(13) "а на сервер передаем ОБЪЕКТ обработка ..."
интересно как его передать ?  :)
20 RomaH
 
naïve
10.07.07
07:15
а может, того, повесить в трей екзешник какой-нибудь и пусть 1С с сервера передает ему что-нибудь
21 oleg_km
 
10.07.07
09:29
В 8.1 реально работает:
Клиент запускает фоновое задание и слушает сокет, а сервер из фонового задания на сокет клиенту пуляет сообщения. Нельзя только снять задание, и то просто не заморачивались, а ток полный асинхрон
22 Регистратор
 
10.07.07
09:29
можно структурировать код так чтоб вместо одного вызова процедуры она могла вызываться в цикле который выполняется на клиенте и каждый цикл сообщать о состоянии обработки
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший