Новые возможности платформы 1С версии 8.3.18, асинхронные методы.

Поделиться
HTML-код
  • Опубликовано: 21 июл 2020
  • Платформа 1С 8.3.18. Асинх, Ждать и Обещание!
    Новые возможности платформы 1С по работе с асинхронными методами. Заклинания Асинх! Ждать!
    В видео демонстрируется решение задачи аналогичной задаче одного из прошлых видео, посвященных работе с файлами и картинками.
    Рекомендуем ознакомиться с этим видео • Работа с файлами и кар... перед просмотром нового.

Комментарии • 103

  • @slknnk
    @slknnk 3 года назад +33

    Слёзы наворачиваются. Почему сразу так нельзя было сделать и не городить всю эту вакханалию с описаниями оповещений.

    • @asoneas
      @asoneas 3 года назад +14

      Как-то раз спросили розу:
      "Отчего, чаруя око,
      Ты колючими шипами
      Нас царапаешь жестоко?"
      "Чтобы сладкого добиться,-
      Отвечал цветок Востока,
      Испытай сначала горечь,
      В дармовщине мало прока"
      Шота Руставели "Витязь в Тигровой шкуре" ;)

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 года назад

      в других языках тоже не сразу это все появилось

    • @vladyan01
      @vladyan01 Год назад +1

      под капотом там все равно описания оповещения, асинх это просто сахар

  • @liamsmith7052
    @liamsmith7052 3 года назад +8

    1Ска: ПоместитьНаСерверАсинх
    Я: Будь здорова

  • @NoBodyAnyBody32
    @NoBodyAnyBody32 3 года назад +16

    Павлу Чистову - многие годы респект!
    Респект и 1С от обладателя автографа 1С-Бога Нуралиева )))

  • @rucrypterus
    @rucrypterus 3 года назад +51

    &НаСервере
    Память.Жрать()

    • @user-qs8vf5dm3c
      @user-qs8vf5dm3c 3 года назад +4

      Эта команда включена по умолчанию. По просьбам трудящихся, разумеется.

    • @by_sd
      @by_sd 3 года назад

      Класс))

    • @user-wr2fk3sd5j
      @user-wr2fk3sd5j 3 года назад +4

      Это из исходников хрома?

    • @user-qs8vf5dm3c
      @user-qs8vf5dm3c 3 года назад

      ​@@user-wr2fk3sd5j Дык, хром обычно на клиенте память кушает.

    • @user-wr2fk3sd5j
      @user-wr2fk3sd5j 3 года назад +1

      @@user-qs8vf5dm3c Где запущен там и кушает.

  • @daaked
    @daaked 3 года назад

    Шедевр. Люблю новые платформы, столько интересного всегда.

  • @user-sd3it4pd5d
    @user-sd3it4pd5d 3 года назад +3

    Прекрасно!!! Теперь не придётся прыгать между процедурами на клиенте, чтобы нырнуть на сервер в зависимости от ответа на вопрос. На правой руке удобно, на левой привычно, выбираю Удобство!

  • @antongareev6671
    @antongareev6671 3 года назад

    Спасибо! Как всегда просто, доступно и понятно!

  • @oleksandrhomyak
    @oleksandrhomyak 3 года назад

    Приветствую Павел, давно не смотрел твоего видео. Как всегда на высоте.

  • @mrspacer1
    @mrspacer1 3 года назад +5

    Нагородили огород! Во всех языках суффикс Async - НЕ Возвращает Promise, а означает немного другое.
    Понятнее было бы называть метод Начать, но он уже занят под работу с описаниями оповещений.
    Чем дальше развивается Платформа тем больше собственных "велосипедов"

  • @PopovGP
    @PopovGP 3 года назад +1

    Для тех, кто досматривает до конца - самое важное объяснение в конце.

  • @MikleForYoutube
    @MikleForYoutube 3 года назад +5

    У меня одного ощущение какихто странных костылей аля мы можем как js. Хорошо а http запрос на сервер асинхронно можно? А запись в регистр асинхронно? Почему всего пара предопределенных вариантов?

  • @bupa8533
    @bupa8533 3 года назад +13

    Детские крики на фоне говорят о удаленной работе. За содержание спасибо.

    • @chistovpavel
      @chistovpavel 3 года назад

      Сильно слышно?

    • @user-qs8vf5dm3c
      @user-qs8vf5dm3c 3 года назад +2

      @@chistovpavel Немножко, и совсем не мешают.. Как по мне - нормальный житейский фон.

  • @DimDragonim
    @DimDragonim 3 года назад +6

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

  • @Crisis2424
    @Crisis2424 3 года назад +4

    Павел, я вашей привычкой "А=0;" пять лет назад заразился как обучался 1С, до сих пор в действии))

    • @chistovpavel
      @chistovpavel 3 года назад +1

      5 лет.. Везет вам...

    • @Crisis2424
      @Crisis2424 3 года назад

      @@chistovpavel это Вы смысле ещё мало ?)

    • @sashaperevisly7755
      @sashaperevisly7755 3 года назад +2

      Что интересно ,ставлю похожие точки останова, Ф=1; и тоже из опыта других языков

    • @s.portowyi15
      @s.portowyi15 3 года назад +1

      @@chistovpavel Как "переменная i 30 лет на рынке счетчиков", так и "А=0;" 15 лет на рынке брейк-поинтов".

    • @chistovpavel
      @chistovpavel 3 года назад +1

      @@s.portowyi15 Да мне кажется ---i--- уже лет так 60. Скоро на пенсию... Чуть продержаться.

  • @Guitar8202
    @Guitar8202 3 года назад

    Спасибо, что там еще нового в 8.3.18?

  • @Dr.aku1a
    @Dr.aku1a 3 года назад

    Наконец-то :-)

  • @user-um1pb4zx4q
    @user-um1pb4zx4q 2 года назад

    Спи спокойно Паша!

  • @user-dv2bc9qy3i
    @user-dv2bc9qy3i 3 года назад +6

    Похоже дизайн языковых конструкций от создателей #КонецВставить надеюсь в итоге мы получить &НаКлиентеАсинхронно и похожее. Ждать вообще выкинут и компилятор будет все асинхронные методы выполнять асинхронно в контексте &НаКлиентеАсинхронно

    • @fess932
      @fess932 3 года назад

      в javascript async await считается вершиной асинхронной мысли и врядли тут будут await убирать, не просто так эта конструкция жива уже десятки лет

  • @user-qp7uv2ip7x
    @user-qp7uv2ip7x 3 года назад

    Не совсем понятно как будет работать процедура, если я в одну и ту же процедуру АСИНХР помещу в перемешку с кодом 2-3 вызова ЖДАТЬ? Будет ли выполнение линейно или же все эти ЖДАТЬ сработают за раз?

  • @daulet77dm
    @daulet77dm 3 года назад

    гениальный индусский код

  • @alexeyp281
    @alexeyp281 3 года назад

    Если это аналог async await в js, то ведь в js насколько понимаю сама процедура async работает в синхронном режиме. В этом и есть основной смысл такой конструкции - удобство работы с асинхронными вызовами в стиле синхронного программирования. В 1С же очень странная реализация. Не факт, что это будет чем-то удобнее, чем было раньше.

  • @dmitrymnt3029
    @dmitrymnt3029 3 года назад +8

    Ну давайте уже в 1с на JS писать а то зачем это все)) Ну а серьезно, кто писал на JS не мог не заметить что последнее время 1с упорно вносят оттуда фичи

    • @alexorgnet
      @alexorgnet 3 года назад

      А кто будет платить лицензионные платежи создателям JavaScript за это?

    • @sizovmn
      @sizovmn 3 года назад

      Так однопоточные приложения. На JS отточили и перенесли в 1С.

    • @Crisis2424
      @Crisis2424 3 года назад

      так сейчас в разработчики 1С jav'исты вроде как, по крайней мере они там внедряют новые возможности и фишки)

    • @user-qs8vf5dm3c
      @user-qs8vf5dm3c 3 года назад

      Один в один с js.

    • @aleksandr_sp7721
      @aleksandr_sp7721 3 года назад

      @@Crisis2424 фронтенд 1с на javascript написан.

  • @doctorsev
    @doctorsev 3 года назад +1

    А я правильно понимаю, что в 1С до сих пор нет способа сделать асинхронный http запрос встроенными средствами?

    • @asoneas
      @asoneas 3 года назад +5

      Но с опытом понимаешь что это хорошо ;)
      ПоместитьФайл - 2009
      НачатьПолучениеФайла - 2015
      ЗАПРЕТ - ПоместитьФайл - 2018
      НачатьПомещениеФайлаНаСервре - 2019
      ЗАПРЕТ - НачатьПолучениеФайла - 2019
      ПоместитьФайлНаСерверАсинх - 2020

  • @sizovmn
    @sizovmn 3 года назад +3

    А в какой версии появятся корутины и ленивые вычисления?

  • @yurivodich6093
    @yurivodich6093 3 года назад +1

    Походу кто-то из 1С курсы прошёл по js) о промисах узнали, это уже хорошо, авось может ещё про колбэки и замыкания что-то почитают...

  • @s.portowyi15
    @s.portowyi15 3 года назад

    По сути релиз платформы ради релиза платформы. Уже версий 10 платформы я ничего для себя нового не нахожу. Там где сложность оправдана - например сделать нормальный интерфейс многопоточности - 1С усложнять платформу не хочет. И в то же время с попытками сделать несложную асинхронность какую то жесть городили несколько версий платформы. В итоге ресурсоемкие и требующие неординарного подхода вещи я уже года 4 переношу в микросервисы (хранение документов, отчетные данные, журнал регистрации) - пусть через набор фоновых заданий и т.д. но в последствии с этими данными работать проще, как минимум пользователям - так как им важна скорость. Блин, я благодаря(или вопреки) 1С уже неплохо пишу на Jаva с использованием Spring/Spring Boot. Еще пару лет и в рабочих базах останется только то, для чего 1С изначально и предназначалась - оперативный и бухгалтерский учет, а все остальное пользователь будет обрабатывать в вебе и точно не через web-интерфейс 1С. Потому что все что выходит за рамки именно учета - сделано не совсем так как хотелось бы и похоже больше на набор костылей нежели на хорошо структурированный код.
    Хотя если без демагогии - в данном случае (по моему мнению) началось движение в нужном направлении. В очень нужном. Главное чтоб не останавливалось это движение)

  • @Milkyway99999
    @Milkyway99999 3 года назад

    спасибо!

  • @bianconeri910
    @bianconeri910 3 года назад +1

    "В чём плюсы и ОСОБЕННОСТИ данного метода" :-D

  • @user-fz9ls2jg7p
    @user-fz9ls2jg7p 3 года назад +1

    А что делать с открытием формы? Там оповещение остаётся?

    • @chistovpavel
      @chistovpavel 3 года назад

      Оповещение о закрытии формы? Да остается.

  • @user-nh6mo6qu9l
    @user-nh6mo6qu9l 3 года назад +2

    Что то не очень понял как работает. Пример:
    &НаКлиенте
    АСИНХ Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    Отказ = Истина;
    Обещание = Ждать ВопросАсинх("Записать изменения?", РежимДиалогаВопрос.ДаНет, 60);

    Если Обещание = КодВозвратаДиалога.Да Тогда
    Отказ = Ложь;
    КонецЕсли;

    КонецПроцедуры
    Все равно запись элемента происходит и только потом выходит вопрос. На Отказ вообще не реагирует.

    • @user-nh6mo6qu9l
      @user-nh6mo6qu9l 3 года назад +1

      Как только добавляешь перед процедурой Асинх, сразу отказ перестает работать, он просто игнорируется
      &НаКлиенте
      Асинх Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
      Отказ = Истина;
      КонецПроцедуры
      Отказ в такой процедуре не срабатывает. Это нормальное поведение?

    • @alexorgnet
      @alexorgnet 3 года назад

      Олег П конечно нормальное. Ведь асинхронная процедура выполняется до конца, не останавливаясь. В этом же и весь смысл. Применять асинхронную процедуру не имеет смысла в стандартных системных обработчиках

    • @liamsmith7052
      @liamsmith7052 3 года назад

      @@user-nh6mo6qu9l Либо для 1С Асинх ПередЗаписью и ПередЗаписью две разные процедуры, либо не знаю. В других языках до первого вызова "Ждать" код выполняется синхронно, как в обычной функции.

  • @1cworks722
    @1cworks722 3 года назад

    А как это соотносится с отказом модальности? Кто-нибудь скажет мне?

    • @Ahm29ya
      @Ahm29ya 3 года назад

      Почитайте об аналогичных реализациях асинхронных методов и promise на других языках, например JS и сразу поймете. Если коротко: синхронные методы полностью занимают собой стек вызовов из-за чего форма, из которой они вызваны становится модальной на это время и общение других клиентских методов на это время остановлено (как и работа пользователя, который ждёт пока всё отвиснет).

  • @leonidmessin22
    @leonidmessin22 3 года назад +1

    Не понял, для чего во втором примере было показывать, что вылазит два диалоговых окна. Даже на простом примере всё показано замудрено.
    Разработчики платформы, как всегда, жгут: Асинх Процедура... Неужели нельзя было ключевое слово "Асинх" в конце строки указывать, как слово "Экспорт"...

    • @Milkyway99999
      @Milkyway99999 3 года назад

      Он не стал заморачиваться и написал код и его работу в стандартной процедуре, мог поставить СтандартнаяОбработка Ложь, и после этого вызвать уже свою процедуру со своим примером кода. Но мы и без этого все поняли.

    • @leonidmessin22
      @leonidmessin22 3 года назад

      Надо заморачиваться, если хочешь кодить нормально.

  • @user-fj6mr3ow3y
    @user-fj6mr3ow3y 3 года назад

    Интересно , где Вы были 6 ( шесть ! ) лет назад ! Во время работы на Олимпиаде в Сочи ?! Так обидно ! Никто из " сопровождающих специалистов " даже не понимал , что МНЕ нужно ! Там такие специалисты были , после города Сургута ( банковская специализация ), ну ОЧЕНЬ сложно было " разговаривать " на одном языке ! А сейчас - пандемия и возраст ! Или наоборот .

    • @chistovpavel
      @chistovpavel 3 года назад

      Вопросы пришли именно на олимпиаде? "Хорошо" готовились видимо.

    • @user-fj6mr3ow3y
      @user-fj6mr3ow3y 3 года назад

      @@chistovpavel ... на тот момент в 1 С не было многого из того , что сейчас предлагаете ..., запаздываете с обновлениями ... , а так - это просто было мое мнение и досада за нерасторопность разработчиков программы ...

    • @chistovpavel
      @chistovpavel 3 года назад

      ​@@user-fj6mr3ow3y В рамках олимпиадных задач и задач на worldSkills за шесть лет мало что поменялось.
      Фразу "запаздываете с обновлениями" расшифруйте пожалуйста.

  • @timko_nzt
    @timko_nzt 3 года назад +2

    Что им мешало этот префикс вставить как директиву &НаСервере &Асинхронно или как Экспорт в конце строки... нет же, сделали самым вырвиглазным способом.

    • @t1ltforlife
      @t1ltforlife 3 года назад +3

      Взять то что сделано плохо и сделать ещё хуже это главная скрепа 1с

  • @user-kt4zl2qm4o
    @user-kt4zl2qm4o 3 года назад +2

    Жуть Опять привыкать по новому

  • @user-qs8vf5dm3c
    @user-qs8vf5dm3c 3 года назад +2

    Мне кажется, еще немного, и 1С перейдет на js.

    • @sialsoft
      @sialsoft 3 года назад

      1С:Исполнитель - это русифицированная Java, как мне кажется.

    • @user-qs8vf5dm3c
      @user-qs8vf5dm3c 3 года назад

      @@sialsoft я имел ввиду не Java а js

  • @xacan191182
    @xacan191182 3 года назад +1

    Кто-то 1Сникам рассказал про Python и asyncio

    • @user-qp7uv2ip7x
      @user-qp7uv2ip7x 3 года назад +1

      Есть шанс, что получиться такой франкиншейт, что-то из питона, что-то из java, javascript и т.д. )) В итоге при отладке будешь плеваться и матриться.. как сейчас.. когда, чтобы добраться до сути ныряешь в 20-ую процедуру

  • @user-lp7oc4zq1y
    @user-lp7oc4zq1y 3 года назад +3

    А зачем вообще сущность Обещание? Мы ее можем как-то в последствии обработать? Или это просто "заглушка" для тех, кто не написал директиву Ждать?
    Просто с одной стороны синтаксис Ждать [Метод] очень понятен в плане ожидаемого исполнения кода, а с другой стороны исполнение асинхронных методов подобного рода без Ждать бессмысленно.
    То же касается и суффикса Асинх в методах ВопросАсинх, ПоместитьФайлНаСерверАсинх и т.п. Если они полностью заменяют старые методы, то зачем суффикс? Или они будут существовать параллельно? Не проще ли было иметь один метод Вопрос, режим работы которого определяется режимом работы процедуры/функции или директивой Ждать?
    Вообще идея классная, но есть ощущение переусложненного синтаксиса.

    • @alexorgnet
      @alexorgnet 3 года назад

      Это вы ещё 1с экзекьютор не видели. Вот где переусложнение кода. Видать ребята из 1с упорно изобретают свой велосипед

    • @user-lp7oc4zq1y
      @user-lp7oc4zq1y 3 года назад

      @@alexorgnet свой велосипед изобрести не грех, если он удобнее и проще чужих. Мне, например, на русском писать программу проще, но это не повод накручивать синтаксис до неприличия.

    • @verterius
      @verterius 3 года назад

      Согласен, если методы переименовали, то зачем перед ними ставить Ждать? И так бы поняла система, что тут надо ждать)
      И вообще, если в процедуре встречается асинхронный метод, то пусть она считается асинхронной без всяких доп модификаторов.

    • @asoneas
      @asoneas 3 года назад

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

    • @verterius
      @verterius 3 года назад +1

      @@asoneas Я имел ввиду, что если перед процедурой есть директива АСИНХ, то пусть все методы внутри будут асинхронными без изменения их названий) Чем не галочка?)

  • @research_Development
    @research_Development 3 года назад

    Ахаха - Тип данных Обещание, модификатор Ждать... ЗВучит забавно и выглядит удобно. Все же лучше чем лапша вроде ОжиданиеПокаТЫЗакончишь.

    • @NoBodyAnyBody32
      @NoBodyAnyBody32 3 года назад

      "Ожидание Пока Ты КОНЧИШЬ" - а так было бы лучше? ))))

    • @research_Development
      @research_Development 3 года назад

      @@NoBodyAnyBody32 как вариант))

    • @NoBodyAnyBody32
      @NoBodyAnyBody32 3 года назад

      @@research_Development 1С-Стайл! Главное, чтобы юзер не уснул пока 1С Обещание выполняется )))

    • @NoBodyAnyBody32
      @NoBodyAnyBody32 3 года назад

      Это уже 1С-Стайл больше 20 лет! 1С 2.0 в Досе выполнялось мгновенно ))) начинал с него. Появилась 1С 7.7 и ВСЁ СТАЛО...

    • @chistovpavel
      @chistovpavel 3 года назад

      @@NoBodyAnyBody32 Для этого есть оповещения! Можно котиков рисовать в зависимости от процента действия!

  • @vasakley2622
    @vasakley2622 3 года назад +2

    домашний комп и 50 лицензий)

    • @Ahm29ya
      @Ahm29ya 3 года назад

      он удаленно подключен, но думаю один чёрт там варезные ключи

    • @chistovpavel
      @chistovpavel 3 года назад

      Так я где работаю!? Специально заморочился drive.google.com/file/d/13zs4pp8JIVlrOobNA6xD3EPhFPMarYiM/view?usp=drivesdk это реальные ключи, и еще тут на канале есть видео как я активировал программные, поищите.

    • @vasakley2622
      @vasakley2622 3 года назад +1

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

    • @user-wl8uk3ht6v
      @user-wl8uk3ht6v 3 года назад

      Немножко перестраховался)) Бывает один пользователь съедает 10 лицензий, особенно если вебсервер

  • @FVvideoClip
    @FVvideoClip 3 года назад

    В видео описано как из асинхронной процедуры сделать синхронную. А сама сущность работы с промисом опущена совсем. Автора уважаю, но цель то совсем другая у таких процедур.

    • @chistovpavel
      @chistovpavel 3 года назад

      Я ж адинесник... Расскажите, можно приватно, запишу дополнение.

    • @FVvideoClip
      @FVvideoClip 3 года назад

      В 1С это не использовал, впервые о возможности от вас и узнал, спасибо. Но цель "не ждать", а выполнять другие действия и уже только по выполнению обработать результат.

    • @user-gl7tj8xg8e
      @user-gl7tj8xg8e 3 года назад

      @@chistovpavel Цель тут лишь уйти от коллбэков и упростить код, только вот пример можно было бы расширить, например если ниже под вызовом АСИНХ функции у меня будет обычная функция, что будет в таком случае? В JS она бы вызвалась не дожидаясь результата АСИНХ функции, а тут как? И почему-то нет исходников, они бы не помешали конечно.

  • @zaan2684
    @zaan2684 3 года назад

    Чет не привычно видеть код на русском, а тааак вызовите кто-нибудь священника!!!

    • @nvufc7060
      @nvufc7060 3 года назад

      ну так англоязычные видят язык на родном языке для них все языки как для нас 1с

    • @zaan2684
      @zaan2684 3 года назад

      ​@@nvufc7060 ну эт да)

    • @chistovpavel
      @chistovpavel 3 года назад +1

      Пишите на английском, в 1С двуязычный синтаксис.