Имя: Пароль:
1C
 
Как при выполнении кода на сервере задать вопрос или ввести строку?
0 PR
 
21.09.10
16:22
В тонком или веб клиенте при выполнении кода на сервере нельзя задать вопрос пользователю или попросить его ввести строку.

И это нормально.

Но надо :))

Как?
1 Shurjk
 
21.09.10
16:22
#ЕслиКлиент
2 Stepa86
 
21.09.10
16:23
только спросить заранее...
3 Stepa86
 
21.09.10
16:23
или разбить на 2 вызова
4 PR
 
21.09.10
16:23
(1) А подумать?
5 PR
 
21.09.10
16:24
(2) Нельзя, количество вопросов заранее неизвестно.
6 PR
 
21.09.10
16:25
(3) Невозможно.
Код на сервере начинается строкой
НачатьТранзакцию()
а заканчивается строкой
ЗафиксироватьТранзакцию()
7 butterbean
 
21.09.10
16:28
(6) а придется
8 Shurjk
 
21.09.10
16:29
(4) А чего думать? Если клиента нет то кого он там спрашивать будет?
9 НЕА123
 
21.09.10
16:30
(0)
ПоключитьОбработчикОжидания()
и проверять ПараметрыСеанса
?
10 PR
 
21.09.10
16:30
(8) Если бы клиент там был, то я бы такую ветку не заводил.
11 PR
 
21.09.10
16:30
(7) Я подумаю над вашим коммерческим предложением.
12 PR
 
21.09.10
16:31
(9) Да это понятно, но жесть же.
13 koi8_1c
 
21.09.10
16:32
Опиши точнее задачу, может и можно что-то придумать.
14 НЕА123
 
21.09.10
16:34
(12)
ведение беседы с юзером в транзакции - это покруче.
15 PR
 
21.09.10
16:34
(13) Человек нажимает в документе кнопку "Утвердить", после чего выполняется некоторая последовательность действий, к некоторым из которых запрашивается комментарий.
То есть выполняются задачи, меняются реквизиты документа и т. д.
Если где-то сбой, то транзакция откатывается.
16 PR
 
21.09.10
16:35
(14) А что делать, приходится, заранее все не просчитаешь.
17 asady
 
21.09.10
16:36
(15) задача поставлена криво - попробуй изменить постановку.
18 PR
 
21.09.10
16:37
(17) Задача уже реализована, нужно на веб-клиент переложить.
19 Shurjk
 
21.09.10
16:38
(16) Почему нет?
20 PR
 
21.09.10
16:38
(19) Сколько и каких вопросов задать пользователю?
21 butterbean
 
21.09.10
16:39
(20) предложить заполнить анкету :-)
22 acsent
 
21.09.10
16:41
(18) Представляю как тяжело твоим программистам:
- Это невозможно.
- Пшел нах, делай я сказал.
23 IamAlexy
 
21.09.10
16:42
(16) обработка ожидание + параметр сеанса чем тебя не устраивают ?
24 IamAlexy
 
21.09.10
16:43
но опять же.. началась транзакция... ее что, стопорить пока пользователь строку введет ?
а если пользователь курит? или домой свалил?
25 IamAlexy
 
21.09.10
16:43
вообще в (0) описан типический прямо бизнеспроцесс :)
26 PR
 
21.09.10
16:45
(22) Нет слова "Не могу", есть слово "Не хочу" :))
27 PR
 
21.09.10
16:45
(23) Да коряво как-то :o)
28 PR
 
21.09.10
16:46
(25) Так и есть
29 IamAlexy
 
21.09.10
16:46
(27) переложи свой бизнеспроцесс на объект конфы "бизнеспроцес" и наслаждайся "некорявостью"

в чем проблема то? :)
30 PR
 
21.09.10
16:46
(24) Ну чудак он значит. Не через ч ессно :))
31 PR
 
21.09.10
16:47
(29) Да пля, уже все переложено, изначально сделано.
Вопрос-то в другом.
32 НЕА123
 
