Тёмный

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

Веселый1С
Подписаться 7 тыс.
Просмотров 13 тыс.
50% 1

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

Наука

Опубликовано:

 

12 янв 2021

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 84   
@user-ut8lq8zb2r
@user-ut8lq8zb2r 20 дней назад
Единственный кто нормально объяснил. Эх мне бы такого учителя. Со всей благодарностью!
@DimaVort
@DimaVort 3 года назад
Спасибо за видео. Наконец, спустя много лет, мне стало понятно, о чем поет Земфира: "Меньше всего нужны мне твои callback-и")))
@barilkovetal
@barilkovetal 3 года назад
По-моему там было come back)))
@filaretbusoni3135
@filaretbusoni3135 3 года назад
я думал, там конфетки
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 2 года назад
Земфира пела про адъ
@dac8289
@dac8289 4 месяца назад
Эффект манделлы)
@igor5733
@igor5733 20 дней назад
Автор молодец, «я нахер устал». Правильно. Нехер особо заморачиваться. Хорошая подача контента 😂
@user-xp8iq4od3g
@user-xp8iq4od3g 3 года назад
Крутой ты мужик, Овсянкин. Спасибо за видео!
@invertriver
@invertriver 2 года назад
Спасибо Андрей, 1С как обычно, делает что-то "не имеющее аналогов в мире" ))))
@user-tt7vf6px7w
@user-tt7vf6px7w 3 года назад
Шикарное видео, очень понятно, доходчиво и полезно
@user-vl7bh7gd3l
@user-vl7bh7gd3l 3 года назад
В середине видео "Так, я нахер устал" Ору!
@vivettanors
@vivettanors 3 года назад
Какая же милота, спасибо
@user-ie8jh9wq5h
@user-ie8jh9wq5h 3 года назад
ЯсноПонятноОк. Спасибо за проделанную работу. Вы молодцы, вас интересно смотреть. А можно почаще видео?)))
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 года назад
Постараемся
@alexflanker25
@alexflanker25 3 года назад
Спасибо, Андрей!
@dac8289
@dac8289 4 месяца назад
Спасибо за объяснение!!!
@rakhmatovkhondamir284
@rakhmatovkhondamir284 3 года назад
Очень классно! Спасибо!
@alexeibelousov3279
@alexeibelousov3279 3 года назад
Спасибо за такое нужное видео! Да, в модуле работы с торговым оборудованием там действительно ад вызовов.. если посмотреть на процедуру печати чеков, то там можно утонуть в этих обработчиках оповещения.. Наконец 1С сделало эти асинх\ждать, лучше поздно чем никогда. Теперь похоже начнется работа по выпиливанию обработчиков оповещений из конфигураций. Мне вот интересно, когда 1С догадается что нужны ссылки на процедуры\функции? Тот же метод вызова диалога выбора мог бы иметь вид ДиалогВыбора.Показать(ссылка ОбработчикВыбораФайла); Кстати по моей практики конфы где реально используется веб-клиент и нужны заморочки с асинхронностью это ну 5-10% максимум.. да и то там используется не вся конфа в веб клиенте, а только небольшая часть (какая нибудь форма работы удаленного менеджера или торговой точки) и получается что нет никакого смысла переводить всю конфу на асинхронные вызовы, поэтому пишу все на синхронных. Для меня большая польза от асинх как раз в том что по сути можно запустить теперь несколько потоков из одной синхронной процедуры (если мне не нужно дожидаться callback), по сути аналог фоновых заданий получается, только гораздо более удобный.
@user-nr5hd9fl1w
@user-nr5hd9fl1w 2 года назад
Коллега, Ваш комментарий - золото! Поддерживаю полностью.
@tumenit
@tumenit 3 года назад
Спасибо, познавательно.
@UADaimonUA
@UADaimonUA 3 года назад
Спасибо! Подписался ))
@evgeniimelhoff9197
@evgeniimelhoff9197 2 года назад
Андрей спасибо!
@MrTorfable
@MrTorfable Год назад
Блин так-то нормально тему разжевал, все доступно, без за умных слов и воды
@user-zo6tp6wf9v
@user-zo6tp6wf9v 3 года назад
Спасибо
@Pavlyukoff
@Pavlyukoff 3 года назад
Спасибо, разбор подкапотной части наконец разложил некоторые вещи по полочкам. Остался вопрос - есть ли сакральный смысл вызова АСИНХ функций БЕЗ ждать ? (типа зачем эту возможность оставили?)
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 года назад
На данный момент смысла нет, но впоследствит может и появятся возможности вида Task.WaitAll
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 года назад
Как вариант - у метода может быть побочный эффект. Вам может быть не обязательно ждать, пока он выполнится в текущем потоке, вы просто планируете какую-то обработку на ближайшее будущее. Машина сама подхватит эту задачу и выполнит её, когда у клиентского потока будет свободное время исполнения
@Pavlyukoff
@Pavlyukoff 3 года назад
@@user-nd9cv4pd5m я пока не придумал такого кейса. Если я процедуру объявил асинх и вызываю асинх аналог - то не ждать его... Надо видимо дождаться когда оно всплывёт в работе.
@user-dv2bc9qy3i
@user-dv2bc9qy3i 3 года назад
А когда на типовых 8.3.18 завезут (зуп под рукой всё ещё 8.3.14 например) ?
@konstantinprutskih4109
@konstantinprutskih4109 3 года назад
Улучшение конечно хорошее. Вопрос когда в типовых решениях будут использовать сами, и я молчу сколько будут этому еще обучать на курсах.
@AnonAristotel
@AnonAristotel 3 года назад
Думаю зависит от текущего режима совместимости БСП. Нужен 8.3.18
@LosashExote
@LosashExote 2 года назад
Callback hell можно смягчить более вдумчивым оформлением кода, его структурированием. После просмотра осталось ощущение, что упрощение возникает в простых случаях, а вот в более сложных логиках, где требуется все сложным образом контролировать и порой явно вызывать метод ВыполнитьОбработкуОповещения, эти нововведения не применить.
@user-fd8dz7dr1o
@user-fd8dz7dr1o 3 года назад
Спасибо. Очень грамотный язык - приятно слушать. А асинх вариант ОткрытьФормуМодально() 1С добавили?
@Pavlyukoff
@Pavlyukoff 3 года назад
Походу заб[Ы/И]ли.
@user-zr4uw5ng3r
@user-zr4uw5ng3r 2 года назад
А зачем открывать форму модально? Достаточно открывать ее немодально в режиме БлокироватьОкноВладельца
@shootnicktm9445
@shootnicktm9445 3 года назад
и ни одного дизлайка =) сохраним чистоту рядов ! )
@Strafering
@Strafering 2 года назад
Скрины примеров кода из ЕДТ или визуал студио код? Просто интересно как включить подписи к процедурам и функциям о когнитивной и цикломатической сложности?
@user-nd9cv4pd5m
@user-nd9cv4pd5m 2 года назад
из vscode. возможно, если сильно попросить Олега Тымко или написать самому, то эта функциональность появится в уже имеющимся коннекторе bsl ls к edt (тот, который по честному протоколу работает)
@asoneas
@asoneas 3 года назад
А можно задать вопрос асинхронно? А где установить флажок чтобы старая функция ПоместитьФайл стала работать так как ПоместитьФайлНаСерверАсинх без дополнительных заклинаний АСИНХ и Ждать? Спасибо ;)
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 года назад
С помещением файлов там целая эпопея. Теперь мы и сами не знаем, какие семейства методов стоит считать наиболее удобными. Тут тема для отдельного видео
@user-bi1zh1dt4k
@user-bi1zh1dt4k 3 года назад
спасибо за: практичность и ненудность! эко мну пыронуло - даже готоффф донатить!
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 года назад
Ну так не сдерживайте себя! :)
@user-zy8cb7jk1b
@user-zy8cb7jk1b 3 года назад
Если результат функции хранится в стеке, то что будет с памятью при большом вызове асинхов?
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 года назад
Ничего. Имелся в виду не стек процессора, а стек стековой машины языка 1С. Он вряд ли когда-либо переполняется.
@user-zy8cb7jk1b
@user-zy8cb7jk1b 3 года назад
Да, прошу прощения, не так назвал. Спасибо
@user-nd7tp6ff8q
@user-nd7tp6ff8q 3 года назад
Ну, теперь заживем. Суровые годы ухооодят
@evgeniy4953
@evgeniy4953 2 года назад
За ними другие прихооодят Они будут тоооже трудны
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 3 года назад
Да, это был ад. Мне приходилось пилить. Потом обходил стороной, т.к. понимал что это не нормально. Видно, что не ошибся.
@chekmarevyv9395
@chekmarevyv9395 3 года назад
20:58 ))))
@NikitaJe_
@NikitaJe_ 3 года назад
Ждать и Асинх только для работу с браузером?
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 года назад
Нет, в тонком клиенте тоже работает
@maratibragimov842
@maratibragimov842 4 месяца назад
Заметил гитару, играешь? Я тоже играю
@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 разных объектов в форму. Проблема например с вражеским апи очень очень неилюзорна. Когда я получаю от это апи список из идентификаторов на обекты, мне их показывать? Нет. Хочу асинхронно собрать и заполнить строку.
@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 20 дней назад
Но я нихера не понимаю: Зачем использовать асинхронные методы - если они один йух блокируют форму? Кажется я чего то не понимаю в асинхронности. Фирма 1С пишет «блаблабла потому что браузеры блокируют всплывающие окна поэтому сделали асинх и тд», но ведь все равно в тонком клиенте все блокируется когда вызываешь асинх методы / функции.
@user-zr4uw5ng3r
@user-zr4uw5ng3r 19 дней назад
Неверно. Они не блокируют форму.
@igor5733
@igor5733 19 дней назад
@@user-zr4uw5ng3r ну я вот прям сейчас сижу за компьютером. У меня висит диалог выбора файла с оповещением. И я не могу никуда переключиться пока не закрою диалог. как называется состояние если: пока я не закрою диалог я не смогу переключиться в другую форма?! . Это блокировка интерфейса видимо, поток кода выполняется дальше, это я проверил отладчиком, только какой смысл всей этой псевдо-асинхронности если Мышкой ты все равно в программе работать не можешь…
@user-zr4uw5ng3r
@user-zr4uw5ng3r 19 дней назад
@@igor5733 вы путаете активацию окон с асинхронным выполнением кода. Доступность окон, перекрытых другими окнами, регулируется свойством формы "РежимОткрытияОкна" и не имеет никакого отношения к асинхронности.
@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-qe9ys3rd7q
@user-qe9ys3rd7q 3 года назад
Непонятные капризы)
@parennasubaru
@parennasubaru 2 года назад
Когда уже 1с научится отправлять эти вещи в отдельные потоки. Задолбал тупящий интерфейс на фоновых заданиях. Это хорошо сделано в QT , почему 1с не может от туда содрать? Про боль на мобильном клиенте вообще промолчу, жить на одном потоке это огромный позор .
@user-fl1ni4hb9n
@user-fl1ni4hb9n 3 года назад
Не понятно почему ты бомбишь. Вполне логично все. Можешь сделать лучше, предлагай 1Су
@user-nd9cv4pd5m
@user-nd9cv4pd5m 3 года назад
Могу, конечно ) И иногда даже делаю. Но вообще, они молодцы. Я бомблю только с того, что сделали слишком поздно.
@user-ws3nk7rb6m
@user-ws3nk7rb6m 2 года назад
Спасибо
Далее
ОН ТОЧНО ЗАЕДЕТ. ВЕЗДЕХОД АГ-34.
41:09
Асинхронные функции в 1С
16:42
Просмотров 23 тыс.
Docker для 1С-ников. Введение
29:01
Просмотров 17 тыс.
wireless switch without wires part 6
0:49
Просмотров 4,8 млн