Спасибо за такое нужное видео! Да, в модуле работы с торговым оборудованием там действительно ад вызовов.. если посмотреть на процедуру печати чеков, то там можно утонуть в этих обработчиках оповещения.. Наконец 1С сделало эти асинх\ждать, лучше поздно чем никогда. Теперь похоже начнется работа по выпиливанию обработчиков оповещений из конфигураций. Мне вот интересно, когда 1С догадается что нужны ссылки на процедуры\функции? Тот же метод вызова диалога выбора мог бы иметь вид ДиалогВыбора.Показать(ссылка ОбработчикВыбораФайла); Кстати по моей практики конфы где реально используется веб-клиент и нужны заморочки с асинхронностью это ну 5-10% максимум.. да и то там используется не вся конфа в веб клиенте, а только небольшая часть (какая нибудь форма работы удаленного менеджера или торговой точки) и получается что нет никакого смысла переводить всю конфу на асинхронные вызовы, поэтому пишу все на синхронных. Для меня большая польза от асинх как раз в том что по сути можно запустить теперь несколько потоков из одной синхронной процедуры (если мне не нужно дожидаться callback), по сути аналог фоновых заданий получается, только гораздо более удобный.
Спасибо, разбор подкапотной части наконец разложил некоторые вещи по полочкам. Остался вопрос - есть ли сакральный смысл вызова АСИНХ функций БЕЗ ждать ? (типа зачем эту возможность оставили?)
Как вариант - у метода может быть побочный эффект. Вам может быть не обязательно ждать, пока он выполнится в текущем потоке, вы просто планируете какую-то обработку на ближайшее будущее. Машина сама подхватит эту задачу и выполнит её, когда у клиентского потока будет свободное время исполнения
@@Веселый1С я пока не придумал такого кейса. Если я процедуру объявил асинх и вызываю асинх аналог - то не ждать его... Надо видимо дождаться когда оно всплывёт в работе.
Callback hell можно смягчить более вдумчивым оформлением кода, его структурированием. После просмотра осталось ощущение, что упрощение возникает в простых случаях, а вот в более сложных логиках, где требуется все сложным образом контролировать и порой явно вызывать метод ВыполнитьОбработкуОповещения, эти нововведения не применить.
Скрины примеров кода из ЕДТ или визуал студио код? Просто интересно как включить подписи к процедурам и функциям о когнитивной и цикломатической сложности?
из vscode. возможно, если сильно попросить Олега Тымко или написать самому, то эта функциональность появится в уже имеющимся коннекторе bsl ls к edt (тот, который по честному протоколу работает)
А можно задать вопрос асинхронно? А где установить флажок чтобы старая функция ПоместитьФайл стала работать так как ПоместитьФайлНаСерверАсинх без дополнительных заклинаний АСИНХ и Ждать? Спасибо ;)
С помещением файлов там целая эпопея. Теперь мы и сами не знаем, какие семейства методов стоит считать наиболее удобными. Тут тема для отдельного видео
Ну не совсем. Смотря что вы хотите сделать и зачем хотите собирать кучку ВТ в одну. Не факт, что даже наличие реальной параллельности вам тут поможет. Что за задачу вы хотите решить таким образом?
@@Веселый1С задачка была вида : собрать асинхронно в менеджер временных таблиц три разных таблицы данных. А уже дождавшись их "крутить" как хочется, или асинхронно собрать какие-то данные которые буду связывать позже (есть насколько взаимодействий с веб-сервисами вражеского по)
@Андрей Овсянкин конечно не поможет. Пусть юзер сидит и ждёт пока у него загрузиться и обработается последовательно 20 разных объектов в форму. Проблема например с вражеским апи очень очень неилюзорна. Когда я получаю от это апи список из идентификаторов на обекты, мне их показывать? Нет. Хочу асинхронно собрать и заполнить строку.
@@Веселый1С ну да, странно выразился получается. Я имею ввиду например функция и процедура раздельно, нигде такого не встречал, но если с процедуры пустой возврат делать, то работает. Нету свитча. Перечисления это дрлжно по сути число выраженное через слова, но если сравнить первый элемент с нулем или единицей, то выходит ложь. Хотя суть перечисления сравнивать числа вместо слов, но под видом слов. Конечно это всё мелочи и работе не сильно мешает, но интересно почему так разрабы платформы реализовали. Или например сразу не сделали язык с поддержкой ООП, ведь платформа на c++ с ООП написана, они должны были знать про его существование)))
@@vladyan01 Ну тут можно много о чем поспорить. Например, функция и процедура раздельно - в Visual Basic и язык 1С во многом на него похож, т.к. должен быть простым. Далее, тезис "Перечисления это дрлжно по сути число выраженное через слова" ложный. Никто не говорит, что перечисление это обязательно число. Так сделано в Си, возможно еще где-то но обычно это все равно деталь реализации. Перечисление это перечисление, числа не при чем. Про ООП в 1С - это старый холивар. Оно, во-первых, есть, хоть и не такое как в других языках, а во-вторых - еще никто не привел хорошего примера - зачем ООП в 1С.
@@Веселый1С да я не спорю, так по сути ООП в 1С мб и не нужно) Можно сказать без него проще новичку будет) Да и русский язык только по началу напрягает, потом даже нравится становится, и думать так проще на родном языке по идее, и не надо в Гугл лезть переводить слова для названия переменной))) Вообще мне кажется разрабы когда делали 1С, наверно хотели чтобы бухгалтера понимали язык и сами что-то делали там, хотя это странно и маловероятно, но это объясняет русский язык и отсутствие сложных абстракций))
@@Веселый1С а на счёт перечисления, я просто один раз воткнулся с этим. Делал функцию на проверку цвета и передавал в параметры цифру и пытался сравнить с WebЦвета. и ничего не работало хД ) Перечисление когда изучал объясняли это типа цифры сравнивать компу быстрее, чем строки, а человеку со словами удобнее работать и вот такая штука была изобретена, думал так везде сделано для ускорения)
Но я нихера не понимаю: Зачем использовать асинхронные методы - если они один йух блокируют форму? Кажется я чего то не понимаю в асинхронности. Фирма 1С пишет «блаблабла потому что браузеры блокируют всплывающие окна поэтому сделали асинх и тд», но ведь все равно в тонком клиенте все блокируется когда вызываешь асинх методы / функции.
@user-zr4uw5ng3r ну я вот прям сейчас сижу за компьютером. У меня висит диалог выбора файла с оповещением. И я не могу никуда переключиться пока не закрою диалог. как называется состояние если: пока я не закрою диалог я не смогу переключиться в другую форма?! . Это блокировка интерфейса видимо, поток кода выполняется дальше, это я проверил отладчиком, только какой смысл всей этой псевдо-асинхронности если Мышкой ты все равно в программе работать не можешь…
Когда уже 1с научится отправлять эти вещи в отдельные потоки. Задолбал тупящий интерфейс на фоновых заданиях. Это хорошо сделано в QT , почему 1с не может от туда содрать? Про боль на мобильном клиенте вообще промолчу, жить на одном потоке это огромный позор .
Спасибо за видео. Наконец, спустя много лет, мне стало понятно, о чем поет Земфира: "Меньше всего нужны мне твои callback-и")))
По-моему там было come back)))
я думал, там конфетки
Земфира пела про адъ
Эффект манделлы)
Крутой ты мужик, Овсянкин. Спасибо за видео!
Единственный кто нормально объяснил. Эх мне бы такого учителя. Со всей благодарностью!
Спасибо Андрей, 1С как обычно, делает что-то "не имеющее аналогов в мире" ))))
В середине видео "Так, я нахер устал" Ору!
Блин так-то нормально тему разжевал, все доступно, без за умных слов и воды
Какая же милота, спасибо
Автор молодец, «я нахер устал». Правильно. Нехер особо заморачиваться. Хорошая подача контента 😂
Спасибо за такое нужное видео! Да, в модуле работы с торговым оборудованием там действительно ад вызовов.. если посмотреть на процедуру печати чеков, то там можно утонуть в этих обработчиках оповещения.. Наконец 1С сделало эти асинх\ждать, лучше поздно чем никогда. Теперь похоже начнется работа по выпиливанию обработчиков оповещений из конфигураций. Мне вот интересно, когда 1С догадается что нужны ссылки на процедуры\функции? Тот же метод вызова диалога выбора мог бы иметь вид ДиалогВыбора.Показать(ссылка ОбработчикВыбораФайла);
Кстати по моей практики конфы где реально используется веб-клиент и нужны заморочки с асинхронностью это ну 5-10% максимум.. да и то там используется не вся конфа в веб клиенте, а только небольшая часть (какая нибудь форма работы удаленного менеджера или торговой точки) и получается что нет никакого смысла переводить всю конфу на асинхронные вызовы, поэтому пишу все на синхронных.
Для меня большая польза от асинх как раз в том что по сути можно запустить теперь несколько потоков из одной синхронной процедуры (если мне не нужно дожидаться callback), по сути аналог фоновых заданий получается, только гораздо более удобный.
Коллега, Ваш комментарий - золото! Поддерживаю полностью.
Шикарное видео, очень понятно, доходчиво и полезно
ЯсноПонятноОк. Спасибо за проделанную работу. Вы молодцы, вас интересно смотреть. А можно почаще видео?)))
Постараемся
Спасибо за объяснение!!!
Андрей спасибо!
Спасибо, познавательно.
Спасибо! Подписался ))
Очень классно! Спасибо!
Спасибо, разбор подкапотной части наконец разложил некоторые вещи по полочкам. Остался вопрос - есть ли сакральный смысл вызова АСИНХ функций БЕЗ ждать ? (типа зачем эту возможность оставили?)
На данный момент смысла нет, но впоследствит может и появятся возможности вида Task.WaitAll
Как вариант - у метода может быть побочный эффект. Вам может быть не обязательно ждать, пока он выполнится в текущем потоке, вы просто планируете какую-то обработку на ближайшее будущее. Машина сама подхватит эту задачу и выполнит её, когда у клиентского потока будет свободное время исполнения
@@Веселый1С я пока не придумал такого кейса.
Если я процедуру объявил асинх и вызываю асинх аналог - то не ждать его... Надо видимо дождаться когда оно всплывёт в работе.
Улучшение конечно хорошее. Вопрос когда в типовых решениях будут использовать сами, и я молчу сколько будут этому еще обучать на курсах.
Думаю зависит от текущего режима совместимости БСП. Нужен 8.3.18
Callback hell можно смягчить более вдумчивым оформлением кода, его структурированием. После просмотра осталось ощущение, что упрощение возникает в простых случаях, а вот в более сложных логиках, где требуется все сложным образом контролировать и порой явно вызывать метод ВыполнитьОбработкуОповещения, эти нововведения не применить.
Спасибо, Андрей!
и ни одного дизлайка =) сохраним чистоту рядов ! )
Спасибо. Очень грамотный язык - приятно слушать. А асинх вариант ОткрытьФормуМодально() 1С добавили?
Походу заб[Ы/И]ли.
Да, это был ад. Мне приходилось пилить.
Потом обходил стороной, т.к. понимал что это не нормально. Видно, что не ошибся.
Скрины примеров кода из ЕДТ или визуал студио код? Просто интересно как включить подписи к процедурам и функциям о когнитивной и цикломатической сложности?
из vscode. возможно, если сильно попросить Олега Тымко или написать самому, то эта функциональность появится в уже имеющимся коннекторе bsl ls к edt (тот, который по честному протоколу работает)
спасибо за: практичность и ненудность! эко мну пыронуло - даже готоффф донатить!
Ну так не сдерживайте себя! :)
А когда на типовых 8.3.18 завезут (зуп под рукой всё ещё 8.3.14 например) ?
Ну, теперь заживем. Суровые годы ухооодят
За ними другие прихооодят
Они будут тоооже трудны
А можно задать вопрос асинхронно?
А где установить флажок чтобы старая функция ПоместитьФайл стала работать так как ПоместитьФайлНаСерверАсинх без дополнительных заклинаний АСИНХ и Ждать? Спасибо ;)
С помещением файлов там целая эпопея. Теперь мы и сами не знаем, какие семейства методов стоит считать наиболее удобными. Тут тема для отдельного видео
Если результат функции хранится в стеке, то что будет с памятью при большом вызове асинхов?
Ничего. Имелся в виду не стек процессора, а стек стековой машины языка 1С. Он вряд ли когда-либо переполняется.
Да, прошу прощения, не так назвал. Спасибо
Спасибо
Как собрать обработку ассемблера? Это просто жесть, почему нельзя выложить epf????
По ссылке проект для EDT на github. В 21 веке принято выкладывать исходники, а не собраные бинарники.
То есть моя мечта о том что можно собирать в МВТ "одновременно" собирать кучку ВТ разрозненных данных разбилась о гору моих ожиданий?
Ну не совсем. Смотря что вы хотите сделать и зачем хотите собирать кучку ВТ в одну. Не факт, что даже наличие реальной параллельности вам тут поможет. Что за задачу вы хотите решить таким образом?
@@Веселый1С задачка была вида : собрать асинхронно в менеджер временных таблиц три разных таблицы данных. А уже дождавшись их "крутить" как хочется, или асинхронно собрать какие-то данные которые буду связывать позже (есть насколько взаимодействий с веб-сервисами вражеского по)
@Андрей Овсянкин конечно не поможет. Пусть юзер сидит и ждёт пока у него загрузиться и обработается последовательно 20 разных объектов в форму. Проблема например с вражеским апи очень очень неилюзорна. Когда я получаю от это апи список из идентификаторов на обекты, мне их показывать? Нет. Хочу асинхронно собрать и заполнить строку.
Почему у 1С такая странная реализация программирования, не как в других языках?
Что такое "реализация программирования"? В чем странность по сравнению с другими языками?
@@Веселый1С ну да, странно выразился получается. Я имею ввиду например функция и процедура раздельно, нигде такого не встречал, но если с процедуры пустой возврат делать, то работает. Нету свитча. Перечисления это дрлжно по сути число выраженное через слова, но если сравнить первый элемент с нулем или единицей, то выходит ложь. Хотя суть перечисления сравнивать числа вместо слов, но под видом слов. Конечно это всё мелочи и работе не сильно мешает, но интересно почему так разрабы платформы реализовали. Или например сразу не сделали язык с поддержкой ООП, ведь платформа на c++ с ООП написана, они должны были знать про его существование)))
@@vladyan01 Ну тут можно много о чем поспорить. Например, функция и процедура раздельно - в Visual Basic и язык 1С во многом на него похож, т.к. должен быть простым.
Далее, тезис "Перечисления это дрлжно по сути число выраженное через слова" ложный. Никто не говорит, что перечисление это обязательно число. Так сделано в Си, возможно еще где-то но обычно это все равно деталь реализации. Перечисление это перечисление, числа не при чем. Про ООП в 1С - это старый холивар. Оно, во-первых, есть, хоть и не такое как в других языках, а во-вторых - еще никто не привел хорошего примера - зачем ООП в 1С.
@@Веселый1С да я не спорю, так по сути ООП в 1С мб и не нужно) Можно сказать без него проще новичку будет) Да и русский язык только по началу напрягает, потом даже нравится становится, и думать так проще на родном языке по идее, и не надо в Гугл лезть переводить слова для названия переменной))) Вообще мне кажется разрабы когда делали 1С, наверно хотели чтобы бухгалтера понимали язык и сами что-то делали там, хотя это странно и маловероятно, но это объясняет русский язык и отсутствие сложных абстракций))
@@Веселый1С а на счёт перечисления, я просто один раз воткнулся с этим. Делал функцию на проверку цвета и передавал в параметры цифру и пытался сравнить с WebЦвета. и ничего не работало хД ) Перечисление когда изучал объясняли это типа цифры сравнивать компу быстрее, чем строки, а человеку со словами удобнее работать и вот такая штука была изобретена, думал так везде сделано для ускорения)
Но я нихера не понимаю:
Зачем использовать асинхронные методы - если они один йух блокируют форму? Кажется я чего то не понимаю в асинхронности. Фирма 1С пишет «блаблабла потому что браузеры блокируют всплывающие окна поэтому сделали асинх и тд», но ведь все равно в тонком клиенте все блокируется когда вызываешь асинх методы / функции.
@user-zr4uw5ng3r ну я вот прям сейчас сижу за компьютером. У меня висит диалог выбора файла с оповещением. И я не могу никуда переключиться пока не закрою диалог. как называется состояние если: пока я не закрою диалог я не смогу переключиться в другую форма?! . Это блокировка интерфейса видимо, поток кода выполняется дальше, это я проверил отладчиком, только какой смысл всей этой псевдо-асинхронности если Мышкой ты все равно в программе работать не можешь…
Зачем было делать пометку Асинх. Достаточно было добавить оператор ждать и все. Нет добавили костыль с Асинх. Ппц
Ждать и Асинх только для работу с браузером?
Нет, в тонком клиенте тоже работает
Заметил гитару, играешь? Я тоже играю
20:58 ))))
Эй, ты чего мою работу разбираешь????
@Андрей Овсянкин Допиленный ассемблер пришлешь? :) Но я вангую он у меня на маке не особо взлетит...
Не взлетит
@Андрей Овсянкин асинх говори о том, какой версии код 18+ или старый, для формирования байт кода.
Когда уже 1с научится отправлять эти вещи в отдельные потоки. Задолбал тупящий интерфейс на фоновых заданиях. Это хорошо сделано в QT , почему 1с не может от туда содрать? Про боль на мобильном клиенте вообще промолчу, жить на одном потоке это огромный позор .
Непонятные капризы)
Не понятно почему ты бомбишь. Вполне логично все. Можешь сделать лучше, предлагай 1Су
Могу, конечно ) И иногда даже делаю. Но вообще, они молодцы. Я бомблю только с того, что сделали слишком поздно.
Спасибо