21.09.10
16:47
(26)
ну да, в переводе

не знаешь - заставим, не хочешь - научим...(с) Армия
33 IamAlexy
 
21.09.10
16:47
(30) то что мчудак это то понятно.. чо с твоей базой будет при зависших транзакциях незакрытых.. на быстродействие как скажется
34 IamAlexy
 
21.09.10
16:48
(31) а в чем?
разбили процесс на 3 части

первый кусок который впоследствии создает задачу и соответственно задача по выполнении дальше процесс запускает...

чего тут эдакого нестандартного ?
35 PR
 
21.09.10
16:48
(33) Не надо теоретизировать, дураков нет, пользователи так не делают.
Да и таймауты можно поставить.
36 el-gamberro
 
21.09.10
16:48
Смысла в транзакции, если при этом идет диалог с пользователем, 0.
37 PR
 
21.09.10
16:49
(34) ВСЁ должно либо сделаться либо нет, то есть нельзя бить на части.
38 koi8_1c
 
21.09.10
16:50
А чем бизнес-процессы не устраивают? Правда, видимо придется переписывать уже сделанную задачу, но все таки.
Либо перед запуском транзакций ВСЕ вопросы задавать. А задавать вопросы в рамках транзакции - это вообще не дело.
39 Shurjk
 
21.09.10
16:51
(37) Ну значит сначала делаем все со всеми проверками и т.д. затем записываем в базу.
40 IamAlexy
 
21.09.10
16:51
(37) а предусмотреть программный "откат" нельзя?
а только  в конце процесса переключить активность проводок и записей в регистр по документам процесса тоже нельзя?
41 koi8_1c
 
21.09.10
16:52
А вообще - задачу в студию, а то ерунда получается: "у меня есть проблема, но я ее полностью не расскажу, но расскажу ту часть проблемы, которая меня волнует".
42 PR
 
21.09.10
16:53
(38) Да что ж за жизнь-то.
1. Сделано все на бизнес-процессах.
2. Как использование бизнес-процессов решает проблему, непонятно.
Все вопросы ПЕРЕД выполнением задать нельзя, так как неизвестно, сколько и каких их будет.
3. Задавать вопросы в рамках транзакций не комильфо, но мы сейчас не про это.
43 PR
 
21.09.10
16:54
(39) Через пятую точку и сложно.
44 PR
 
21.09.10
16:54
(40) Нет.
45 PR
 
21.09.10
16:54
(41) Читай (15).
46 IamAlexy
 
21.09.10
16:54
(39) типа транзакция на сервере это типа просто? :)
47 koi8_1c
 
21.09.10
16:55
Опиши ВСЮ проблему.
48 Индийска праграмиста
 
21.09.10
16:55
Через файлы...Сервер пишут файл с вопросом и ждет...клиент файл читает, отвечает, сервер читает ответ, и двигается дальше...
49 IamAlexy
 
21.09.10
16:55
(45) в (15) написан типичный бизнеспроцес согласования документов который во всех учебниках рассматривается и есть в типовых
50 koi8_1c
 
21.09.10
16:55
Так вот что такое "после чего выполняется некоторая последовательность действий, к некоторым из которых запрашивается комментарий"?
51 IamAlexy
 
21.09.10
16:56
+(49) в ут11ой вроде есть согласование платежей - тожесамое что и в (15) написано :)
52 koi8_1c
 
21.09.10
16:56
Почему комментарии (видимо вопросы) не задать ПОСЛЕ нажатия на кнопку, но ДО начала транзакции?
53 koi8_1c
 
21.09.10
16:57
Почему не заблокировать от изменения те объекты, которые не хочется менять ДО начала транзакции?
54 PR
 
21.09.10
16:58
(46) Да.
55 Индийска праграмиста
 
21.09.10
16:59
Этот чувак из (0) всё вакансиями здесь спамил. Вот неповезло тому прогеру, которого они взяли, такие идиотские задачи решать)
56 PR
 
21.09.10
16:59
(48) Мда, без комментариев.
57 Aprobator
 
