Имя: Пароль:
1C
1С v8
Вызов формы из &НаСервере
0 korableg
 
23.07.13
06:38
Может есть какая нибудь стандартная форма на которой можно сформировать таблицу значений? Может как нибудь можно вызвать из серверной функции? Может что-то типа "СообщениеПользователю". Кто знает подскажите? Говорить что надо было делать &НаКлиенте не нужно, если бы это было возможно сделал бы.
1 korableg
 
23.07.13
06:41
забыл сказать Конфигурация УТ 11
2 Лодырь
 
23.07.13
06:45
ЗначениеВРеквизитФормы не подойдет?
3 Wobland
 
23.07.13
06:49
(0) ТабДок делай и отдавай клиенту. построителем строчки 4-5 выйдет
4 Wobland
 
23.07.13
06:50
и таки да! надо было делать на клиенте или применять другую логику
5 korableg
 
23.07.13
06:53
(3) проблема в том что где идет нужная мне проверка находится на глубине 5 серверных процедур, а мне нужно выполнить эту проверку и вывести форму чтоб пользователь выбрал нужное значение и она продолжила после этого обработку.
(4) я бы сделал, разработчики 1С решили сделать именно так.
6 korableg
 
23.07.13
06:54
Есть вариант в самом начале сделать проверку и дописать параметры к этим процедуром с уже готовым значением - поддержите если считаете, что это самый верный вариант ,если нет, то подскажите.
7 Лодырь
 
23.07.13
06:54
(5) Тогда делай как в (2) написал. Вполне работает.
8 Wobland
 
23.07.13
06:54
(5) меняй логику, это клиент-сервер
9 sonsimo
 
23.07.13
06:55
(0) Это невозможно. Открыть форму можно только с клиента
10 andreymongol82
 
23.07.13
06:58
(0) Декомпозиция наше все. Будь мужиком. Используй правильную логику!
11 Wobland
 
23.07.13
06:58
(9) ему надо придумать, как юзеру подсунуть выбор посреди процесса на сервере
12 sonsimo
 
23.07.13
06:58
+(9) самый кошерный способ - вместо нужной формы открыть промежуточную, показать таблицу пользователю и открыть нужную форму, передав ей в параметрах таблицу
13 sonsimo
 
23.07.13
07:00
(11) посреди процесса - нельзя. С сервера на клиент по желанию не уйти. Только естественным путем
14 korableg
 
23.07.13
07:06
Ладно, попробую сделать дополнительный параметр этим процедурам и передавать его, выполнив проверку заранее.
(2) подошлоб, если выводить на эту же форму, а тут нужно создавать новую и там выбирать.
15 Лодырь
 
23.07.13
07:22
(14) Можно вернуть в реквизиты прежней формы, и открыть новую форму передав их через параметры. И да, это извращенно.
16 ИС-2
 
naïve
23.07.13
07:49
мне вот тоже интересно как такое сделать по нормальному.

(0) может в серверном модуле вызвать исключение, которое обрабатывается на клиенте?
17 Wobland
 
23.07.13
07:50
(16) разделить весь процесс на две части, вызываемые с клиента. имхо только это вписывается в парадигму клиент-серверной архитектуры
18 IamAlexy
 
23.07.13
07:58
временное хранилище в поставке вашей платформы отсутствует ?
19 IamAlexy
 
23.07.13
07:58
обработки ожидания отключены в целях экономии?
20 ИС-2
 
naïve
23.07.13
09:01
(16) сам не проверял, но можно использовать новый СообщениеПользователю.

В хэлпе написано:

Если сообщение еще не было показано пользователю (такое может быть при работе на стороне сервера, в фоновом задании, внешнем соединении или Web-сервисах), можно получить накопленные сообщения методом ПолучитьСообщенияПользователю

стоп, это не то, что нужно в (0)
21 sonsimo
 
23.07.13
09:06
(18), (19) и как эти механизмы помогут проблеме из (0)?
Все равно на клиент с сервера не уйти, а требуется именно это - открыть модально форму из сервера, получить параметры, вернуться на сервер и что-то с этими параметрами сотворить
22 ИС-2
 
naïve
23.07.13
09:07
(17) вот это и неправильно. Тот факт, что в 1C победили инженеры может привести чуть ли не к гибели всей системы т.к из-за это стоимость разработки сильно повышается.
Кто готов платить за батон хлеба не 15 руб, а 17 только из-за того, что учет произоводства ведется с использованием "клиент-серверной парадигмы"? Я нет.
1C должна быть максимально эффективной в плане экономии при разработке, а разработчики вместо понимания этого стали витать где-то в своих облаках. А на все претензии отвечать "это не кошерно".
23 famnam
 
23.07.13
09:22
(0) Ваш процесс поделить на две части: 1) предварительное формирование данных (например, выборка), результат поместить во временное хранилище. Вернуться на клиент и спросить пользователя, что делать. А затем 2) извлечение из вр.хранилища и обработать данные.
24 ИС-2
 
naïve
23.07.13
09:26
(23) "гладко было на бумаге да забыли про овраги" (c).
Ну и как быть если, надо вносить изменения в типовой функционал? Все переписать?
25 olegves
 
23.07.13
09:52
+ (17) только так и не иначе.
У меня была полгода назад задача, в которой пришлось разделить серверный процесс на 2 части, поскольку пользователь должен был повлиять на один из параметров второй части серверного процесса
1-я часть формировала список для выбора этого параметра, а 2-я часть уже получала окончательные данные.
26 olegves
 
23.07.13
09:53
+ (25) а если тебе нужна таблица значения, доступная на клиенте и на сервере, то создай реквизит формы этого типа и вызывай серверные контекстные процедуры этой формы
27 Полотенчик
 
23.07.13
10:21
(18) + 1
Приходится какой-то пошаговый процесс разбивать на тучу клиент-серверных функций: на сервере считать, помещать рассчитанные таблицы в хранилище, возвращать на клиент адрес хранилища, выбирать что-то на клиенте, опять вызывать серверную функцию, которая по адресу достает из хранилища таблицы, что-то делает с учетом выбранных/установленных параметров на клиенте, опять запоминать в хранилище и т.д.

ps бОльшая часть геморроя из-за невозможности нормального использования МенеджераВременныхТаблиц в серверных процедурах, которые разбиваются клиентскими вызовами
"Какая же гадость эти ваши УФ"
28 olegves
 
23.07.13
10:53
(27) это не гадость, а цена универсальности клиентской части, в т.ч. многоплатформенности и быстродействия.
Не нравится - иди пиво продавать.
1С скоро все переведет на УФ
29 Полотенчик
 
23.07.13
11:01
(28) Какое быстродействие? 95% всего времени работы - это Запрос.Выполнить(), который и так выполняется на сервере. Пустяковые расчеты выполнять не на клиенте, а не сервере ценой  такого геморроя - непозволительная роскошь.
Многоплатформенность - да, но спорный вопрос. Количество невинды минимально. Терминальная лицензия (для RemoteApp) стоит 100 долл. на всю жизнь, а не сотни/тысячи человекочасов для перевода/поддержки УФ.
30 korableg
 
23.07.13
11:15
Проблему разрешил как и писал в (14) проверкой на начальном этапе и передачей параметра в процедурах на сервере.
Насчет гавнистости уф от себя добавлю, что как ни крути как-то это более логично смотрится и более масштабируемо в конечном итоге + экономия для предприятия, хотя смотря как посмотреть - сервер уже однозначно нужен по мощнее.