Асинх/Ждать или Как устроены асинхронные процедуры в 1С

  Рет қаралды 12,681

Веселый1С

Веселый1С

3 жыл бұрын

В платформе версии 8.3.18 появились новые ключевые слова Асинх и Ждать, которые позволяют гуманным образом писать асинхронный клиентский код. Больше никаких ОбработчиковОповещения.
Разбираемся, как это все устроено на низком уровне байткода платформы 1С.
Упомянутая в видео обработка 1С:Ассемблер находится здесь: github.com/EvilBeaver/v8asm

Пікірлер: 84
@user-ut8lq8zb2r
@user-ut8lq8zb2r Күн бұрын
Единственный кто нормально объяснил. Эх мне бы такого учителя. Со всей благодарностью!
@DimaVort
@DimaVort 3 жыл бұрын
Спасибо за видео. Наконец, спустя много лет, мне стало понятно, о чем поет Земфира: "Меньше всего нужны мне твои callback-и")))
@barilkovetal
@barilkovetal 3 жыл бұрын
По-моему там было come back)))
@filaretbusoni3135
@filaretbusoni3135 3 жыл бұрын
я думал, там конфетки
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 2 жыл бұрын
Земфира пела про адъ
@dac8289
@dac8289 4 ай бұрын
Эффект манделлы)
@igor5733
@igor5733 Күн бұрын
Автор молодец, «я нахер устал». Правильно. Нехер особо заморачиваться. Хорошая подача контента 😂
@user-xp8iq4od3g
@user-xp8iq4od3g 3 жыл бұрын
Крутой ты мужик, Овсянкин. Спасибо за видео!
@invertriver
@invertriver 2 жыл бұрын
Спасибо Андрей, 1С как обычно, делает что-то "не имеющее аналогов в мире" ))))
@user-vl7bh7gd3l
@user-vl7bh7gd3l 3 жыл бұрын
В середине видео "Так, я нахер устал" Ору!
@dac8289
@dac8289 4 ай бұрын
Спасибо за объяснение!!!
@vivettanors
@vivettanors 3 жыл бұрын
Какая же милота, спасибо
@user-tt7vf6px7w
@user-tt7vf6px7w 3 жыл бұрын
Шикарное видео, очень понятно, доходчиво и полезно
@alexeibelousov3279
@alexeibelousov3279 3 жыл бұрын
Спасибо за такое нужное видео! Да, в модуле работы с торговым оборудованием там действительно ад вызовов.. если посмотреть на процедуру печати чеков, то там можно утонуть в этих обработчиках оповещения.. Наконец 1С сделало эти асинх\ждать, лучше поздно чем никогда. Теперь похоже начнется работа по выпиливанию обработчиков оповещений из конфигураций. Мне вот интересно, когда 1С догадается что нужны ссылки на процедуры\функции? Тот же метод вызова диалога выбора мог бы иметь вид ДиалогВыбора.Показать(ссылка ОбработчикВыбораФайла); Кстати по моей практики конфы где реально используется веб-клиент и нужны заморочки с асинхронностью это ну 5-10% максимум.. да и то там используется не вся конфа в веб клиенте, а только небольшая часть (какая нибудь форма работы удаленного менеджера или торговой точки) и получается что нет никакого смысла переводить всю конфу на асинхронные вызовы, поэтому пишу все на синхронных. Для меня большая польза от асинх как раз в том что по сути можно запустить теперь несколько потоков из одной синхронной процедуры (если мне не нужно дожидаться callback), по сути аналог фоновых заданий получается, только гораздо более удобный.
@user-nr5hd9fl1w
@user-nr5hd9fl1w 2 жыл бұрын
Коллега, Ваш комментарий - золото! Поддерживаю полностью.
@tumenit
@tumenit 3 жыл бұрын
Спасибо, познавательно.
@alexflanker25
@alexflanker25 3 жыл бұрын
Спасибо, Андрей!
@MrTorfable
@MrTorfable Жыл бұрын
Блин так-то нормально тему разжевал, все доступно, без за умных слов и воды
@user-ie8jh9wq5h
@user-ie8jh9wq5h 3 жыл бұрын
ЯсноПонятноОк. Спасибо за проделанную работу. Вы молодцы, вас интересно смотреть. А можно почаще видео?)))
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Постараемся
@rakhmatovkhondamir284
@rakhmatovkhondamir284 3 жыл бұрын
Очень классно! Спасибо!
@UADaimonUA
@UADaimonUA 3 жыл бұрын
Спасибо! Подписался ))
@evgeniimelhoff9197
@evgeniimelhoff9197 2 жыл бұрын
Андрей спасибо!
@user-dv2bc9qy3i
@user-dv2bc9qy3i 3 жыл бұрын
А когда на типовых 8.3.18 завезут (зуп под рукой всё ещё 8.3.14 например) ?
@Pavlyukoff
@Pavlyukoff 3 жыл бұрын
Спасибо, разбор подкапотной части наконец разложил некоторые вещи по полочкам. Остался вопрос - есть ли сакральный смысл вызова АСИНХ функций БЕЗ ждать ? (типа зачем эту возможность оставили?)
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
На данный момент смысла нет, но впоследствит может и появятся возможности вида Task.WaitAll
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Как вариант - у метода может быть побочный эффект. Вам может быть не обязательно ждать, пока он выполнится в текущем потоке, вы просто планируете какую-то обработку на ближайшее будущее. Машина сама подхватит эту задачу и выполнит её, когда у клиентского потока будет свободное время исполнения
@Pavlyukoff
@Pavlyukoff 3 жыл бұрын
@@user-nd9cv4pd5m я пока не придумал такого кейса. Если я процедуру объявил асинх и вызываю асинх аналог - то не ждать его... Надо видимо дождаться когда оно всплывёт в работе.
@user-zo6tp6wf9v
@user-zo6tp6wf9v 3 жыл бұрын
Спасибо
@Strafering
@Strafering 2 жыл бұрын
Скрины примеров кода из ЕДТ или визуал студио код? Просто интересно как включить подписи к процедурам и функциям о когнитивной и цикломатической сложности?
@user-nd9cv4pd5m
@user-nd9cv4pd5m 2 жыл бұрын
из vscode. возможно, если сильно попросить Олега Тымко или написать самому, то эта функциональность появится в уже имеющимся коннекторе bsl ls к edt (тот, который по честному протоколу работает)
@user-fd8dz7dr1o
@user-fd8dz7dr1o 3 жыл бұрын
Спасибо. Очень грамотный язык - приятно слушать. А асинх вариант ОткрытьФормуМодально() 1С добавили?
@Pavlyukoff
@Pavlyukoff 3 жыл бұрын
Походу заб[Ы/И]ли.
@user-zr4uw5ng3r
@user-zr4uw5ng3r 2 жыл бұрын
А зачем открывать форму модально? Достаточно открывать ее немодально в режиме БлокироватьОкноВладельца
@asoneas
@asoneas 3 жыл бұрын
А можно задать вопрос асинхронно? А где установить флажок чтобы старая функция ПоместитьФайл стала работать так как ПоместитьФайлНаСерверАсинх без дополнительных заклинаний АСИНХ и Ждать? Спасибо ;)
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
С помещением файлов там целая эпопея. Теперь мы и сами не знаем, какие семейства методов стоит считать наиболее удобными. Тут тема для отдельного видео
@konstantinprutskih4109
@konstantinprutskih4109 3 жыл бұрын
Улучшение конечно хорошее. Вопрос когда в типовых решениях будут использовать сами, и я молчу сколько будут этому еще обучать на курсах.
@AnonAristotel
@AnonAristotel 3 жыл бұрын
Думаю зависит от текущего режима совместимости БСП. Нужен 8.3.18
@user-zy8cb7jk1b
@user-zy8cb7jk1b 3 жыл бұрын
Если результат функции хранится в стеке, то что будет с памятью при большом вызове асинхов?
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Ничего. Имелся в виду не стек процессора, а стек стековой машины языка 1С. Он вряд ли когда-либо переполняется.
@user-zy8cb7jk1b
@user-zy8cb7jk1b 3 жыл бұрын
Да, прошу прощения, не так назвал. Спасибо
@LosashExote
@LosashExote 2 жыл бұрын
Callback hell можно смягчить более вдумчивым оформлением кода, его структурированием. После просмотра осталось ощущение, что упрощение возникает в простых случаях, а вот в более сложных логиках, где требуется все сложным образом контролировать и порой явно вызывать метод ВыполнитьОбработкуОповещения, эти нововведения не применить.
@shootnicktm9445
@shootnicktm9445 3 жыл бұрын
и ни одного дизлайка =) сохраним чистоту рядов ! )
@user-bi1zh1dt4k
@user-bi1zh1dt4k 3 жыл бұрын
спасибо за: практичность и ненудность! эко мну пыронуло - даже готоффф донатить!
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Ну так не сдерживайте себя! :)
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 3 жыл бұрын
Да, это был ад. Мне приходилось пилить. Потом обходил стороной, т.к. понимал что это не нормально. Видно, что не ошибся.
@maratibragimov842
@maratibragimov842 3 ай бұрын
Заметил гитару, играешь? Я тоже играю
@NikitaJe_
@NikitaJe_ 3 жыл бұрын
Ждать и Асинх только для работу с браузером?
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Нет, в тонком клиенте тоже работает
@user-nd7tp6ff8q
@user-nd7tp6ff8q 3 жыл бұрын
Ну, теперь заживем. Суровые годы ухооодят
@evgeniy4953
@evgeniy4953 2 жыл бұрын
За ними другие прихооодят Они будут тоооже трудны
@werwolfwaffen3657
@werwolfwaffen3657 2 жыл бұрын
То есть моя мечта о том что можно собирать в МВТ "одновременно" собирать кучку ВТ разрозненных данных разбилась о гору моих ожиданий?
@user-nd9cv4pd5m
@user-nd9cv4pd5m 2 жыл бұрын
Ну не совсем. Смотря что вы хотите сделать и зачем хотите собирать кучку ВТ в одну. Не факт, что даже наличие реальной параллельности вам тут поможет. Что за задачу вы хотите решить таким образом?
@werwolfwaffen3657
@werwolfwaffen3657 2 жыл бұрын
@@user-nd9cv4pd5m задачка была вида : собрать асинхронно в менеджер временных таблиц три разных таблицы данных. А уже дождавшись их "крутить" как хочется, или асинхронно собрать какие-то данные которые буду связывать позже (есть насколько взаимодействий с веб-сервисами вражеского по)
@user-zr4uw5ng3r
@user-zr4uw5ng3r 2 жыл бұрын
@@werwolfwaffen3657 да, но зачем это делать? Почему решили, что асинхронность тут как-то поможет?
@werwolfwaffen3657
@werwolfwaffen3657 2 жыл бұрын
@@user-zr4uw5ng3r конечно не поможет. Пусть юзер сидит и ждёт пока у него загрузиться и обработается последовательно 20 разных объектов в форму. Проблема например с вражеским апи очень очень неилюзорна. Когда я получаю от это апи список из идентификаторов на обекты, мне их показывать? Нет. Хочу асинхронно собрать и заполнить строку.
@chekmarevyv9395
@chekmarevyv9395 3 жыл бұрын
20:58 ))))
@Psyonic000
@Psyonic000 2 жыл бұрын
Как собрать обработку ассемблера? Это просто жесть, почему нельзя выложить epf????
@user-nd9cv4pd5m
@user-nd9cv4pd5m 2 жыл бұрын
По ссылке проект для EDT на github. В 21 веке принято выкладывать исходники, а не собраные бинарники.
@vladyan01
@vladyan01 Жыл бұрын
Почему у 1С такая странная реализация программирования, не как в других языках?
@user-nd9cv4pd5m
@user-nd9cv4pd5m Жыл бұрын
Что такое "реализация программирования"? В чем странность по сравнению с другими языками?
@vladyan01
@vladyan01 Жыл бұрын
@@user-nd9cv4pd5m ну да, странно выразился получается. Я имею ввиду например функция и процедура раздельно, нигде такого не встречал, но если с процедуры пустой возврат делать, то работает. Нету свитча. Перечисления это дрлжно по сути число выраженное через слова, но если сравнить первый элемент с нулем или единицей, то выходит ложь. Хотя суть перечисления сравнивать числа вместо слов, но под видом слов. Конечно это всё мелочи и работе не сильно мешает, но интересно почему так разрабы платформы реализовали. Или например сразу не сделали язык с поддержкой ООП, ведь платформа на c++ с ООП написана, они должны были знать про его существование)))
@user-nd9cv4pd5m
@user-nd9cv4pd5m Жыл бұрын
@@vladyan01 Ну тут можно много о чем поспорить. Например, функция и процедура раздельно - в Visual Basic и язык 1С во многом на него похож, т.к. должен быть простым. Далее, тезис "Перечисления это дрлжно по сути число выраженное через слова" ложный. Никто не говорит, что перечисление это обязательно число. Так сделано в Си, возможно еще где-то но обычно это все равно деталь реализации. Перечисление это перечисление, числа не при чем. Про ООП в 1С - это старый холивар. Оно, во-первых, есть, хоть и не такое как в других языках, а во-вторых - еще никто не привел хорошего примера - зачем ООП в 1С.
@vladyan01
@vladyan01 Жыл бұрын
@@user-nd9cv4pd5m да я не спорю, так по сути ООП в 1С мб и не нужно) Можно сказать без него проще новичку будет) Да и русский язык только по началу напрягает, потом даже нравится становится, и думать так проще на родном языке по идее, и не надо в Гугл лезть переводить слова для названия переменной))) Вообще мне кажется разрабы когда делали 1С, наверно хотели чтобы бухгалтера понимали язык и сами что-то делали там, хотя это странно и маловероятно, но это объясняет русский язык и отсутствие сложных абстракций))
@vladyan01
@vladyan01 Жыл бұрын
@@user-nd9cv4pd5m а на счёт перечисления, я просто один раз воткнулся с этим. Делал функцию на проверку цвета и передавал в параметры цифру и пытался сравнить с WebЦвета. и ничего не работало хД ) Перечисление когда изучал объясняли это типа цифры сравнивать компу быстрее, чем строки, а человеку со словами удобнее работать и вот такая штука была изобретена, думал так везде сделано для ускорения)
@roxanapokutnaya7700
@roxanapokutnaya7700 2 жыл бұрын
Зачем было делать пометку Асинх. Достаточно было добавить оператор ждать и все. Нет добавили костыль с Асинх. Ппц
@user-zr4uw5ng3r
@user-zr4uw5ng3r 2 жыл бұрын
Ждать является ключевым словом только в процедурах Асинх. В обычных процедурах это может быть имя переменной. Совместимость - это важно
@igor5733
@igor5733 Күн бұрын
Но я нихера не понимаю: Зачем использовать асинхронные методы - если они один йух блокируют форму? Кажется я чего то не понимаю в асинхронности. Фирма 1С пишет «блаблабла потому что браузеры блокируют всплывающие окна поэтому сделали асинх и тд», но ведь все равно в тонком клиенте все блокируется когда вызываешь асинх методы / функции.
@user-zr4uw5ng3r
@user-zr4uw5ng3r 23 сағат бұрын
Неверно. Они не блокируют форму.
@igor5733
@igor5733 23 сағат бұрын
@@user-zr4uw5ng3r ну я вот прям сейчас сижу за компьютером. У меня висит диалог выбора файла с оповещением. И я не могу никуда переключиться пока не закрою диалог. как называется состояние если: пока я не закрою диалог я не смогу переключиться в другую форма?! . Это блокировка интерфейса видимо, поток кода выполняется дальше, это я проверил отладчиком, только какой смысл всей этой псевдо-асинхронности если Мышкой ты все равно в программе работать не можешь…
@user-zr4uw5ng3r
@user-zr4uw5ng3r 23 сағат бұрын
@@igor5733 вы путаете активацию окон с асинхронным выполнением кода. Доступность окон, перекрытых другими окнами, регулируется свойством формы "РежимОткрытияОкна" и не имеет никакого отношения к асинхронности.
@parennasubaru
@parennasubaru 2 жыл бұрын
Когда уже 1с научится отправлять эти вещи в отдельные потоки. Задолбал тупящий интерфейс на фоновых заданиях. Это хорошо сделано в QT , почему 1с не может от туда содрать? Про боль на мобильном клиенте вообще промолчу, жить на одном потоке это огромный позор .
@user-qe9ys3rd7q
@user-qe9ys3rd7q 3 жыл бұрын
Непонятные капризы)
@chistovpavel
@chistovpavel 3 жыл бұрын
Эй, ты чего мою работу разбираешь????
@user-zr4uw5ng3r
@user-zr4uw5ng3r 3 жыл бұрын
Я там даже и упоминаю тебя
@chistovpavel
@chistovpavel 3 жыл бұрын
@@user-zr4uw5ng3r Допиленный ассемблер пришлешь? :) Но я вангую он у меня на маке не особо взлетит...
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Не взлетит
@user-zr4uw5ng3r
@user-zr4uw5ng3r 3 жыл бұрын
@@chistovpavel про ассемблер вышло новое видео. А насчет его доработки - она оказалась не нужна, я наврал, что Асинх выставляет флаг. Ключевое слово Асинх не выставляет флаг, и вообще никак не отражается в модуле и зачем нужно - не совсем понятно
@parennasubaru
@parennasubaru 2 жыл бұрын
@@user-zr4uw5ng3r асинх говори о том, какой версии код 18+ или старый, для формирования байт кода.
@user-fl1ni4hb9n
@user-fl1ni4hb9n 3 жыл бұрын
Не понятно почему ты бомбишь. Вполне логично все. Можешь сделать лучше, предлагай 1Су
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 жыл бұрын
Могу, конечно ) И иногда даже делаю. Но вообще, они молодцы. Я бомблю только с того, что сделали слишком поздно.
@user-ws3nk7rb6m
@user-ws3nk7rb6m 2 жыл бұрын
Спасибо
Can you beat this impossible game?
00:13
LOL
Рет қаралды 39 МЛН
Omega Boy Past 3 #funny #viral #comedy
00:22
CRAZY GREAPA
Рет қаралды 30 МЛН
1❤️
00:20
すしらーめん《りく》
Рет қаралды 32 МЛН
Did you find it?! 🤔✨✍️ #funnyart
00:11
Artistomg
Рет қаралды 121 МЛН
Суббота с Яном Маричи - 02.06.24
Ян Маричи
Рет қаралды 8
Docker для 1С-ников. Введение
29:01
Веселый1С
Рет қаралды 17 М.
Асинхронные функции в 1С
16:42
IRONSKILLS - Курсы по 1С
Рет қаралды 23 М.
Новые возможности платформы 1С версии 8.3.18, асинхронные методы.
23:06
Курсы 1С и экзамены (1С:Учебный центр №1)
Рет қаралды 25 М.
Теперь это его телефон
0:21
Хорошие Новости
Рет қаралды 1,7 МЛН
Huawei который почти как iPhone
0:53
Romancev768
Рет қаралды 493 М.
cool watercooled mobile phone radiator #tech #cooler #ytfeed
0:14
Stark Edition
Рет қаралды 7 МЛН
What percentage of charge is on your phone now? #entertainment
0:14
What’s your charging level??
0:14
Татьяна Дука
Рет қаралды 7 МЛН