21.09.10
16:59
(15) нефига не понял. Если нажимается кнопка в форме, то после выполнения кода на сервере произойдет возврат на клиента, что мешает на сервере сформировать только текст сообщения, а уже потом выдать сообщение пользователю?
58 PR
 
21.09.10
17:02
(50) Я же написал.
То есть выполняются задачи, меняются реквизиты документа и т. д.
59 Shurjk
 
21.09.10
17:02
(43) Вроде всю жизнь так и делалось.
(46) Зачем все подряд в транзакцию пихать?
60 PR
 
21.09.10
17:03
(52) Что именно спрашивать?
61 PR
 
21.09.10
17:03
(55) Тебе повезло. У тебя пожизненный иммунитет трудоустройства ко мне :))
62 Shurjk
 
21.09.10
17:04
(55) Может это им не повезло раз приходиться так их решать.
63 IamAlexy
 
21.09.10
17:04
(61) он теперь будет плакать непереставая недели две...
64 PR
 
21.09.10
17:05
Мда. Профессиональная импотенция у народа в разгаре :))
Всем спасибо, все свободны.
65 hhhh
 
21.09.10
17:06
(64) нет, ты еще поюмори. Давно так не смеялся.
66 Индийска праграмиста
 
21.09.10
17:06
Он еще и на собеседованиях такой вопрос будет задавать.. А когда претендент не ответит, он скажет- да какой ты спец...максимум на 40 тыр годишься...
67 acsent
 
21.09.10
17:07
(64) Мда. Профессиональное извращение у тебя в разгаре :))
Свободен ))
68 ado
 
21.09.10
17:07
(0) Я стесняюсь спросить, а кому будет задавать вопрос код, исполняющийся на сервере?
69 IamAlexy
 
21.09.10
17:07
(65) может у него от ОБЭПа защита такая... они начинают с начала года транзакцию.. работают в ней до конца года.. чуть что - сразу откат транзакции и вуаля - чистая база ничего нет...
70 Shurjk
 
21.09.10
17:08
(64) Да всегда пожалуйста как скучно будет так еще обращайся надеюсь не отпустит так быстро мы постов на 1000 тут накидаем, ведь так увлекательно гланды через задний проход доставать,а особенно советовать как это лучше сделать.
71 IamAlexy
 
21.09.10
17:08
(68) я спросил у сервера
где строка с параметром
сервер не ответил мне
пошуршав винтом....
72 Индийска праграмиста
 
21.09.10
17:09
(0) ты кстати никогда не думал, почему с клиента можно вызвать сервер, а с сервера клиента нет,а?
73 Shurjk
 
21.09.10
17:09
(68) Видимо сразу всем... или может случаному пользователю...
74 IamAlexy
 
21.09.10
17:10
(73) на самом деле параметр сеанса + обработка ожиданиия у конкретного пользователя стартующая при старте процесса как бы помогут решить проблему :)
но это типа недостаточно прямо для строй грандиозной задачи....
75 koi8_1c
 
21.09.10
17:10
Жесть
76 iloktev
 
21.09.10
17:14
Никак не получится выйти из сервера обратно в клиент, не отменив или зафиксировав транзакцию - значит, нужно использовать другой клиент. OLE не подойдет, т.к. запустится в контексте серверва и никто ничего не увидит. Нужен либо отдельный запущеный клиент 1с-ки, только и ждущий что у него что-нибудь спросят, либо внешний не-1совский клиент, действующий по этому же принципу. Можно пинать с сервера какое-нибудь легкое явовское приложение и ждать что оно ответит. Других вариантов (с использованием клиента, который инициировал транзакцию) в принципе не может быть.
77 H A D G E H O G s
 
21.09.10
17:14
Хорошо, очень хорошо.
Что я не пошел к автору в фирму работать.
:-)
78 Shurjk
 
21.09.10
17:14
(74) Пердставил себе реализацию этого... как то даже не по себе стало.
79 IamAlexy
 
21.09.10
17:14
нужно фоновые задания курить..
80 H A D G E H O G s
 
