Имя: Пароль:
1C
1С v8
Как задать вопрос на сервере?
, ,
0 Zombi
 
18.03.14
11:12
Обработкой загружаю данные, все происходит в серверной процедуре. Хочу у пользователя спросить, не хочет ли он ручками 1 реквизит выбрать. Вопрос() доступен только на клиенте, а серверная процедура не видит клиентские. Как можно спросить у пользователя в данном случае?
1 DexterMorgan
 
18.03.14
11:13
ТС - никак.
Наверное пользователь нажимает какую то кнопку?
2 mikecool
 
18.03.14
11:13
вернуть управление на клиента, спросить, вернуть взад - все же просто
3 Aleksey
 
18.03.14
11:13
никак, по новым стандартам нужно спросить ДО отхода поезда
4 mikecool
 
18.03.14
11:13
(1) дануна?
5 ДенисЧ
 
18.03.14
11:14
Кого на сервере будем спрашивать?
6 Defender aka LINN
 
18.03.14
11:14
Серверная, тишина, и тут из стойки с сервером приложений: "Документ не провелся! Что делать?"
7 mikecool
 
18.03.14
11:14
(3) что за стандарты?
8 Aleksey
 
18.03.14
11:14
(4) А ты как думал
9 DexterMorgan
 
18.03.14
11:14
Спрашивай на клиенте кароче заранее и передавай на сервер
10 Aleksey
 
18.03.14
11:14
(2) Как???? как прервать серверную процедуру и вернуть управления на клиента, чтобы потом вернуться обратно
11 Aleksey
 
18.03.14
11:14
я на этот вопрос 3 год не могу получить ответ на этом форуме
12 Aleksey
 
18.03.14
11:15
(5) никого, вопрос спросить у клиента на кленте
13 Zombi
 
18.03.14
11:15
Непонятно, что сложного было бы в процессе выполнения серверной процедуры вернуться в клиента, спросить и ответ передать серверу.
14 mikecool
 
18.03.14
11:15
делал при подборе товара по штрихкоду - если подбирается более одного возвращал список на клиента, юзер выбираал, возвращал взад выбранное значение и продолжал процедуру далее
15 Aleksey
 
18.03.14
11:16
(13) сам в офигиваю. Главное на сервер с клиента можно в любой момент уйти, а вот обратно - фиг там
16 DexterMorgan
 
18.03.14
11:16
(2) Ага. а потом опять на сервер, а потом опять на клиент, ты наверное любишь ибацо туда-сюда
17 mikecool
 
18.03.14
11:16
+14 или я не так понял задачу в (0)?
18 bborisko
 
18.03.14
11:16
Просто вызывать с клиента серверные процедуры по очереди - придется разбить одну серверную на несколько.
19 mikecool
 
18.03.14
11:16
(16) мне пох, ибеца железо, я только формирую задачу
20 Aleksey
 
18.03.14
11:17
(14) это обратная ситуация когда ты на клиенте, и переодически сервер дергаешь
21 mikecool
 
18.03.14
11:17
+19 главное - задача работает
22 mikecool
 
18.03.14
11:17
(20) так и (0) обработкой грузит, старт наверное таки с клиента идет
23 vde69
 
модератор
18.03.14
11:18
делается так

Процедура НаКлиентеКнопка1()

Вопрос = НаСервереПодготовитьДанные();
Если ЗначениеЗаполнено(Вопрос) Тогда
//задать вопрос и ввести доп данные
КонецЕсли;
НаСервереВыполнитьПроцедуру();

КонецПроцедуры
24 Aleksey
 
18.03.14
11:19
(16) вроде бы не глупый

Дано, загрузить 20 документов

Вариант 1.
Каждый документ обрабатываем на клиенте, затем данные грзим на сервере, и так 20 раз

Вариант 2.
Все делаем на сервере и лишь при необходимости возвращаемся на клиенте


Вариант 3.
Всё грузим на клиенте в ТЗ, переодически запрашивая и проверяя данные на сервере, а затем грузим скопом ТЗ на сервере


