|   |   | 
| 
 | Тест на понимание Асинх | ☑ | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0
    
        Почему 1С 16.06.21✎ 20:59 | 
 
        Ниже дан код, не выполняя его в 1С выберите правильный вариант. Что выведится в сообщения по порядку.
 &НаКлиенте Асинх Процедура Команда1(Команда) Сообщить("1"); а = Тест(); Сообщить("2"); b = ждать а; Сообщить("3"); КонецПроцедуры &НаКлиенте Асинх Функция Тест() Возврат 5; КонецФункции | ||||||||||
| 14
    
        ДенисЧ 17.06.21✎ 09:19 | 
        (12) А с чего Сообщить("1") стал асинхронным, а Сообщить("3") - нет?     | ||||||||||
| 15
    
        Почему 1С 17.06.21✎ 09:19 | 
        (12) Можно в функции тест запулить цикл на 100000 итераций, результат не изменится     | ||||||||||
| 16
    
        ДНН 17.06.21✎ 09:19 | 
        (13) Потому что это ошибка 1С. Видимо связанная с Сообщить. Если вместо Сообщить использовать ЗаписьТекста и писать в файл, то будет записано 1,2,3     | ||||||||||
| 17
    
        dmt 17.06.21✎ 09:23 | 
        (12) похоже на конкретный баг в Сообщить. Пауза перед Сообщить(3) в 600 мс дает примерно половину сообщений в правильном порядке.     | ||||||||||
| 18
    
        Smit1C 17.06.21✎ 09:27 | 
        (15)
 Асинх Процедура КомандаА(Команда) Сообщить("1"); а = Тест(); Сообщить("2"); b = ждать а; ТекДата = ТекущаяДата(); Пока ТекДата+5>=ТекущаяДата() Цикл КонецЦикла; Сообщить("3"); КонецПроцедуры выведет 1,2,3 | ||||||||||
| 19
    
        TormozIT гуру 17.06.21✎ 09:29 | 
        Используй обычное приложение. Там вывод сообщений синхронный. Поэтому визуальный порядок сообщений будет соответствовать порядку из вывода.     | ||||||||||
| 20
    
        ДенисЧ 17.06.21✎ 09:37 | 
        (19) а в 77 вообще никакой асинхронности нет.. Давайте хором на 77 перейдём )))     | ||||||||||
| 21
    
        Почему 1С 17.06.21✎ 09:47 | 
        (18) При чем прилично нужно подождать, чтобы порядок заработал. на цикле в 100к элементов порядок не правильный, а уже на 1кк становится правильным. Никак не в миллисекундах дело выходит     | ||||||||||
| 22
    
        Garykom гуру 17.06.21✎ 09:59 | 
        Объясните нахера в платформу 1С добавили другой вид асинхронности? 
 Когда уже есть одна с оповещениями при отказе от модальности? | ||||||||||
| 23
    
        Garykom гуру 17.06.21✎ 10:01 | 
        (22)+ Синтаксический сахар?
 А предыдущий депрекатировать будут или так и будут раздувать платформу вместо того чтобы ее сократить-оптимизировать и сосредоточиться на вылизывании и обезбаживании? | ||||||||||
| 24
    
        Garykom гуру 17.06.21✎ 10:03 | 
        Сцуко вы еще лямбда-функции добавьте анонимные в виде замыканий     | ||||||||||
| 25
    
        sikuda 17.06.21✎ 10:04 | 
        (23) Так что же нам предложили в 2009 году как прикладным программистам? Получается нам предложили callback, завернутый в ОписаниеОповешения(). И даже функции работы с обещаниями в 8.3.18 не меняют этой сути, а просто перепаковывают примерно как программисты javascript свои callback-и в promise. Но в отличие от Web вся остальная схема работы 1С осталась синхронной. Взаимодействие с сервером в 1С само синхронно — последовательно вызываются функции клиента и сервера, ответ у HTTPЗапрос — получаем последовательно. А ОписаниеОповещения повесили на клиента и функции взаимодействия с пользователем. 
 Нет не все функции в 1С будут прикрывать столь срамную реализацию. Есть и правильная тенденция в ПолучитьФайлССервера с несколькими Оповещениями(callback) и в них мы как раз начинаем получать правильное использование технологии. В общем https://blog.sikuda.ru/wp-content/uploads/2020/01/TransferFile.png | ||||||||||