21.09.10
17:15
(72) Ему - некогда думать.
Он - по уши в программировании.
81 koi8_1c
 
21.09.10
17:16
Это у него небось с 8.1 (или 8.2 толстого клиента) тянется - там же можно в форме начать транзакцию и там же ее зафиксировать.
82 H A D G E H O G s
 
21.09.10
17:16
(74) Вызов сервера как бы синхронен.
83 koi8_1c
 
21.09.10
17:17
Извини, но для управляемых форм нужно мозг ломать и идеологию тоже
84 H A D G E H O G s
 
21.09.10
17:25
У автора - 1 путь.

1) НачатьТранзакцию()
2) Собрать результаты (например проведения дока)
3) Если надо спросить - сразу ОтменитьТранзакцию() и вернуться на Клиент
4) На Клиенте - спросить.
5) Вернуться в сервер и выполнить снова уже с известными ответами.

НО.
Надо блокировать всех остальных.
85 Aprobator
 
21.09.10
17:26
(5) "количество вопросов неизвестно" - типа пока задача выполняется, чтобы юзверю скучно не было, комп ему будет вопросы задавать (анкетирование эдакое)?
86 PR
 
21.09.10
17:27
(84) И эти люди запрещают мне ковыряться в носу :))
87 H A D G E H O G s
 
21.09.10
17:27
(86)
Что не так?
Предложи лучше.
88 acsent
 
21.09.10
17:29
(87) Поставить монитор на сервере и бегать туда отвечать на вопросы
89 IamAlexy
 
21.09.10
17:30
(87)
если бы мне нужно было сделать такую тупость то я тупил бы так:


регистр сведений "надоспроситьпользователя"
с измерениями "пользователь, идентификатор транзакции" и ресурсами "вопрос, ответ"

в транзакции пишется запись в регистр сведений и дальше пауза пока не появится ответ...

в клиенте при старте процесса обработка ожидания опрашивающая регистр сведений на предмет наличия вопроса, соответственно сам вопрос и запись ответа в регистр...


во всем этом меня смущает тразакция на паузе :)
90 IamAlexy
 
21.09.10
17:30
+(89) и это бы них.я несработало ибо в незавершенной транзакции запись записать низя
91 IamAlexy
 
21.09.10
17:31
+(90) значит остается тока файл :)
кстати как вариант - писать во внешнее хранилище по оле.. :)
например в базу данных mssql
92 Индийска праграмиста
 
21.09.10
17:31
(90) в мой вариант в (48) сработал бы?
93 Aprobator
 
21.09.10
17:31
+(89) хм, а какая тупость тупостью в (0) должна решаться?
94 IamAlexy
 
21.09.10
17:33
(92) не вижу причин почему бы не сработало бы...
единственная тонкость - тонкий клиент...
опля.. это же вебсервер..

значит надо писать файл на сервер...
и читать его с вебсервера :)
95 koi8_1c
 
21.09.10
17:33
Судя по решению и с ковырянием в носу - большие проблемы будут. Ибо ты ДО НАЧАЛА КОВЫРЯНИЯ должен определиться с вопросами типа
1. В носу ли будешь ковырять?
2. В какой ноздре?
3. ...
Х. Когда вытаскивать палец.
А то во время ковыряния, можешь случайно обнаружить, что уже НЕ палец и НЕ в Носу.
96 koi8_1c
 
21.09.10
17:34
Не уже ли ПЯТНИЦО пришел?
97 IamAlexy
 
21.09.10
17:34
(95) рассуждаем.
вебклиент.
транзакция сохранила в каталог с вебсервером html с вопросом и ждет там наличия html с ответом.

чем не вариант?
причем прочитать его можно будет тонким клиентом вполне себе...
98 H A D G E H O G s
 
21.09.10
17:35
Мистец, народ жгет.
Какие регистры, какие файлы?

Сервер вызывается синхронно.
Клиент ждем Сервера, пока он возвратит управление.
99 Aprobator
 
