Имя: Пароль:
1C
1С v8
Правильная замена функции Вопрос() в управляемом приложении
, ,
0 ssalikoff
 
08.02.16
17:30
На сервере выполняется сложная операция, в ходе которой время от времени нужно у пользователя запрашивать дополнительную информацию. То есть клиент должен контролировать и управлять процессом на сервере.
В обычном приложении никаких проблем не было — всегда можно было задать Вопрос() пользователю.
А как быть в управляемом приложении? Какова правильная методика решения подобной задачи?
Я вижу такое решение: на сервере выполняется операция, доходит до вопроса, текущий контекст выполнения запихивается во временное хранилище и выполняется возврат на клиент. На клиенте происходит обработка вопроса и повторный вызов серверной функции, которая вынимает контекст выполнения из временного хранилища и продолжает работу.
Решение мне не нравится, так как приходится постоянно гонять данные туда-сюда из временного хранилища.
Есть ли более "правильное" решение?
1 FIXXXL
 
08.02.16
17:33
ответить на все вопросы ДО запуска сложной операции
2 Господин ПЖ
 
08.02.16
17:34
>Есть ли более "правильное" решение?

какие "более правильные"? на клиента все равно надо выныривать
3 Провинциальный 1сник
 
08.02.16
17:40
Кушайте кактус и благодарите отцов-основателей за красивую облачную мечту 1с.
4 MaxS
 
08.02.16
17:42
Выполнить сложную операцию два раза. Первый проход фиктивный для сбора вопросов от клиента, потом окончательный.
Либо запускать процесс в толстом клиенте ))
5 Serginio1
 
08.02.16
17:47
6 ssalikoff
 
08.02.16
18:37
(2) Конечно, выныривать нужно. Никуда от этого не деться. Вот только контекст терять не хочется. Можно ли как-нибудь организовать с помощью фонового задания? Чтобы фоновое задание и клиентский процесс общались между собой через какой-нибудь буфер, оставляя там друг для друга сообщения?
7 Господин ПЖ
 
08.02.16
18:45
>Вот только контекст терять не хочется.

увы... меняйте логику тогда - 1с-ый сервер работает по "отдал и забыл"
8 Asmody
 
08.02.16
18:49
(7) любой stateless сервер работает по принципу "отдал и забыл"
9 Cyberhawk
 
08.02.16
19:45
В (4) предложение через серию фиктивных вопросов понравилось
10 Cyberhawk
 
08.02.16
19:46
Ну и (1), конечно же, как предпосылка
11 Смотрящий
 
08.02.16
20:38
ндяяя ... (8) вон про сервер начал рассказывать; основатели звездят про "отказ от модальности"; с клиента повесить callback на сервер невозможно в модели v8; уф - кастрированная реализация "окно в окне" браузера, без поддержки единого стандарта.
Клиентов 1С, клиентов Карл!, аж 4 штуки.

Это не клюшки хаффно мамонта, это снеговик нереальная подделка под программу.

А уж "ферма серверов на 1С" с рекламного ролика партнетки, это ваще за гранью
12 su_mai
 
08.02.16
20:42
(0) Какую задачу решаете, если не секрет?
13 Garykom
 
гуру
08.02.16
20:58
если лень выныривать
но нафуя тогда нырять?
на клиенте все делайте и не лезьте на сервер
не для вас он
14 EvgeniuXP
 
08.02.16
21:16
(0) не вижу проблем, здесь тоже можно спокойно выполнять код с вопросами.
15 EvgeniuXP
 
08.02.16
21:17
(0) щас можно всё круче делать, не то что раньше в 8.1 :)
16 ssalikoff
 
08.02.16
21:49
Конкретной задачи нет, моё любопытство чисто теоретическое. А когда придёт время решать, хочу знать, как правильно действовать. Хотя, как я теперь вижу, красивого решения нет. Остаётся ждать, когда 1С реализует что-то вроде web-сокетов.
17 Drac0
 
08.02.16
22:01
(16) Вот представь, дали такую возможность. И тупые 1С-ники повставляли вопросов в процедуры расчета движений документов. А потом кто-то запилил над этим групповой пересчет движений или перепроведение, запускает это регламентным заданием или еще как. И что получим в итоге?
Поэтому говн*кодить 1с-никам должно быть трудно, они должны страдать в этот момент.
18 ssalikoff
 
08.02.16
22:06
(17) Ну это очень спорный вопрос. Должна ли среда ограничивать, удерживать программиста от его же собственных ошибок? Смотря на кого ориентироваться. Если на продвинутых, то ответ будет один, если на новичков — то другой. На кого 1С ориентируется — лично мне неизвестно.
19 Drac0
 
08.02.16
22:13
(18) Над системами часто работают больше одного программиста. И этот код будет граблей для себя через год, либо для последователя.
20 su_mai
 
08.02.16
22:48
(17) Борьба с модальностью частично решает проблему "вопросов" в серверном коде.

Другое дело, желательно реализовать некий "контекст синхронизации" между сервером и клиентом, что бы можно было не возвращаясь с сервера отображать на клиенте состояние процесса обработки данных.
21 Diman000
 
08.02.16
22:59
По-моему, надо просто задачу нормально поставить. И сделать грамотную декомпозицию с т.з. непосредственной технической реализации.
С трудом представляю что это за "сложная операция" такая, которая, видимо, весьма продолжительна по времени и при этом должна регулярно спрашивать пользователя "что делать дальше".