| 26
    
        Garykom гуру 17.06.21✎ 10:06 | 
        (25) Так и я про что?
 Раннее фуйню спороли а сейчас вместо того чтобы ее исправить придумали еще одну | ||||||||||
| 27
    
        fisher 17.06.21✎ 10:07 | 
        (1) +1
 На файловой 8.3.18.1363 выводится именно так. Это какой-то прикол буфера сообщений. Уже была где-то длинная ветка с паззлерсом, где сообщения чуть ли не затраивались или что-то в этом духе. Не помню подробностей, к сожалению. Если одновременно с Сообщить() заполнять массив, то массив будет заполнен ожидаемо. | ||||||||||
| 28
    
        Garykom гуру 17.06.21✎ 10:07 | 
        Имхо давно пора делать чтобы клиент 1С мог работать (вызывать) несколько любых/разных серверов 1С ))
 Асинхронно | ||||||||||
| 29
    
        Chai Nic 17.06.21✎ 10:09 | 
        Асинхронность без многопоточности - зло.     | ||||||||||
| 30
    
        oslokot 17.06.21✎ 10:10 | 
        Я один не понимаю что это за асинх и зачем она нужна в 1С ?     | ||||||||||
| 31
    
        fisher 17.06.21✎ 10:10 | 
        (22) В смысле - нахера? Попробуй цепочку асинхронных вызовов написать в старом стиле и посмотри какая лапша получается. Сделали почти как у взрослых - так гораздо удобнее.
 (33) Да, сахар. Сладкий. Старый задиприкейтят, куда деваться. | ||||||||||
| 32
    
        1Сергей 17.06.21✎ 10:13 | 
        (0) Ничего не выведет. вывалится в ошибку на строке "b = ждать а;"     | ||||||||||
| 33
    
        Chai Nic 17.06.21✎ 10:16 | 
        (30) Для совместимости с мозгами джавистов и их творчеством для смартфонов     | ||||||||||
| 34
    
        sikuda 17.06.21✎ 10:17 | 
        (31) Анекдот в тему:
 "Павел, а можно задать вопрос асинхронно? А где установить флажок чтобы старая функция ПоместитьФайл стала работать так как ПоместитьФайлНаСерверАсинх без дополнительных заклинаний АСИНХ и Ждать? Спасибо" | ||||||||||
| 35
    
        fisher 17.06.21✎ 10:17 | 
        (1)(27) + Причем действительно визуально видно, как сначала выводятся 1, 2 а потом первым втыкается 3. То есть очевидно при выводе сообщений еще как-то хитро порядок может восстанавливаться и просто в этом случае он восстанавливается неправильно. То ли баг, то ли фича.     | ||||||||||
| 36
    
        Вафель 17.06.21✎ 10:18 | 
        Асинхронность нужна чтобы в браузере работало     | ||||||||||
| 37
    
        oslokot 17.06.21✎ 10:19 | 
        (33) (36) ну дык оно и щас работает через описаниеоповещения и т.д.     | ||||||||||
| 38
    
        fisher 17.06.21✎ 10:21 | 
        Вас, плять, не понять. То плачут что язык не развивается. А когда развивается - плачут что остаются старые варианты синтаксиса. А если бы вырезали - плакали бы что обратную совместимость сломали.
 Хлебом не корми - дай поплакать. | ||||||||||
| 39
    
        oslokot 17.06.21✎ 10:22 | 
        Работает - не трожь (с)     | ||||||||||
| 40
    
        Почему 1С 17.06.21✎ 10:22 | 
        (32) а на Асинх первее не заругается?     | ||||||||||
| 41
    
        1Сергей 17.06.21✎ 10:23 | 
        (40) кстати, да     | ||||||||||
| 42
    
        fisher 17.06.21✎ 10:23 | 
        (41) С 18 релиза только.     | ||||||||||
| 43
    
        Chai Nic 17.06.21✎ 10:27 | 
        (39) Оно и дальше бы работало без асинхронности. Собственно, отрасли учетных систем это нафиг не сдалось. Но пришлось влезать в облака, веб и смартфоны. А там сихронный код некомильфо.     | ||||||||||