21.09.10
17:36
(95) судя по ветке у чела с ковырянием в носу будут траблы. Палец будет по черепу изнутри скрести )
100 acsent
 
21.09.10
17:36
По ОЛЕ запускать еще один удаленный аппликэшн и там задавать вопрос
101 iloktev
 
21.09.10
17:37
(91) Точно - запустить COM-соединение с боевой базой, которое заблокирует потенциально изменяемые объекты, потом по ходу дела писать данные в зеркало БД, сохраняя трассировку транзакции, закрыть COM и выполнить снятую трассировку в боевой базе.

Второй вариант - посадить человека который будет мониторить ход выполнения в отладчике и звонить юзеру, запустившему транзакцию - задавать нужные вопросы.
102 koi8_1c
 
21.09.10
17:37
(97) В кластере не прокатит.
103 iloktev
 
21.09.10
17:37
(100) из серверной процедуры ОЛЕ запустится на сервере... вопрос будет задан, но никто его не увидит
104 koi8_1c
 
21.09.10
17:38
В кластере получится, что палец засовываешь себе, а выходит он из носа друга. Кошмар!!!
105 PR
 
21.09.10
17:39
Ладно, решение понятно, последняя надежда с экспортной фукнкцией формы растаяла как дымка, будем делать красиво и правильно :))
Будем ломать мировоззрение на работу с тонким клиентом :))
106 shuhard
 
21.09.10
17:39
(98) забавный топик от Радченко
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=557679
107 IamAlexy
 
21.09.10
17:39
(104)
(102) каким это раком не прокатит..
обслуживающий ВЕБсервер один.. не кластер...

с кластерных серваков где сервер1с вертится - просто дать доступ писать в каталог...
в принципе если ольку юзать то можно напрямую во внешнюю базу писать...
108 acsent
 
21.09.10
17:43
(103) Удаленный ОЛЕ = ОЛЕ на удаленной машине (так тоже можно)
109 PR
 
21.09.10
17:44
(106) О, неплохо расписано, спасибо :))
110 koi8_1c
 
21.09.10
17:44
Какое ОЛЕ??? А если и веб сервер и сервер 1С на LINUX работают?
111 koi8_1c
 
21.09.10
17:45
И веб клиент-там же?
112 H A D G E H O G s
 
21.09.10
17:46
Хорошая ветка.

Вот это - хорошая такая задачка, как на собеседовании дятелов отсеять.
113 H A D G E H O G s
 
21.09.10
17:47
Даже не отсеять, а посмотреть их уровень для 8.2
114 acsent
 
21.09.10
17:47
Ограничения конечно же у способа есть ))
115 koi8_1c
 
21.09.10
17:47
А ты сталкивался с тем, что пользователи уходят на обед, не ответив на вопрос, который крутится в транзакции??? Нельзя вопросы пользователю в транзакции задавать.
116 IamAlexy
 
21.09.10
17:50
(110) по этому я и говорил что воспользоваться специально поднятым для этого апачем и какойнить новамодный соап...

ну или втупую сделать страничку q.php куда параметром передавать строку запроса для mysql и соответственно a.php которая будет возвращать ответ...
117 acsent
 
21.09.10
17:50
(115) У него пользователи к стулу привязываются и отвязываются только после завершения транзакции
118 IamAlexy
 
21.09.10
17:50
(115) таймер и килять весь процесс фиксируя отстусттвующего пользователя для последующей экзекуции
119 luns
 
21.09.10
17:51
да.. франчи жгут.
самый забавный аргумент это про все сделано и переделать нельзя. но надо.
120 IamAlexy
 
21.09.10
17:51
(106) нечего там не нашел чего бы небыло озвучено в первых 50 постах этой ветки
121 acsent
 
21.09.10
17:51
Еще вариант на смс посылать вопрос
122 luns
 
21.09.10
17:52
и ведь казалось бы у топик стартера работаю проги за > 100 тыров.. а надо же.
пойти что ли прибавки попросить.
123 acsent
 
21.09.10
17:54
отстатыщ только за отдвести часов
124 koi8_1c
 
