Кружок 1С #6 Асинхронность и многопоточность. О чем умалчивает ИТС
ฝัง
- เผยแพร่เมื่อ 28 ก.ค. 2024
- В этот раз мы решили разобраться что такое Асинхронность в 1С , и как этим пользоваться.
00:00 Вступление
00:14 Синхронность и многопоточность
02:13 Пример с квадратами
03:45 Однопоточность и многопоточность сравнение 1С и Java
06:56 Работа с задачами в 1C
09:31 Многопоточность в браузере WebKit
14:05 Советы по выбору компьютера для работы в 1С
15:27 Синхронные и асинхронные методы
17:10 Примеры асинхронных методов
21:46 Асинхронные методы для веб-браузере
26:26 Описание оповещений и когнитивная сложность
30:00 Использование асинхронных методов для оптимизации кода
35:32 Синхронные методы и обещания
46:13 Использование синхронных методов и обещаний
48:10 Заключение
Подробнее в статье на сайте: softonit.ru/blog/articles/1c/...
Наш продукт: "Управление IT-отделом 8"
Что такое Управление IT-отделом 8? softonit.ru/catalog/products/it/
#УправлениеIT-отделом8 #Асинхронность #1С #async #Программирование - วิทยาศาสตร์และเทคโนโลยี
Спасибо за доклад, 1С как всегда позади планеты всей, нет повести печальнее на свете чем повесть об асинхе в одинэсе.
Это не то слово просто. Была надежда на 1С 9, нынче это Элемент, но нет.
@@xrollup 1С Элемент - это очередная попытка 1С сделать свой велосипед и объять необъятное, подменив своими поделиями весь инструментарий, часто абсолютно бесплатно доступный в других стеках.
Я асинхронку интуитивно использовал только для диалогов. Вот нутром чуял что 1С не затащит нормальную реализацию. Не ошибся.
Есть еще фишка из незадокументированных при работе с асинх. Нельзя делать асинхронными обработчики событий в модулях формы, у которых есть управление стандратной обработкой, т.к. при повторном вызове ее стандартная обработка уже не отключена. (это в копилку)
Спасибо, важное замечание, ведь если этого не знать, потом найти это проблему в сложной форме будет достаточно проблематично.
Все таки было бы интересно разобрать способы обработки ошибок в промисах. Насколько смог быстро нагуглить, то сейчас просто вызов асинхронной функции заворачивается в try/catch, при этом же не понятно, а как быть если у меня идет вызов 2/3/4 асинхронных функций подряд - кажду в отдельный блок try заворачивать? Если нет, то как в catch разобрать какой именно метод выкинул исключение? И если условно у меня вызывается 10 методов, не может ли быть такого что 1 промис успеет "вывалить" исключение до того как код дойдет до 10 промиса? Что будет в таком случае?
Или все таки асинки висят в какой-то другой очереди выполнения(аналогично eventloop в том же js)
Не сказано две особенности/недостатка асинхронных методов: процедуру придётся делать асинхронной и отсюда вытекает, что ее параметры будут передаваться по значению и весь стек вызовов придётся сделать асинхронным. То есть если процедура обрабатывала параметры по ссылке, то ее придётся переделывать в функцию и возвращать параметром.
Спасибо, полезное замечание!
Ух, ребята, ну вы красавчики, конечно.
Разобрали методику работы JavaScript.
Нет там никакого 1С, тупо Js под капотом.
1С - это синтаксический сахар, ха-ха
Спасибо за отзыв. Нам удалось встроить React-приложение и организовать двухстороннюю связь 1С и React, так что все что в докладе, все проверено. Мы сделали интеграцию с ChatGPT в приложении React и встроили это в 1С. Можно посмотреть как это выглядит в нашей базе знаний softonit.ru/FAQ/courses/?COURSE_ID=1&LESSON_ID=933
Другой вопрос, что не совсем верное словосочетание про "1С - это синтаксический сахар". Мы говорили про работу с Асинх. Что это упрощение старого подхода. Вы не верно поняли.
@@Softonit ну просто все что вы описываете - это нативное поведение JS. 1C просто сделали обёртку над async/await и Promise
То что говорите, что это работает только с запросами к внешнему ресурсу, вроде ChatGPT, ну так в JS все является внешним ресурсом, и любая информация извлекается по HTTP REST API.
А здесь это просто все так странно реализовано, что непонятно где использовать асинхронность.
Внутри однопоточного приложения она правда не имеет смысла.
А в JS API calls, обращения к базе, они все асинхронные же.
@@skpavlenkoпочему именно JavaScript?
@@Das.Kleine.Krokodilпотому что все что они обсуждают - это синтаксический сахар над функционалом JS, еще и такой, недоделанный. Они методами 1С дергают функции JS, на самом деле.
@@skpavlenkoсчитаешь, что не стоит освещать эти возможности в 1с?
По мне совершенно бесполезный функционал. Для меня описание оповещения сильно проще выглядит и привычнее чем какие-то асинхи и ждать. По поводу запросов в веб, так я их делаю через фоновые задания на сервере (хотя мб если они нужны на клиенте тут как-то иначе должно быть).