Новые возможности платформы 1С версии 8.3.18, асинхронные методы.
Платформа 1С 8.3.18. Асинх, Ждать и Обещание!
Новые возможности платформы 1С по работе с асинхронными методами. Заклинания Асинх! Ждать!
В видео демонстрируется решение задачи аналогичной задаче одного из прошлых видео, посвященных работе с файлами и картинками.
Рекомендуем ознакомиться с этим видео • Работа с файлами и кар... перед просмотром нового.
Пікірлер: 103
Спасибо! Как всегда просто, доступно и понятно!
Шедевр. Люблю новые платформы, столько интересного всегда.
Прекрасно!!! Теперь не придётся прыгать между процедурами на клиенте, чтобы нырнуть на сервер в зависимости от ответа на вопрос. На правой руке удобно, на левой привычно, выбираю Удобство!
Слёзы наворачиваются. Почему сразу так нельзя было сделать и не городить всю эту вакханалию с описаниями оповещений.
@asoneas
4 жыл бұрын
Как-то раз спросили розу: "Отчего, чаруя око, Ты колючими шипами Нас царапаешь жестоко?" "Чтобы сладкого добиться,- Отвечал цветок Востока, Испытай сначала горечь, В дармовщине мало прока" Шота Руставели "Витязь в Тигровой шкуре" ;)
@Das.Kleine.Krokodil
2 жыл бұрын
в других языках тоже не сразу это все появилось
@vladyan01
Жыл бұрын
под капотом там все равно описания оповещения, асинх это просто сахар
1Ска: ПоместитьНаСерверАсинх Я: Будь здорова
Приветствую Павел, давно не смотрел твоего видео. Как всегда на высоте.
Павлу Чистову - многие годы респект! Респект и 1С от обладателя автографа 1С-Бога Нуралиева )))
&НаСервере Память.Жрать()
@user-qs8vf5dm3c
4 жыл бұрын
Эта команда включена по умолчанию. По просьбам трудящихся, разумеется.
@by_sd
4 жыл бұрын
Класс))
@user-wr2fk3sd5j
4 жыл бұрын
Это из исходников хрома?
@user-qs8vf5dm3c
4 жыл бұрын
@@user-wr2fk3sd5j Дык, хром обычно на клиенте память кушает.
@user-wr2fk3sd5j
4 жыл бұрын
@@user-qs8vf5dm3c Где запущен там и кушает.
Для тех, кто досматривает до конца - самое важное объяснение в конце.
Нагородили огород! Во всех языках суффикс Async - НЕ Возвращает Promise, а означает немного другое. Понятнее было бы называть метод Начать, но он уже занят под работу с описаниями оповещений. Чем дальше развивается Платформа тем больше собственных "велосипедов"
Наконец-то :-)
У меня одного ощущение какихто странных костылей аля мы можем как js. Хорошо а http запрос на сервер асинхронно можно? А запись в регистр асинхронно? Почему всего пара предопределенных вариантов?
Павел, я вашей привычкой "А=0;" пять лет назад заразился как обучался 1С, до сих пор в действии))
@chistovpavel
4 жыл бұрын
5 лет.. Везет вам...
@Crisis2424
4 жыл бұрын
@@chistovpavel это Вы смысле ещё мало ?)
@sashaperevisly7755
4 жыл бұрын
Что интересно ,ставлю похожие точки останова, Ф=1; и тоже из опыта других языков
@s.portowyi15
3 жыл бұрын
@@chistovpavel Как "переменная i 30 лет на рынке счетчиков", так и "А=0;" 15 лет на рынке брейк-поинтов".
@chistovpavel
3 жыл бұрын
@@s.portowyi15 Да мне кажется ---i--- уже лет так 60. Скоро на пенсию... Чуть продержаться.
Спасибо, что там еще нового в 8.3.18?
Спи спокойно Паша!
Детские крики на фоне говорят о удаленной работе. За содержание спасибо.
@chistovpavel
4 жыл бұрын
Сильно слышно?
@user-qs8vf5dm3c
4 жыл бұрын
@@chistovpavel Немножко, и совсем не мешают.. Как по мне - нормальный житейский фон.
Похоже дизайн языковых конструкций от создателей #КонецВставить надеюсь в итоге мы получить &НаКлиентеАсинхронно и похожее. Ждать вообще выкинут и компилятор будет все асинхронные методы выполнять асинхронно в контексте &НаКлиентеАсинхронно
@fess932
4 жыл бұрын
в javascript async await считается вершиной асинхронной мысли и врядли тут будут await убирать, не просто так эта конструкция жива уже десятки лет
Не совсем понятно как будет работать процедура, если я в одну и ту же процедуру АСИНХР помещу в перемешку с кодом 2-3 вызова ЖДАТЬ? Будет ли выполнение линейно или же все эти ЖДАТЬ сработают за раз?
гениальный индусский код
Сначала для асинхронности придумали оповещения, чем сломали головы программистам 1С, сломали лаконичность кода, потребовали разбивать логику работы программы на мало связанные процедуры, а потом поняли что наделали херни и решили исправиться. Вот только код с оповещениями придётся разгребать лопатой ещё как минимум года 2 в типовых конфигурациях и всю оставшуюся жизнь в не типовых.
Ну давайте уже в 1с на JS писать а то зачем это все)) Ну а серьезно, кто писал на JS не мог не заметить что последнее время 1с упорно вносят оттуда фичи
@alexorgnet
4 жыл бұрын
А кто будет платить лицензионные платежи создателям JavaScript за это?
@sizovmn
4 жыл бұрын
Так однопоточные приложения. На JS отточили и перенесли в 1С.
@Crisis2424
4 жыл бұрын
так сейчас в разработчики 1С jav'исты вроде как, по крайней мере они там внедряют новые возможности и фишки)
@user-qs8vf5dm3c
4 жыл бұрын
Один в один с js.
@aleksandr_sp7721
4 жыл бұрын
@@Crisis2424 фронтенд 1с на javascript написан.
Если это аналог async await в js, то ведь в js насколько понимаю сама процедура async работает в синхронном режиме. В этом и есть основной смысл такой конструкции - удобство работы с асинхронными вызовами в стиле синхронного программирования. В 1С же очень странная реализация. Не факт, что это будет чем-то удобнее, чем было раньше.
спасибо!
Походу кто-то из 1С курсы прошёл по js) о промисах узнали, это уже хорошо, авось может ещё про колбэки и замыкания что-то почитают...
@Das.Kleine.Krokodil
2 жыл бұрын
веб клиент на жс написан
А я правильно понимаю, что в 1С до сих пор нет способа сделать асинхронный http запрос встроенными средствами?
@asoneas
4 жыл бұрын
Но с опытом понимаешь что это хорошо ;) ПоместитьФайл - 2009 НачатьПолучениеФайла - 2015 ЗАПРЕТ - ПоместитьФайл - 2018 НачатьПомещениеФайлаНаСервре - 2019 ЗАПРЕТ - НачатьПолучениеФайла - 2019 ПоместитьФайлНаСерверАсинх - 2020
А в какой версии появятся корутины и ленивые вычисления?
@aleksandr_sp7721
4 жыл бұрын
Ожидайте через 5 лет
@liamsmith7052
4 жыл бұрын
В Котлине)
"В чём плюсы и ОСОБЕННОСТИ данного метода" :-D
А что делать с открытием формы? Там оповещение остаётся?
@chistovpavel
3 жыл бұрын
Оповещение о закрытии формы? Да остается.
По сути релиз платформы ради релиза платформы. Уже версий 10 платформы я ничего для себя нового не нахожу. Там где сложность оправдана - например сделать нормальный интерфейс многопоточности - 1С усложнять платформу не хочет. И в то же время с попытками сделать несложную асинхронность какую то жесть городили несколько версий платформы. В итоге ресурсоемкие и требующие неординарного подхода вещи я уже года 4 переношу в микросервисы (хранение документов, отчетные данные, журнал регистрации) - пусть через набор фоновых заданий и т.д. но в последствии с этими данными работать проще, как минимум пользователям - так как им важна скорость. Блин, я благодаря(или вопреки) 1С уже неплохо пишу на Jаva с использованием Spring/Spring Boot. Еще пару лет и в рабочих базах останется только то, для чего 1С изначально и предназначалась - оперативный и бухгалтерский учет, а все остальное пользователь будет обрабатывать в вебе и точно не через web-интерфейс 1С. Потому что все что выходит за рамки именно учета - сделано не совсем так как хотелось бы и похоже больше на набор костылей нежели на хорошо структурированный код. Хотя если без демагогии - в данном случае (по моему мнению) началось движение в нужном направлении. В очень нужном. Главное чтоб не останавливалось это движение)
Что то не очень понял как работает. Пример: &НаКлиенте АСИНХ Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) Отказ = Истина; Обещание = Ждать ВопросАсинх("Записать изменения?", РежимДиалогаВопрос.ДаНет, 60); Если Обещание = КодВозвратаДиалога.Да Тогда Отказ = Ложь; КонецЕсли; КонецПроцедуры Все равно запись элемента происходит и только потом выходит вопрос. На Отказ вообще не реагирует.
@user-nh6mo6qu9l
4 жыл бұрын
Как только добавляешь перед процедурой Асинх, сразу отказ перестает работать, он просто игнорируется &НаКлиенте Асинх Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) Отказ = Истина; КонецПроцедуры Отказ в такой процедуре не срабатывает. Это нормальное поведение?
@alexorgnet
4 жыл бұрын
Олег П конечно нормальное. Ведь асинхронная процедура выполняется до конца, не останавливаясь. В этом же и весь смысл. Применять асинхронную процедуру не имеет смысла в стандартных системных обработчиках
@liamsmith7052
4 жыл бұрын
@@user-nh6mo6qu9l Либо для 1С Асинх ПередЗаписью и ПередЗаписью две разные процедуры, либо не знаю. В других языках до первого вызова "Ждать" код выполняется синхронно, как в обычной функции.
А как это соотносится с отказом модальности? Кто-нибудь скажет мне?
@Ahm29ya
4 жыл бұрын
Почитайте об аналогичных реализациях асинхронных методов и promise на других языках, например JS и сразу поймете. Если коротко: синхронные методы полностью занимают собой стек вызовов из-за чего форма, из которой они вызваны становится модальной на это время и общение других клиентских методов на это время остановлено (как и работа пользователя, который ждёт пока всё отвиснет).
Не понял, для чего во втором примере было показывать, что вылазит два диалоговых окна. Даже на простом примере всё показано замудрено. Разработчики платформы, как всегда, жгут: Асинх Процедура... Неужели нельзя было ключевое слово "Асинх" в конце строки указывать, как слово "Экспорт"...
@Milkyway99999
4 жыл бұрын
Он не стал заморачиваться и написал код и его работу в стандартной процедуре, мог поставить СтандартнаяОбработка Ложь, и после этого вызвать уже свою процедуру со своим примером кода. Но мы и без этого все поняли.
@leonidmessin22
4 жыл бұрын
Надо заморачиваться, если хочешь кодить нормально.
Жуть Опять привыкать по новому
Интересно , где Вы были 6 ( шесть ! ) лет назад ! Во время работы на Олимпиаде в Сочи ?! Так обидно ! Никто из " сопровождающих специалистов " даже не понимал , что МНЕ нужно ! Там такие специалисты были , после города Сургута ( банковская специализация ), ну ОЧЕНЬ сложно было " разговаривать " на одном языке ! А сейчас - пандемия и возраст ! Или наоборот .
@chistovpavel
3 жыл бұрын
Вопросы пришли именно на олимпиаде? "Хорошо" готовились видимо.
@user-fj6mr3ow3y
3 жыл бұрын
@@chistovpavel ... на тот момент в 1 С не было многого из того , что сейчас предлагаете ..., запаздываете с обновлениями ... , а так - это просто было мое мнение и досада за нерасторопность разработчиков программы ...
@chistovpavel
3 жыл бұрын
@@user-fj6mr3ow3y В рамках олимпиадных задач и задач на worldSkills за шесть лет мало что поменялось. Фразу "запаздываете с обновлениями" расшифруйте пожалуйста.
Кто-то 1Сникам рассказал про Python и asyncio
@user-qp7uv2ip7x
4 жыл бұрын
Есть шанс, что получиться такой франкиншейт, что-то из питона, что-то из java, javascript и т.д. )) В итоге при отладке будешь плеваться и матриться.. как сейчас.. когда, чтобы добраться до сути ныряешь в 20-ую процедуру
Что им мешало этот префикс вставить как директиву &НаСервере &Асинхронно или как Экспорт в конце строки... нет же, сделали самым вырвиглазным способом.
@t1ltforlife
4 жыл бұрын
Взять то что сделано плохо и сделать ещё хуже это главная скрепа 1с
Мне кажется, еще немного, и 1С перейдет на js.
@sialsoft
3 жыл бұрын
1С:Исполнитель - это русифицированная Java, как мне кажется.
@user-qs8vf5dm3c
3 жыл бұрын
@@sialsoft я имел ввиду не Java а js
домашний комп и 50 лицензий)
@Ahm29ya
4 жыл бұрын
он удаленно подключен, но думаю один чёрт там варезные ключи
@chistovpavel
4 жыл бұрын
Так я где работаю!? Специально заморочился drive.google.com/file/d/13zs4pp8JIVlrOobNA6xD3EPhFPMarYiM/view?usp=drivesdk это реальные ключи, и еще тут на канале есть видео как я активировал программные, поищите.
@vasakley2622
4 жыл бұрын
@@chistovpavel я знаю, это не более чем шутка. раз уж вы заметили мой комментарий, хочу поблагодарить вас за статьи и за канал на ютубе, еще вроде был форум. Все это очень помогло вернуться в профессию после 10 летнего перерыва.
@user-wl8uk3ht6v
4 жыл бұрын
Немножко перестраховался)) Бывает один пользователь съедает 10 лицензий, особенно если вебсервер
Ахаха - Тип данных Обещание, модификатор Ждать... ЗВучит забавно и выглядит удобно. Все же лучше чем лапша вроде ОжиданиеПокаТЫЗакончишь.
@NoBodyAnyBody32
4 жыл бұрын
"Ожидание Пока Ты КОНЧИШЬ" - а так было бы лучше? ))))
@research_Development
4 жыл бұрын
@@NoBodyAnyBody32 как вариант))
@NoBodyAnyBody32
4 жыл бұрын
@@research_Development 1С-Стайл! Главное, чтобы юзер не уснул пока 1С Обещание выполняется )))
@NoBodyAnyBody32
4 жыл бұрын
Это уже 1С-Стайл больше 20 лет! 1С 2.0 в Досе выполнялось мгновенно ))) начинал с него. Появилась 1С 7.7 и ВСЁ СТАЛО...
@chistovpavel
4 жыл бұрын
@@NoBodyAnyBody32 Для этого есть оповещения! Можно котиков рисовать в зависимости от процента действия!
А зачем вообще сущность Обещание? Мы ее можем как-то в последствии обработать? Или это просто "заглушка" для тех, кто не написал директиву Ждать? Просто с одной стороны синтаксис Ждать [Метод] очень понятен в плане ожидаемого исполнения кода, а с другой стороны исполнение асинхронных методов подобного рода без Ждать бессмысленно. То же касается и суффикса Асинх в методах ВопросАсинх, ПоместитьФайлНаСерверАсинх и т.п. Если они полностью заменяют старые методы, то зачем суффикс? Или они будут существовать параллельно? Не проще ли было иметь один метод Вопрос, режим работы которого определяется режимом работы процедуры/функции или директивой Ждать? Вообще идея классная, но есть ощущение переусложненного синтаксиса.
@alexorgnet
4 жыл бұрын
Это вы ещё 1с экзекьютор не видели. Вот где переусложнение кода. Видать ребята из 1с упорно изобретают свой велосипед
@user-lp7oc4zq1y
4 жыл бұрын
@@alexorgnet свой велосипед изобрести не грех, если он удобнее и проще чужих. Мне, например, на русском писать программу проще, но это не повод накручивать синтаксис до неприличия.
@verterius
4 жыл бұрын
Согласен, если методы переименовали, то зачем перед ними ставить Ждать? И так бы поняла система, что тут надо ждать) И вообще, если в процедуре встречается асинхронный метод, то пусть она считается асинхронной без всяких доп модификаторов.
@asoneas
3 жыл бұрын
@@verterius А где установить флажок чтобы старая функция ПоместитьФайл стала работать так как ПоместитьФайлНаСерверАсинх без дополнительных заклинаний АСИНХ и Ждать? Спасибо ;) (Шутка)
@verterius
3 жыл бұрын
@@asoneas Я имел ввиду, что если перед процедурой есть директива АСИНХ, то пусть все методы внутри будут асинхронными без изменения их названий) Чем не галочка?)
В видео описано как из асинхронной процедуры сделать синхронную. А сама сущность работы с промисом опущена совсем. Автора уважаю, но цель то совсем другая у таких процедур.
@chistovpavel
4 жыл бұрын
Я ж адинесник... Расскажите, можно приватно, запишу дополнение.
@FVvideoClip
4 жыл бұрын
В 1С это не использовал, впервые о возможности от вас и узнал, спасибо. Но цель "не ждать", а выполнять другие действия и уже только по выполнению обработать результат.
@user-gl7tj8xg8e
4 жыл бұрын
@@chistovpavel Цель тут лишь уйти от коллбэков и упростить код, только вот пример можно было бы расширить, например если ниже под вызовом АСИНХ функции у меня будет обычная функция, что будет в таком случае? В JS она бы вызвалась не дожидаясь результата АСИНХ функции, а тут как? И почему-то нет исходников, они бы не помешали конечно.
Чет не привычно видеть код на русском, а тааак вызовите кто-нибудь священника!!!
@nvufc7060
4 жыл бұрын
ну так англоязычные видят язык на родном языке для них все языки как для нас 1с
@zaan2684
4 жыл бұрын
@@nvufc7060 ну эт да)
@chistovpavel
3 жыл бұрын
Пишите на английском, в 1С двуязычный синтаксис.