21.09.10
17:56
Просто надо перестраивать голову под управляемые формы 8.2 - а это тяжело.
125 iloktev
 
21.09.10
17:57
(108) Интересно... а в сеансе какого пользователя открывается OLE на удаленной машине? Можно это настраивать?
126 koi8_1c
 
21.09.10
17:57
... не в обиду будет сказано. Ибо идеология там другая, более жесткая
127 koi8_1c
 
21.09.10
17:57
(125) можно
128 ado
 
21.09.10
17:59
(124) Если с головой изначально в порядке, то не так уж и тяжело.
129 koi8_1c
 
21.09.10
18:00
Не скажи. Я при переходе с 7.7 на 8-ку себя год ломал. Особенно с периодикой
130 luns
 
21.09.10
18:01
(124) речь то не о том. речь о том, что генеральный директор спрашивает о таком на форуме, в тот момент когда у него работают свои проги, получающие овер 100.
неужто они не могут решить такую простую задачу (даже если раньше ни с чем подобным не сталкивались).
131 acsent
 
21.09.10
18:01
Новый COMОбъект(<Имя>, <ИмяСервера>)

Параметры:

<Имя> (обязательный)
Тип: Строка. ProgID класса COM, с которым он зарегистрирован в системе. Например, "Excel.Application".

<ИмяСервера> (необязательный)
Тип: Строка. Имя компьютера, на котором надо создать указанный объект. Если параметр опущен, то создается на данном компьютере.
132 koi8_1c
 
21.09.10
18:04
(130) Почему решил, что 100 ?
133 myk0lka
 
21.09.10
18:04
(15)Может всё же помять что-то в механизме работы документа?
А то шикарно - чел должен вбить комментарий, а его отвлекли и он отошёл на 10-20 минут.... Транзакция висит.... Он что-то там держит.... ИМХО это не правильно....
134 myk0lka
 
21.09.10
18:05
(133)*поменять
135 acsent
 
21.09.10
18:06
136 ado
 
21.09.10
18:06
(129) 8.2 заставляет писать правильно. Тому, кто хотя бы имел представление, как правильно писать клиент-серверные приложения ничего в себе ломать не надо.
137 IamAlexy
 
21.09.10
18:16
Автор (0) отпишись - получилась мегаидея и как транзакция ожидающаяя ответа пользователя повлияла на "отзывчивость" системы


уж очень интересно...
138 koi8_1c
 
21.09.10
18:22
Если это работодатель, то ему, скорее всего, сказали, что всю процедуру надо переделывать за большие деньги. Вот он сюда и обратился с криками "Ну и что, что нельзя, а хочу БЕЗ исправления (перевожу - чтобы бесплатно)".
139 IamAlexy
 
21.09.10
18:27
(138)ага...
хочется удалить гланды но пасть я разевать не буду..
нивопрос - удалим через ж.пу...
140 PR
 
21.09.10
18:27
(137) Мегаидея не получилась, я же написал в (105).
Транзакция, ожидающая ответа пользователя, на "отзывчивость" системы не повлияла никак.

Если серьезно, то вся ветка - это (196) и (135).
Кто что мог сказать дельное, то сказал, кто не мог, тот тоже пукнул :))

(135) кстати актуально :))
141 koi8_1c
 
21.09.10
18:28
(140) Заодно и в носу поковырялись ;-)
142 ado
 
21.09.10
18:36
(140) >> Если серьезно, то вся ветка - это (196) и (135).

Умеешь будущее предсказывать ;-)
143 IamAlexy
 
21.09.10
18:37
(142) предсказываю что в (196) будет написано про автора ветки что то разоблачительно-нелестное :)
144 luns
 
21.09.10
18:49
(140) наверняка еще есть такие кому есть что сказать, но им лень за тебя твои деньги зарабатывать.
145 PR
 
21.09.10
18:52
(142) Сорри, (106) конечно же.
146 Stepa86
 
21.09.10
19:29
(0) Спросить у пользователя недостающую информацию после транзакции не предлагать?
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.