| 44
    
        Garykom гуру 17.06.21✎ 10:28 | 
        (34)
 >Анекдот в тему: >"Павел, а можно задать вопрос асинхронно? >А где установить флажок чтобы старая функция ПоместитьФайл стала работать так как ПоместитьФайлНаСерверАсинх без дополнительных заклинаний АСИНХ и Ждать? >Спасибо" а ты хорош! действительно просто верните синхронность на место, точнее скройте под капотом всю эту асинхронную муйню и просто разрешите писать банально ПоместитьФайл() а что там будет и как выкручиваться и синхронно или нет плевать | ||||||||||
| 45
    
        1Сергей 17.06.21✎ 10:28 | 
        (42) Почитал. Да, всё-таки ругнётся на ждать     | ||||||||||
| 46
    
        fisher 17.06.21✎ 10:47 | 
        (44) > скройте под капотом всю эту асинхронную муйню
 Не все там так просто. Неспроста требуют функции с использованием асинхронности тоже как асинхронные в объявлении описывать. Они сразу должны особым образом компилиться/исполняться, как возвращающие промисы вместо обычных значений возврата. Для них отдельная механика и их надо сразу различать. Да и слишком много под капот - тоже плохо. Синтаксис с промисами как раз мне вполне нравится. Он и удобный/компактный и при этом не дает забыть, что происходит на самом деле. У таких же функций еще ряд особенностей есть. Передача параметров по значению, например. И это тоже нужно помнить. | ||||||||||
| 47
    
        fisher 17.06.21✎ 10:50 | 
        Да и вообще это не 1С изобретение. Слизали с того же js.     | ||||||||||
| 48
    
        Garykom гуру 17.06.21✎ 11:01 | 
        (46) Все функции "как асинхронные в объявлении описывать" и все
 Во многих ЯП не требуется отдельно, все зависит от вызова/контекста | ||||||||||
| 49
    
        Garykom гуру 17.06.21✎ 11:03 | 
        И да &НаСервере и &НаКлиенте это изврат вот с него все началось!
 Надо было оставить это в разных модулях чисто серверных и чисто клиентских и чисто "без контекста" если уж так хочется | ||||||||||
| 50
    
        Garykom гуру 17.06.21✎ 11:04 | 
        И самый изврат это в чисто дябильном ограничении (в мозгах разработчиков) что сервер не может клиента вызывать
 Ибо Сообщить() вызванное на &НаСервере каким то магическим образом сообщает на клиенте! :) | ||||||||||
| 51
    
        fisher 17.06.21✎ 11:05 | 
        (48) > Во многих ЯП не требуется отдельно
 Перечисли несколько из многих. | ||||||||||
| 52
    
        fisher 17.06.21✎ 11:07 | 
        (49) Ты бы первый брызгать начал мол "дебилы, прыгай теперь все время между модулями, контекст держать трудно, нет чтобы через аннотации сделать!"     | ||||||||||
| 53
    
        Chai Nic 17.06.21✎ 11:09 | 
        И кстати аннотации лучше было делать суффиксом, по типа ключевого слово "Экспорт" в определении. А без этого нелепого амперсанда.     | ||||||||||
| 54
    
        Chai Nic 17.06.21✎ 11:10 | 
        +(53) И в этом плане Асинх как префикс - уродство дикое     | ||||||||||
| 55
    
        Garykom гуру 17.06.21✎ 11:12 | 
        (52) Так один хрен между модулями прыгать сейчас приходится     | ||||||||||
| 56
    
        fisher 17.06.21✎ 11:12 | 
        (53)(54) А мне норм.
 (55) Ну а был бы вообще калейдоскоп. | ||||||||||
| 57
    
        Garykom гуру 17.06.21✎ 11:13 | 
        Аннотации кстати это говно
 Еще со времен Java раздражают где вся JPS на них | ||||||||||
| 58
    
        Garykom гуру 17.06.21✎ 11:13 | 
        (57) *вся JPA     | ||||||||||
| 59
    
        fisher 17.06.21✎ 11:14 | 
        (57) Ага. Сказали в golang а потом начали комменты парсить при кодогенерации.     | ||||||||||
| 60
    
        Garykom гуру 17.06.21✎ 11:14 | 
        (56) модуль менеджера и модуль объекта не калейдоскоп?     | ||||||||||
| 61
    
        Garykom гуру 17.06.21✎ 11:14 | 
        (59) угу тоже начали местами в какую то не ту хрень идти     | ||||||||||
| 62
    
        Garykom гуру 17.06.21✎ 11:15 | 
        (60)+ сцуко почему не сделали "аннотации" &ЭтоМенеджер и &ЭтоОбъект ???     | ||||||||||
| 63
    
        fisher 17.06.21✎ 11:15 | 
        (60) Нет. А вот при программировании формы без разделения экрана на две части вообще не представляю, как бы работал.     | ||||||||||
| 64
    
        Garykom гуру 17.06.21✎ 11:18 | 
        (63) Ты не поверишь
 В свое время прекрасно "программировал форму" только кодом Да и сча когда надо 3D нарисовать беру https://ru.wikipedia.org/wiki/OpenSCAD где кодом/скриптами | ||||||||||
| 65
    
        Garykom гуру 17.06.21✎ 11:20 | 
        (64)+ У меня прекрасное объектно-визуальное мышление, могу за конфигуратор сам в воображении форму по коду рисовать     | ||||||||||
| 66
    
        Chai Nic 17.06.21✎ 11:20 | 
        (60) Модуль менеджера так то штука логичная. За исключением модулей менеджера обработок и отчетов. Их использование ничем нельзя оправдать.     | ||||||||||
| 67
    
        fisher 17.06.21✎ 11:20 | 
        (64) Я про то, что если бы код формы явно делился на два модуля, клиентский и серверный как ты предлагаешь, то человечески работать можно было бы только одновременно имея оба модуля перед глазами.     | ||||||||||
| 68
    
        fisher 17.06.21✎ 11:22 | 
        Потому что клиент-серверный код формы плотно увязан между собой и надо постоянно держать общий контекст.     | ||||||||||
| 69
    
        Garykom гуру 17.06.21✎ 11:23 | 
        (67) расскажи это бэкендерам с фронтэндерами и фуллстеками веб     | ||||||||||
| 70
    
        Garykom гуру 17.06.21✎ 11:25 | 
        (69)+ Сцуко сколько я себя приучивал на лету читать &НаСервере и &НаКлиенте 
 Вместо логичного другого модуля к которым уже вполне привык до этого | ||||||||||
| 71
    
        fisher 17.06.21✎ 11:25 | 
        (69) Это только фуллстекам рассказать можно. Остальные не поймут. А им рассказывать нельзя. Иначе они будут плакать горючими слезами и проситься в 1С.     | ||||||||||
| 72
    
        Garykom гуру 17.06.21✎ 11:26 | 
        (71) ты не понимаешь?
 когда у тебя сервер и клиент разные то очень логично и понятно когда код в разных модулях и как раз дикая путаница если в одном с аннотациями | ||||||||||
| 73
    
        fisher 17.06.21✎ 11:28 | 
        (72) Не. Не понимаю. Мне вполне комфортно. Никакой выгоды от отдельного модуля не вижу. А выговор от указательного пальца точно получу.     | ||||||||||
| 74
    
        fisher 17.06.21✎ 11:31 | 
        Не. Выгоду вижу - не пришлось бы аннотации писать. Получается, сколько ты модулей предлагаешь, три? А когда захочешь одну и ту же функцию на клиенте и сервере - копи-паст или четвертый модуль?     | ||||||||||
| 75
    
        DrZombi гуру 17.06.21✎ 11:32 | 
        (0) Тест липовый, нужно нормально так...
 С использованием всех правил 1С Языка программирования и возможности Серверной версии 1С :) | ||||||||||
| 76
    
        ДенисЧ 17.06.21✎ 11:32 | 
        (74) Для одной функции - ln -s )))     | ||||||||||
| 77
    
        Garykom гуру 17.06.21✎ 11:37 | 
        (74) Я хочу сказать что контекст где выполняться должно определяться автоматически или непосредственно при запуске/вызове процедуры/функции
 Т.е. модуль один и там никаких аннотаций, просто Процедура МояПроцедура() А вот в коде НаСервере МояПроцедура() или НаКлиенте МояПроцедура() если принудительно указываешь и просто МояПроцедура() если на автомат платформы полагаемся | ||||||||||
| 78
    
        Garykom гуру 17.06.21✎ 11:39 | 
        (77) Ву компрене?     | ||||||||||
| 79
    
        Вафель 17.06.21✎ 11:40 | 
        (77) в 1с не увидели смысла писать такой автомат     | ||||||||||
| 80
    
        Garykom гуру 17.06.21✎ 11:40 | 
        (79) Точнее "не шмогла"     | ||||||||||
| 81
    
        Вафель 17.06.21✎ 11:42 | 
        (80) просто посчитали не нужным выделять столько денег на разработку данной фичи     | ||||||||||
| 82
    
        fisher 17.06.21✎ 11:49 | 
        (77) Уже общий? Только ж разделять хотел по модулям. Мне такое не нравится. Я хочу видеть явное разделение мест исполнения иначе легко завтыкать.
 Вот контекстные/неконтекстные автоматически определять можно было бы. Но на практике это бы замедлило компиляцию модулей. Т.е. либо время старта, либо первое обращение к объекту. Это неприемлемая цена за такой сахар. Тогда только на полную предкомпиляцию переходить, а тут свои минусы. | ||||||||||
| 83
    
        Serginio1 17.06.21✎ 11:53 | 
        (23) Тем, что в JS появился async await и уже давно. А отказ от модульности на событиях причем еще и метод в текстовом виде ....     | ||||||||||
| 84
    
        Garykom гуру 17.06.21✎ 11:57 | 
        (82) Или разные модуля или по контексту при вызове
 А вот эти аннотации полная глупость и вынуждают иногда дублировать код, если одна функция и на клиенте и на сервере может выполняться и не надо делать долгий вызов сервера | ||||||||||
| 85
    
        fisher 17.06.21✎ 12:04 | 
        (84) Баба Яга против. Вполне нормальный инженерный компромисс получился. А ты как-то из крайности в крайность кидаешься. То тебя хлебом не корми дай красивое разделение на клиент/сервер по модулям, то вообще не нужно никакого разделения и пускай разработчик с платформой по очереди репу чешут.     | ||||||||||
| 86
    
        Garykom гуру 17.06.21✎ 12:06 | 
        (85) Не надо таких компромиссов
 И несколько версий платформы параллельно не надо! Нужна одна но без глюков | ||||||||||
| 87
    
        fisher 17.06.21✎ 12:09 | 
        Я не против.
 Согласен быть богатым. Согласен быть счастливым. | ||||||||||
| 88
    
        fisher 17.06.21✎ 12:15 | 
        Что там кстати насчет (51)?     | ||||||||||
| 89
    
        BIP1 17.06.21✎ 12:21 | 
        (0) Сначала выводится "3", потом "1,2", а потом "3,1,2".     | ||||||||||
| 90
    
        Chai Nic 17.06.21✎ 15:11 | 
        (72) &НаСервере и &НаКлиенте это полное соответствие парадигмы пхп/джаваскрипт, когда в одном коде вперемешку и серверные и клиентские процедуры..     | ||||||||||
| 91
    
        Garykom гуру 17.06.21✎ 15:20 | 
        (90) эээ давным давно принято js отдавать отдельными файликами а не засовывать в динамически формируемую html кодом на php     | ||||||||||
| 92
    
        minsk1s 17.06.21✎ 15:24 | 
        (30) Если Вы не понимаете зачем это в 1С, скорее всего Вы не понимаете, что это такое в принципе...
 Чтобы не читать талмуды ИТС, небольшой FAQ по Асинх: https://1cnik.by/asinhronnye_funkcii.php | ||||||||||
| 93
    
        minsk1s 17.06.21✎ 15:27 | 
        как-то так     3, 1, 2 | ||||||||||
| 94
    
        Garikk 17.06.21✎ 15:31 | 
        (90) так давно никто не делает (битрикс не считается)
 запросы к беку только через аякс, html шаблонной статикой, отрисовка фиксированными js-ами | ||||||||||
| 95
    
        Garykom гуру 17.06.21✎ 15:37 | 
        (88) http://golang-book.ru/chapter-10-concurrency.html
 
По сути тоже самое но у функции никакого признака Асинх в описании/объявлении нет, только при вызове И да там где надо получить ответ некий аналог Ждать | ||||||||||
| 96
    
        fisher 17.06.21✎ 15:44 | 
        (95) Многопоточность и асинхронность - не совсем одно и то же.     | ||||||||||
| 97
    
        Garykom гуру 17.06.21✎ 15:46 | 
        (96) Это одно и тоже когда количество разрешенных потоков = 1
 В примере на Golang многопоточность + асинхронность | ||||||||||
| 98
    
        Garykom гуру 17.06.21✎ 15:47 | 
        (97)+ например нода она однопоточная асинхронная изначально     | ||||||||||
| 99
    
        Cthulhu 17.06.21✎ 15:53 | 
        (25): Матвей, там у тебя на сайте ошибка: ссылка на "2. Online консоль запросов" ведет в никуда: Not Found / The requested URL /хттп://ццц.итс22.ру/zaprosi-1s-8 was not found on this server. / Apache/2.4.6 Server at blog.sikuda.ru Port 80)     | ||||||||||
| 100
    
        fisher 17.06.21✎ 15:55 | 
        (95)(97) Согласен. Горутины, конечно, киллер-фича.     | ||||||||||
| 101
    
        oslokot 17.06.21✎ 15:58 | 
        (92) Асинхронность в 1с и так уже есть через оповещения, благодаря которым отслеживаются моменты завершения вызовов процедур, плюс отказ от модальности и прочие плюшки. И все это уже давно работает и в браузерах и в мобильных приложениях. Может быть и коряво все выглядит но работает. Ожидание ответа от диалоговых вызовов, обработка выбора, ожидание помещения файлов в хранилище и обратно и так далее. 
 То есть я о том, что уже и так все работает в браузерах как надо | ||||||||||
| 102
    
        Garykom гуру 17.06.21✎ 15:58 | 
        (100) блин так и я про что!
 что в объявлении процедуры/функции "Асинх" нафик не надо чтобы любую можно было вызвать асинхронно и она обещание вернула в виде своего имени, которое можно использовать потом для возврата результата или статуса завершения | ||||||||||
| 103
    
        ДенисЧ 17.06.21✎ 16:00 | 
        (101) Вот чтобы было менее коряво - приделали асинки.     | ||||||||||
| 104
    
        Garykom гуру 17.06.21✎ 16:02 | 
        (102)+ и отдельные не синхронные вызовы для встроенных методов платформы тоже нахрен не нужны!
 те же самые юзать а поведение зависит от настроек конфы где стоит синхронно/асинхронно | ||||||||||
| 105
    
        Вафель 17.06.21✎ 16:04 | 
        (104) в жс нужно писать, а чтобы не заморачиваться решили переложить на прогов     | ||||||||||
| 106
    
        Cthulhu 17.06.21✎ 16:05 | 
        (101): есть - да не такое. ожидания ответа от диалоговых вызовов без потери контекста (один из вариантов - вариант в лоб в виде приостановки выполнения "как раньше в модальном режиме") - не было. теперь - есть.     | ||||||||||
| 107
    
        Garykom гуру 17.06.21✎ 16:07 | 
        (106) ыыы теперь мы научились асинхронно эмулировать иснхронные/модальные вызовы     | ||||||||||
| 108
    
        fisher 17.06.21✎ 16:08 | 
        (102) Это если сразу так задизайнить. А тут чтобы не перепиливать приколотили сбоку плюшку.     | ||||||||||
| 109
    
        sikuda 17.06.21✎ 16:08 | 
        (99) Так чего там про sikuda.ru ;0 port 80???     | ||||||||||
| 110
    
        fisher 17.06.21✎ 16:09 | 
        В общем, дареному коню в зубы не смотрят :)     | ||||||||||
| 111
    
        fisher 17.06.21✎ 16:10 | 
        В js вроде точно также было. Сначала на коллбэках а потом приколотили асинки точно таким же макаром.     | ||||||||||
| 112
    
        sikuda 17.06.21✎ 16:25 | 
        (111) Так все таки что такое ВопросАсих? - https://code1c.sikuda.ru/wp-content/plugins/codemirror1c/run/question/     | ||||||||||
| 113
    
        ДедМорроз 17.06.21✎ 16:36 | 
        Если бы результат можно было получать без ожидания,то этому бы цены не было,а когда только ждать - это костыление.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |