Имя: Пароль:
1C
1С v8
Асинхронные вызовы
0 fantomrik
 
15.07.16
10:12
Привет, коллеги.

Делал обработку, ее нужно было сертифицировать в 1сфреш.
Пришло замечание от разработчиков о том, что необходимо оформить вызов процедур асинхронно.

Собственно возникло пару вопрос.

1) Когда нужно использовать такие вызовы, а когда нет смысла? К примеру диалоги с вопросами нужно описывать асинхроннымим процедурами, дабы убрать модальность.
А если такая ситуация. Пусть обработка при запуске тянется в интернет, скачивает его, распаковывает в определенную папку. Интерфейса у обработки и диалогов нет, при запуски последовательно отрабатывают 5 процедуры, 3 на клиенте 2 на сервере и обработка завершается. Нужно описывать эти процедуры через описание оповещения или не обезательно?

2) Если взять предыдущий пример, то ВыполнитьОбработкуОповещения доступна только на клиенте, то есть с серверной процедуры я не смогу вызвать процедуру на клиенте что и логично. Как тогда поступать правильно?
1 pavig
 
15.07.16
10:13
ИМХО только для исключения модальности интерактивных диалогов
2 fantomrik
 
15.07.16
10:14
скачивает его* - скачивает файл)
3 MrStomak
 
15.07.16
10:14
(0) Требования по асинхронности относятся только к контексту клиента.
Делать это нужно, т.к. иначе в хроме работать не будет.
4 fantomrik
 
15.07.16
10:19
(3) Верно ли утверждение, что все что покажет "Рефакторинг - нерекомендованные синхронные вызовы - найти вызовы модуля " нужно переделывать? Или данный поиск пока не совершенен и ошибается? У меня просто находит места где я выполняю .Добавить с структуру или массив.
5 MrStomak
 
15.07.16
10:23
(4) Раз ругается на .Добавить(), то очевидно, что утверждение не верно.

Но нужно всё, что касается работы с файлами со стороны клиента, переделывать с КопироватьФайл() на НачатьКопированиеФайла() и т.д.
Потому что хром для этого вызывает внешнюю компоненту, а вызов в синхронном режиме они решили прикрыть.
6 EugeniaK
 
15.07.16
10:24
(0) Все, что вызывается на клиенте, обязательно должно работать асинхронно.
Иначе просто браузер сеанс завершит, пока вызов на сервере будет что-то делать.
7 fantomrik
 
15.07.16
10:30
(5) Что то я не совсем понимаю, зачем добавление в структуру нужно делать асинхронно.

К примеру

МойМассив= Новый Структура;
МойМассив.Добавить("Ленин");
ОбработатьМассивНаСервере(Массив);
....

В чем сокральный смысл добавлять асинхронно элемент массива?
8 fantomrik
 
15.07.16
10:34
(7) Думаю о массиве, а пишу структра. вы поняли, там массив везде. Со структурой аналогично, требует асинхронности при добавлении
9 RomaH
 
naïve
15.07.16
10:38
(5) это ты вообще про что? можно ссылочку на RTFM
10 fantomrik
 
15.07.16
10:46
(9) Делаю в модуле Рефакторинг - не рекомендованные синхронные вызовы - находит сроку в файле парсинга xml файла на клиенте, где в начале процедуры создаю новый массив, парся xml добавляю необходимые мне данные в этот массив для дальнейшей обработки. Не нравится ему метод "Добавить" к к моему массиву почему то.
11 MrStomak
 
15.07.16
10:47
(10) У метода "Добавить" нет асинхронных аналогов
12 fantomrik
 
15.07.16
10:51
(11) Ну вот и не понятно, что хочет тогда типовой рефакторинг
13 MrStomak
 
15.07.16
10:55
(12) Не обращай на это внимания
14 MrStomak
 
15.07.16
10:57
15 RomaH
 
naïve
15.07.16
11:30
(14) про это я в курсе
я не в курсе про массив.Добавить()
16 MrStomak
 
15.07.16
11:35
(15)
Автор спросил:"Верно ли утверждение, что все что покажет "Рефакторинг - нерекомендованные синхронные вызовы - найти вызовы модуля " нужно переделывать?"

Я ответил: " Раз ругается на .Добавить(), то очевидно, что утверждение не верно. "

Что именно тебя смущает?
17 Garykom
 
гуру
15.07.16
11:49
(11) отказаться от массивов? и перейти на нечто что имеет асинхронные ))
18 fantomrik
 
15.07.16
13:34
(13) Спасибо! Понятно вроде )