|
Управляемые формы 1С | ☑ | ||
---|---|---|---|---|
0
MrAvPika
17.06.16
✎
15:54
|
На форме 2 табличные части, заполняю первую таблицу, а вот вторую было бы круто заполнять не блокируя форму. Или вообще есть ли в 1с такая возможность, выполнить какой то запрос на сервере, без блокировки форму на клиенте, не заполнять табличную часть, а просто выполнить запрос?
|
|||
1
DmitrO
17.06.16
✎
15:58
|
см. ФоновыеЗадания
|
|||
2
MrAvPika
17.06.16
✎
16:04
|
(1) А у меня внешняя обработка, с фоновым заданием можно использовать?
|
|||
3
Живой Ископаемый
17.06.16
✎
16:04
|
http://v8.1c.ru/o7/201412async/index.htm
но по-моему это все-таки не совсем то. В общем это стыдоба какая-то, что мобильное приложение которое может выполняться на 2-х АРМ ядрах способно к асинхронным вызовам, а дексктопное, которое например работает на проце с 8 ядрами - не умеет. |
|||
4
DmitrO
17.06.16
✎
16:12
|
(2)да в общем-то тоже возможно, но нужно в каком нибудь общем серверном модуле заместить вспомогательную процедуру
|
|||
5
MrAvPika
17.06.16
✎
16:16
|
(4) В принципе через модуль объекта внешней обработки я смогу запустить фоновое задание, только вот обратиться с модуля формы к процедуре модуля объекта не получается
|
|||
6
MrAvPika
17.06.16
✎
16:19
|
(5) а я понял, как ее вызывать
короче, попробую так, спасибо |
|||
7
rozer76
17.06.16
✎
16:19
|
(2) БСП есть - см. http://catalog.mista.ru/public/525648/
|
|||
8
DmitrO
17.06.16
✎
16:19
|
(4)+ поправка: не "заместить", а разместить
|
|||
9
MrAvPika
17.06.16
✎
16:19
|
(3) Спасибо, не то что мне нужно, но тож полезно, не знал про методы "Начать*"
|
|||
10
MrAvPika
17.06.16
✎
16:22
|
(7) (8) Все работает, всем спасибо
|
|||
11
DmitrO
17.06.16
✎
16:28
|
(3)Стыдоба в том что вызовы к ОС теперь можно делать асинхронно, а вызовы к СОБСТВЕННОМУ серверу нельзя.
Им надо вводить директиву компиляции &НаСервереБезКонтекстаАсинхронно |
|||
12
DmitrO
17.06.16
✎
16:31
|
плюс вызов такой процедуры обеспечить объектом ОписаниеОповещения
|
|||
13
Провинциальный 1сник
17.06.16
✎
16:36
|
(12) Давно просят от 1с сделать вызов клиентской функции с сервера по выполнению фонового задания на сервере, но что-то не особо они торопятся такие хотелки реализовывать. Так и приходится дрючить сервер периодическим опросом.
|
|||
14
DmitrO
17.06.16
✎
16:38
|
А еще надо бы потенциально долгие вызовы к ОС (получение файлов, выполнение HTTP запроса) обеспечить сообщениями прогресса, для реализации градусника.
|
|||
15
Живой Ископаемый
17.06.16
✎
17:25
|
2(11) А ХТТПЗапрос можно отправить асинхронно?
Потому что это вообще именно соль любого мобильного приложения. Слой нетворкинг работает почти всегда асинхронно. Ну и можно к своему же серверу, на котором определены ХТТП Сервисы такие отправлять. Но вопрос - они будут выполняться асинхронно? Или пока не выполнятся или не отвалятся по таймауту форма будет фризится? |
|||
16
Cyberhawk
17.06.16
✎
18:21
|
(15) Ну ты ведь ХТТП-запрос будешь отправлять через ХТТП-соединение, а его метод возвращает ответ, поэтому пока код выполняется - конечно будет фриз
|
|||
17
Beretta
17.06.16
✎
18:26
|
(15) Не надо отправлять хттп запросы с клиента.
В вебклиенте это будет адский ад с кроссдоменами. |
|||
18
NorthWind
17.06.16
✎
19:49
|
(13) Ну вы же сами понимаете, что тогда идеология сервера приложений ломается. Должно быть только наоборот - клиент вызывает функции на сервере.
|
|||
19
DmitrO
18.06.16
✎
09:07
|
(15) нельзя
Но можно это сделать в фоновом задании. Если бы при этом хттп соединение опционально кидало сообщения с информацией о количестве отправленных и полученных байт, то проблема градусника была бы решена. Т.о. в платформе даже есть все механизмы для этого. |
|||
20
DmitrO
18.06.16
✎
09:26
|
(19)+ это старый как мир прием
Например mssql, когда делаешь зарос на бекап базы, он завершился только когда все сбекапит, но в запросе можно указать чтобы клиенту приходили сообщения с процентами выполнения. Чтобы пользователь не заскучал и не психанул его надо развлекать градусником. ) |
|||
21
Провинциальный 1сник
18.06.16
✎
10:08
|
(18) Тогда модная асинхронность не укладывается в эту парадигму.
|
|||
22
NorthWind
18.06.16
✎
10:48
|
(20) если поддерживать соединение во время длительного процесса, то возможно сделать. Но это плохо, ресурсы расходуются. Более правильная модель - без состояния, когда мы запустили длительный процесс, получили токен, сервер запустил задание и про нас забыл. Далее, если нам надо - мы по токену сколько-то раз запросили процесс выполнения и, наконец, результат. А может, нам оно не надо! Тогда ресурсы сэкономятся на лишних соединениях.
|
|||
23
NorthWind
18.06.16
✎
10:53
|
для истинной асинхронности нужно либо держать сессию в течение всего длительного процесса - что плохо, ибо сессий ограниченное количество, либо превращать клиента в сервер, который тоже должен уметь ждать соединения. А если клиент висит на GPRS и у него соединение прыгает и IP из пула DHCP каждые три минуты новый?
|
|||
24
NorthWind
18.06.16
✎
10:55
|
а если клиент вообще за натом и в принципе не может получать соединения по своей инициативе? Короче, никак. Все правильно 1С делает.
|
|||
25
Провинциальный 1сник
18.06.16
✎
11:06
|
(23) Так не всегда же требуется ждать возврата асинхронного вызова, только когда он выполняется. Можно и подержать соединение в этом конкретном случае.
|
|||
26
Провинциальный 1сник
18.06.16
✎
11:08
|
(24) Кстати, а в чем проблема держать ОДНО соединение от клиента к серверу? С keep-alive и с восстановлением при необходимости. Всякие аськи так всю жизнь работали.
|
|||
27
NorthWind
18.06.16
✎
11:24
|
(26) ну, аська создавалась в те времена, когда деревья были большими, а инеты маленькими. И сейчас про нее уже далеко не все вообще помнят, что она была. А новые веяния, как я понимаю, в том чтобы запросил, получил и до свидания. Держать соединение без надобности не очень принято.
|
|||
28
Юрий Лазаренко
18.06.16
✎
11:24
|
(23) При работе через http можно первым запросом от клиента запустить длительный процесс и отключиться, не ожидая выполнения длительного задания. Далее периодически, раз в секунду например, дергать сервер и спрашивать процент выполнения, отображать его на форме. По завершении выполнения вывести результат. В этом случае соединение не поддерживается в течение всего длительного процесса.
В фоновых заданиях 1С все примерно так же, но, в отличие от http, там приходится держать постоянно висящим сеанс подключения к серверу. |
|||
29
NorthWind
18.06.16
✎
11:26
|
(28) именно так.
|
|||
30
NorthWind
18.06.16
✎
11:27
|
кстати, сдается мне, что если на аську с ее механизмом работы подвесить всех клиентов всех распространенных месенджеров, которые сейчас есть - смертушка ей придет. Никаких серверов не хватит чтобы держать столько коннектов.
|
|||
31
Провинциальный 1сник
18.06.16
✎
12:14
|
(30) Ну и сколько потенциальных клиентов у одного сервера 1с? У аськи кстати был нехилый кластер в своё время. А установка соединения тоже жрет ресурсы, кстати. И как бы не большие, чем кип-алив.
Для ниши 1с это вообще не аргумент, любой самый дохлый сервачок легко потянет десяток тысяч tcp-коннектов. |
|||
32
NorthWind
18.06.16
✎
18:31
|
(31) в свое время физически не было столько интернет-клиентов, сколько сейчас, потому что интернет тогда стоил денег, а не копеек. А уж с учетом всех смартфонов и планшетов отличие, думаю, даже не в разы, а как бы не в десятки раз...
Что касается тонкого клиента в виде отдельного приложения, то конкретно для него, мне кажется, можно было бы сгородить механизм, о котором вы говорите. Но ведь есть еще браузеры. Мне почему-то сдается, что как раз тут основная загвоздка. |
|||
33
Живой Ископаемый
24.06.16
✎
16:54
|
(16,17,19). А в любом нативном мобильном ioS|Android приложении к любому бэкэнд-серверу, у которого есть рестфул-апи - можно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |