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

Поділитися
Вставка
  • Опубліковано 18 січ 2025

КОМЕНТАРІ • 78

  • @DimaVort
    @DimaVort 4 роки тому +33

    Спасибо за видео. Наконец, спустя много лет, мне стало понятно, о чем поет Земфира: "Меньше всего нужны мне твои callback-и")))

  • @somebody-c3b
    @somebody-c3b 4 роки тому +22

    Крутой ты мужик, Овсянкин. Спасибо за видео!

  • @ЛёликБолик-в7р
    @ЛёликБолик-в7р 7 місяців тому

    Единственный кто нормально объяснил. Эх мне бы такого учителя. Со всей благодарностью!

  • @invertriver
    @invertriver 3 роки тому +3

    Спасибо Андрей, 1С как обычно, делает что-то "не имеющее аналогов в мире" ))))

  • @vivettanors
    @vivettanors 4 роки тому +3

    Какая же милота, спасибо

  • @МаксимКозловський-е5л

    ЯсноПонятноОк. Спасибо за проделанную работу. Вы молодцы, вас интересно смотреть. А можно почаще видео?)))

  • @Андрей-ф3ы7б
    @Андрей-ф3ы7б 4 роки тому +1

    Шикарное видео, очень понятно, доходчиво и полезно

  • @dac8289
    @dac8289 Рік тому

    Спасибо за объяснение!!!

  • @alexeibelousov3279
    @alexeibelousov3279 4 роки тому +4

    Спасибо за такое нужное видео! Да, в модуле работы с торговым оборудованием там действительно ад вызовов.. если посмотреть на процедуру печати чеков, то там можно утонуть в этих обработчиках оповещения.. Наконец 1С сделало эти асинх\ждать, лучше поздно чем никогда. Теперь похоже начнется работа по выпиливанию обработчиков оповещений из конфигураций. Мне вот интересно, когда 1С догадается что нужны ссылки на процедуры\функции? Тот же метод вызова диалога выбора мог бы иметь вид ДиалогВыбора.Показать(ссылка ОбработчикВыбораФайла);
    Кстати по моей практики конфы где реально используется веб-клиент и нужны заморочки с асинхронностью это ну 5-10% максимум.. да и то там используется не вся конфа в веб клиенте, а только небольшая часть (какая нибудь форма работы удаленного менеджера или торговой точки) и получается что нет никакого смысла переводить всю конфу на асинхронные вызовы, поэтому пишу все на синхронных.
    Для меня большая польза от асинх как раз в том что по сути можно запустить теперь несколько потоков из одной синхронной процедуры (если мне не нужно дожидаться callback), по сути аналог фоновых заданий получается, только гораздо более удобный.

    • @СергейБурыка-б8м
      @СергейБурыка-б8м 3 роки тому

      Коллега, Ваш комментарий - золото! Поддерживаю полностью.

  • @igor5733
    @igor5733 7 місяців тому

    Автор молодец, «я нахер устал». Правильно. Нехер особо заморачиваться. Хорошая подача контента 😂

  • @ДГоу
    @ДГоу 4 роки тому +7

    В середине видео "Так, я нахер устал" Ору!

  • @MrTorfable
    @MrTorfable Рік тому +1

    Блин так-то нормально тему разжевал, все доступно, без за умных слов и воды

  • @UADaimonUA
    @UADaimonUA 4 роки тому +4

    Спасибо! Подписался ))

  • @tumenit
    @tumenit 4 роки тому +1

    Спасибо, познавательно.

  • @rakhmatovkhondamir284
    @rakhmatovkhondamir284 3 роки тому

    Очень классно! Спасибо!

  • @evgeniimelhoff9197
    @evgeniimelhoff9197 3 роки тому

    Андрей спасибо!

  • @konstantinprutskih4109
    @konstantinprutskih4109 3 роки тому +1

    Улучшение конечно хорошее. Вопрос когда в типовых решениях будут использовать сами, и я молчу сколько будут этому еще обучать на курсах.

    • @AnonAristotel
      @AnonAristotel 3 роки тому

      Думаю зависит от текущего режима совместимости БСП. Нужен 8.3.18

  • @Pavlyukoff
    @Pavlyukoff 3 роки тому +1

    Спасибо, разбор подкапотной части наконец разложил некоторые вещи по полочкам. Остался вопрос - есть ли сакральный смысл вызова АСИНХ функций БЕЗ ждать ? (типа зачем эту возможность оставили?)

    • @Веселый1С
      @Веселый1С  3 роки тому

      На данный момент смысла нет, но впоследствит может и появятся возможности вида Task.WaitAll

    • @Веселый1С
      @Веселый1С  3 роки тому

      Как вариант - у метода может быть побочный эффект. Вам может быть не обязательно ждать, пока он выполнится в текущем потоке, вы просто планируете какую-то обработку на ближайшее будущее. Машина сама подхватит эту задачу и выполнит её, когда у клиентского потока будет свободное время исполнения

    • @Pavlyukoff
      @Pavlyukoff 3 роки тому

      @@Веселый1С я пока не придумал такого кейса.
      Если я процедуру объявил асинх и вызываю асинх аналог - то не ждать его... Надо видимо дождаться когда оно всплывёт в работе.

  • @alexflanker25
    @alexflanker25 4 роки тому

    Спасибо, Андрей!

  • @Strafering
    @Strafering 3 роки тому

    Скрины примеров кода из ЕДТ или визуал студио код? Просто интересно как включить подписи к процедурам и функциям о когнитивной и цикломатической сложности?

    • @Веселый1С
      @Веселый1С  3 роки тому

      из vscode. возможно, если сильно попросить Олега Тымко или написать самому, то эта функциональность появится в уже имеющимся коннекторе bsl ls к edt (тот, который по честному протоколу работает)

  • @Дремлин
    @Дремлин 4 роки тому

    Спасибо. Очень грамотный язык - приятно слушать. А асинх вариант ОткрытьФормуМодально() 1С добавили?

    • @Pavlyukoff
      @Pavlyukoff 3 роки тому

      Походу заб[Ы/И]ли.

  • @shootnicktm9445
    @shootnicktm9445 4 роки тому

    и ни одного дизлайка =) сохраним чистоту рядов ! )

  • @onecdev
    @onecdev 4 роки тому

    А когда на типовых 8.3.18 завезут (зуп под рукой всё ещё 8.3.14 например) ?

  • @LosashExote
    @LosashExote 3 роки тому

    Callback hell можно смягчить более вдумчивым оформлением кода, его структурированием. После просмотра осталось ощущение, что упрощение возникает в простых случаях, а вот в более сложных логиках, где требуется все сложным образом контролировать и порой явно вызывать метод ВыполнитьОбработкуОповещения, эти нововведения не применить.

  • @maratibragimov842
    @maratibragimov842 11 місяців тому

    Заметил гитару, играешь? Я тоже играю

  • @vladyan01
    @vladyan01 2 роки тому

    Почему у 1С такая странная реализация программирования, не как в других языках?

    • @Веселый1С
      @Веселый1С  2 роки тому

      Что такое "реализация программирования"? В чем странность по сравнению с другими языками?

    • @vladyan01
      @vladyan01 2 роки тому

      @@Веселый1С ну да, странно выразился получается. Я имею ввиду например функция и процедура раздельно, нигде такого не встречал, но если с процедуры пустой возврат делать, то работает. Нету свитча. Перечисления это дрлжно по сути число выраженное через слова, но если сравнить первый элемент с нулем или единицей, то выходит ложь. Хотя суть перечисления сравнивать числа вместо слов, но под видом слов. Конечно это всё мелочи и работе не сильно мешает, но интересно почему так разрабы платформы реализовали. Или например сразу не сделали язык с поддержкой ООП, ведь платформа на c++ с ООП написана, они должны были знать про его существование)))

    • @Веселый1С
      @Веселый1С  2 роки тому

      @@vladyan01 Ну тут можно много о чем поспорить. Например, функция и процедура раздельно - в Visual Basic и язык 1С во многом на него похож, т.к. должен быть простым.
      Далее, тезис "Перечисления это дрлжно по сути число выраженное через слова" ложный. Никто не говорит, что перечисление это обязательно число. Так сделано в Си, возможно еще где-то но обычно это все равно деталь реализации. Перечисление это перечисление, числа не при чем. Про ООП в 1С - это старый холивар. Оно, во-первых, есть, хоть и не такое как в других языках, а во-вторых - еще никто не привел хорошего примера - зачем ООП в 1С.

    • @vladyan01
      @vladyan01 2 роки тому

      @@Веселый1С да я не спорю, так по сути ООП в 1С мб и не нужно) Можно сказать без него проще новичку будет) Да и русский язык только по началу напрягает, потом даже нравится становится, и думать так проще на родном языке по идее, и не надо в Гугл лезть переводить слова для названия переменной))) Вообще мне кажется разрабы когда делали 1С, наверно хотели чтобы бухгалтера понимали язык и сами что-то делали там, хотя это странно и маловероятно, но это объясняет русский язык и отсутствие сложных абстракций))

    • @vladyan01
      @vladyan01 2 роки тому

      @@Веселый1С а на счёт перечисления, я просто один раз воткнулся с этим. Делал функцию на проверку цвета и передавал в параметры цифру и пытался сравнить с WebЦвета. и ничего не работало хД ) Перечисление когда изучал объясняли это типа цифры сравнивать компу быстрее, чем строки, а человеку со словами удобнее работать и вот такая штука была изобретена, думал так везде сделано для ускорения)

  • @Psyonic000
    @Psyonic000 2 роки тому

    Как собрать обработку ассемблера? Это просто жесть, почему нельзя выложить epf????

    • @Веселый1С
      @Веселый1С  2 роки тому

      По ссылке проект для EDT на github. В 21 веке принято выкладывать исходники, а не собраные бинарники.

  • @СергейВасилевич-т4ы

    Спасибо

  • @asoneas
    @asoneas 4 роки тому

    А можно задать вопрос асинхронно?
    А где установить флажок чтобы старая функция ПоместитьФайл стала работать так как ПоместитьФайлНаСерверАсинх без дополнительных заклинаний АСИНХ и Ждать? Спасибо ;)

    • @Веселый1С
      @Веселый1С  4 роки тому +1

      С помещением файлов там целая эпопея. Теперь мы и сами не знаем, какие семейства методов стоит считать наиболее удобными. Тут тема для отдельного видео

  • @ІмяПрізвище-н4ю
    @ІмяПрізвище-н4ю 4 роки тому

    спасибо за: практичность и ненудность! эко мну пыронуло - даже готоффф донатить!

  • @werwolfwaffen3657
    @werwolfwaffen3657 3 роки тому

    То есть моя мечта о том что можно собирать в МВТ "одновременно" собирать кучку ВТ разрозненных данных разбилась о гору моих ожиданий?

    • @Веселый1С
      @Веселый1С  3 роки тому

      Ну не совсем. Смотря что вы хотите сделать и зачем хотите собирать кучку ВТ в одну. Не факт, что даже наличие реальной параллельности вам тут поможет. Что за задачу вы хотите решить таким образом?

    • @werwolfwaffen3657
      @werwolfwaffen3657 3 роки тому

      @@Веселый1С задачка была вида : собрать асинхронно в менеджер временных таблиц три разных таблицы данных. А уже дождавшись их "крутить" как хочется, или асинхронно собрать какие-то данные которые буду связывать позже (есть насколько взаимодействий с веб-сервисами вражеского по)

    • @werwolfwaffen3657
      @werwolfwaffen3657 3 роки тому

      @Андрей Овсянкин конечно не поможет. Пусть юзер сидит и ждёт пока у него загрузиться и обработается последовательно 20 разных объектов в форму. Проблема например с вражеским апи очень очень неилюзорна. Когда я получаю от это апи список из идентификаторов на обекты, мне их показывать? Нет. Хочу асинхронно собрать и заполнить строку.

  • @ИванЛопухов-ь5д
    @ИванЛопухов-ь5д 4 роки тому

    Если результат функции хранится в стеке, то что будет с памятью при большом вызове асинхов?

    • @Веселый1С
      @Веселый1С  4 роки тому

      Ничего. Имелся в виду не стек процессора, а стек стековой машины языка 1С. Он вряд ли когда-либо переполняется.

    • @ИванЛопухов-ь5д
      @ИванЛопухов-ь5д 4 роки тому

      Да, прошу прощения, не так назвал. Спасибо

  • @NikitaJe_
    @NikitaJe_ 3 роки тому

    Ждать и Асинх только для работу с браузером?

    • @Веселый1С
      @Веселый1С  3 роки тому

      Нет, в тонком клиенте тоже работает

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil 3 роки тому

    Да, это был ад. Мне приходилось пилить.
    Потом обходил стороной, т.к. понимал что это не нормально. Видно, что не ошибся.

  • @НажорМажоров
    @НажорМажоров 4 роки тому

    Ну, теперь заживем. Суровые годы ухооодят

    • @evgeniy4953
      @evgeniy4953 3 роки тому +1

      За ними другие прихооодят
      Они будут тоооже трудны

  • @igor5733
    @igor5733 7 місяців тому

    Но я нихера не понимаю:
    Зачем использовать асинхронные методы - если они один йух блокируют форму? Кажется я чего то не понимаю в асинхронности. Фирма 1С пишет «блаблабла потому что браузеры блокируют всплывающие окна поэтому сделали асинх и тд», но ведь все равно в тонком клиенте все блокируется когда вызываешь асинх методы / функции.

    • @igor5733
      @igor5733 7 місяців тому

      @user-zr4uw5ng3r ну я вот прям сейчас сижу за компьютером. У меня висит диалог выбора файла с оповещением. И я не могу никуда переключиться пока не закрою диалог. как называется состояние если: пока я не закрою диалог я не смогу переключиться в другую форма?! . Это блокировка интерфейса видимо, поток кода выполняется дальше, это я проверил отладчиком, только какой смысл всей этой псевдо-асинхронности если Мышкой ты все равно в программе работать не можешь…

  • @roxanapokutnaya7700
    @roxanapokutnaya7700 3 роки тому

    Зачем было делать пометку Асинх. Достаточно было добавить оператор ждать и все. Нет добавили костыль с Асинх. Ппц

  • @chekmarevyv9395
    @chekmarevyv9395 4 роки тому

    20:58 ))))

  • @chistovpavel
    @chistovpavel 4 роки тому +5

    Эй, ты чего мою работу разбираешь????

    • @chistovpavel
      @chistovpavel 4 роки тому

      @Андрей Овсянкин Допиленный ассемблер пришлешь? :) Но я вангую он у меня на маке не особо взлетит...

    • @Веселый1С
      @Веселый1С  4 роки тому

      Не взлетит

    • @parennasubaru
      @parennasubaru 3 роки тому

      @Андрей Овсянкин асинх говори о том, какой версии код 18+ или старый, для формирования байт кода.

  • @parennasubaru
    @parennasubaru 3 роки тому

    Когда уже 1с научится отправлять эти вещи в отдельные потоки. Задолбал тупящий интерфейс на фоновых заданиях. Это хорошо сделано в QT , почему 1с не может от туда содрать? Про боль на мобильном клиенте вообще промолчу, жить на одном потоке это огромный позор .

  • @ДмитрийМакаревич-г9й

    Непонятные капризы)

  • @ПетрПетров-щ7ц
    @ПетрПетров-щ7ц 4 роки тому

    Не понятно почему ты бомбишь. Вполне логично все. Можешь сделать лучше, предлагай 1Су

    • @Веселый1С
      @Веселый1С  4 роки тому

      Могу, конечно ) И иногда даже делаю. Но вообще, они молодцы. Я бомблю только с того, что сделали слишком поздно.

  • @ИльяСахарюк
    @ИльяСахарюк 2 роки тому

    Спасибо