Ну и в каком случае туда-сюда будет меньше?
25 Avganec
 
18.03.14
11:19
(0) либо через деление на блоки, либо через распараллеливаемость.
26 fisher
 
18.03.14
11:19
(0) Разбить обработку на этапы
1) предварительное сканирование с формированием списка всех вопросов пользователю
2) получение ответов на вопросы
3) окончательная обработка
(14) Можешь предложить универсальный способ сохранения серверного контекста между серверными вызовами? Пример - подготовил на сервере мега-таблицу. Начинаешь её обработку. Вернул в середине управление на клиента. Куда мега-таблицу серверную девать? В параметр сеанса паковать?
27 fisher
 
18.03.14
11:23
(26) + Хотя вру. Знаю способ. Можно через модуль с повторным использованием возвращаемых значений извратиться.
28 Aleksey
 
18.03.14
11:25
(27) это как? При условии что речь про внешние обработки
29 DexterMorgan
 
18.03.14
11:31
(24) Че за вопрос? По возможности обращения к серверу с клиента нужно минимизировать. Т.е. для ТС нужно подготовить данные, задать все вопросы и т.д. Если же для вопроса нужно обращение к серверу, ну будет два вызова сервера, но для данной задачи больше быть не должно
30 kumena
 
18.03.14
11:51
(16) спасибо, посмеялся от души!
31 H A D G E H O G s
 
18.03.14
11:53
(12) Мозг сворачивается.

Вот поэтому и нельзя семерочников к клиент-серверу подпускать.
32 fvadim
 
18.03.14
11:56
(26) я может ошибаюсь, ПоместитьВоВременноеХранилище не поможет?
33 Infsams654
 
18.03.14
11:57
(0) не хочешь получить от серверного метода то, на что на клиенте можно ответить?
34 PR
 
18.03.14
12:04
(0) Кому?
35 MSII
 
18.03.14
12:09
(6) А потом из серверной внезапно поседевший админ выскакивает.
36 H A D G E H O G s
 
18.03.14
12:11
(32) Именно он и поможет. Только так. Но, сюрприз, сюрприз, с 8.2.14 МВТ нельзя в нем хранить.
37 H A D G E H O G s
 
18.03.14
12:12
Вообще забавно. Проблема высосана из пальца.

Да, конечно, клиентский вызов сервера был бы нелишним и я не вижу причин в отказе от него, но раз сделали - так сделали, ничего страшного.
38 IKSparrow
 
18.03.14
12:14
(10)(11) Регистр сведений и запись прогресса процедуры тебя спасет.
39 kiruha
 
18.03.14
12:17
(0)
Достаточно просто -
Запускаешь какую нибудь com в которой реализован вопрос,
анализируешь ответ
40 НеБорис Нуралиев
 
18.03.14
12:22
(37) Это концепция stateless-сервера.
41 Aleksey
 
18.03.14
12:23
(33) эээ например устройство куда нужно записать файл недоступно, нужно предложить пользователю записать в другое место
При загрузки произошла ошибка записи (транзакция к примеру), нужно предложить пользователю провести интерактивно, или отказаться от загрузки

Вариантов много когда нужно прервать работу и спросить что-то
42 kiruha
 
18.03.14
12:26
(41)
Я вызываю сторонние com объекты.
Тот же Exel работает на ура.
Но вопросов в транзакции конечно не задаю - это перебор
43 НеБорис Нуралиев
 
18.03.14
12:27
(41) Вроде бы для таких целей придумали фоновые операции, аля "асинхронные события".

Мозг конечно выворачивает, но логика в этом есть.
44 Infsams654
 
18.03.14
13:24
(41) (43) что тут сложного - объясни клиенту что не так (если за рулём не китаец). См (37) "Проблема высосана из пальца. "
45 fvadim
 
18.03.14
13:34
(41) не корректнее записывать файл на клиенте?
и как на счёт предварительной настройки? перед загрузкой крыжиками пользователь выбирает действия, например, если ошибка записи - прерывать/продолжать.
предложение о ручном проведении можно выдать и после загрузки.