gifts2017

Заметки о модальности и асинхронности

Опубликовал Яков Коган (Yashazz) в раздел Программирование - Практика программирования

Что на самом деле мы получили в 8.3.Х и почему это не очень радует. Поддерживающим большие нетиповые конфигурации посвящается.

В последних версиях, активно работающих в веб-клиенте и на мобильных приложениях, 1С начала агрессивно продвигать новый подход к модальности, к работе с модальными окнами и диалогами. На эту тему много и убедительно написано в методическом сопровождении, статьях на сайтах и в комментариях специалистов. Но не будем поддаваться, посмотрим критически на предлагаемые нам новшества. Причём рассуждать я хочу как типичный «одинэснег». Обойдусь без пересказа статей, копипаста Синтакс-помощника и раскрытия технических терминов, подразумевая, что читателю оно уже всё известно.

Основные претензии:

Многое, что можно было «спрятать» в платформе и сделать своими силами, просто перевалено на плечи разработчиков 1С. С больной головы на здоровую. То ли в 1С не захотели это сделать, то ли не успели (последнее заметно по целому ряду прецедентов, когда самоочевидные вещи «подтягивали» по ходу выпуска релизов, не успев сделать сразу).

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

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

Во-вторых, нам печально повествуют, что всплывающие окна, как нехорошее рекламное нечто, блокируются браузерами (т.е. требуют разрешения на включение) и вообще не поддерживаются мобильными устройствами, а значит, маст дай. Более того, авторы некоторых методических статей ненавязчиво намекают, что в будущем 1С намерена полностью отказаться от модальности, что это «генеральная линия партии», и хотя нам милостиво разрешено пока жить по-старинке, но будущее уже предрешено и в нём нет места для «Предупреждение(«Hello, World»)». Пугают, стало быть.

 

Необходимость применения модальных окон является данностью, избежать которой полностью невозможно, причём отнюдь не по техническим, а по идеологическим соображениям. Всегда возможна ситуация, когда пользователя нельзя пускать «дальше», позволить ему продвижение в его работе, пока не будут выполнены некоторые действия. В этом смысле модальными можно называть и окна пошаговых «мастеров», где кнопка «Далее» недоступна до удовлетворения неких условий. Модальность – не в том, что окно маячит поверх остальных и не даёт переключиться (оно может выглядеть как угодно), а в том, что пользователь локализован в своих действиях более узко, чем в других случаях работы с приложением. Модальность – не реализация, не внутренние глубины, недоступные пользователю хитросплетения, а поведение интерфейса. Задумаемся: разве не так себя ведут все диалоги, инициированные пользователем и ждущие от него необходимых уточнений? Именно так. И браузеры не исключение – диалог загрузки файла, или запрос на разрешение cookies, или вопрос насчёт сертификата – были и остаются модальными окнами. Настроечные аспекты, вопросы всяких FlashPlayer, антиспамы, антивирусные диалоги, принтеры и работа с печатью – модальны. И замечательно себя чувствуют в интернетах. Значит, не собирается мир пока уходить от модальности.

Теперь посмотрим, что нам предлагается – свойство, управляющее блокировкой интерфейса/окна. По сути, для нашего юзверя, то же самое. Нам в плюс, что поведение более управляемое, можно задавать в коде; нам в минус, что головной боли об этом чуть больше. Но пользователю, в общем, плевать, почему он не может, открыв окно «1», щёлкнуть по кнопке в окне «2». Внимание, вопрос – где же пресловутый отказ от модальности?

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

 

Невинно пострадала процедура «Предупреждение». Полный аналог команды alert, которая отнюдь не является всплывающим окном, она, тем не менее, попала под запрет. Хорошо хоть, описание оповещения необязательное. Мне могут возразить, что в планах 1С есть вывод туда форматированной строки и вообще неизвестно, может, это тоже маленькая отдельная формочка, а не alert. Но тогда см.выше, что мешает ей быть такой формочкой с блокировкой интерфейса, не делая мне головной боли? И что мешает для вывода форматированной строки применить «ПоказатьОповещениеПользователя» (к которой тоже есть претензия именно ввиду её совершеннейшей немодальности – помигало и исчезло, а юзверь мог и не заметить)?

Тем более ни при чём действия с выпадающим списком, в режиме списка и меню. Если 1С оставила такую штуку, как подменю любой вложенности, и в природе существуют поля ввода с выпадающими списками, то причём тут борьба с модальностью? Где в подменю и выпадающем списке модальность? Нигде, чистая произвольная навигация по предоставленным данным в рамках интерфейса. Есть ли разница между «ВыбратьИзМеню» и статичным подменю? Никакой. Тогда почему надо заставлять всех делать «ПоказатьВыборИзМеню» и перелопачивать ради этого и код, и логику?

Ладно, нам объяснили, что «ВыбратьЭлемент» это теперь очень плохо. Но тогда почему остались диалоговые методы различных объектов? Почему никто не посягнул на «ДиалогВыбораФайла.Выбрать»? Модальность же неимоверная! А это далеко не единственный пример. Почему не отказались от мини-диалогов, возникающих при нажатии на «педальку» поля ввода - например, от календаря или калькулятора, от выбора типа значения? Они ведь интерфейсно ровно то же, что выбор из списка или меню. Загадка!

 

Вернёмся к асинхронности исполнения. «Тупой одинэснег» внимательно читает методические статьи и видит, что теперь после вызова «Показать…» исполнение кода продолжается, а отдельная ветка уходит на обработку действий согласно описанию оповещения. Супер, можно разделить поток исполнения! Можно выполнить действие «а», в то время как «немодальное» окно будет пройдено пользователем и согласно ему выполнится действие «б». Асинхрон!

Не тут-то было. Простейшая проверка показывает, что асинхронность, заявленная идеологически, на практике отсутствует. Достаточно поставить бесконечный цикл после вызова «Показать…» и – здравствуй, перезапуск приложения. Асинхронностью я бы это не назвал ни в коем случае. Нижеприведённое также привело к зависанию:

Процедура НекаяКоманда(Команда)
   
опоп=Новый ОписаниеОповещения("ЗавершениеНекойКоманды",ЭтотОбъект,);
   
ПоказатьПредупреждение(опоп,"Hell, world!");
    Пока
НекийКлюч Цикл
       
ОбработкаПрерыванияПользователя();
    КонецЦикла;
КонецПроцедуры

Процедура
ЗавершениеНекойКоманды(Параметр1)
   
НекийКлюч=Ложь;
КонецПроцедуры

 

Более того, авторы статей аккуратно намекают, что после вызова «немодальных» диалогов вообще лучше бы прекратить исполнение кода и вообще выйти из процедуры/функции, т.е. ставить такой вызов последней строкой кода. На красивых картинках нам показывают, как переключается туда-сюда-обратно ход процесса, как передаётся управление, как надо работать со вложенными процедурами и т.д. Но вдумайтесь – где здесь асинхрон? Перед нами просто более запутанное, но всё такое же последовательное, плоское и однопоточное выполнение кода! Пресловутая «асинхронность» не чисто программная, а программно-интерфейсная силами платформы. Здесь нет ожидания успешности или неуспешности, нет их перехвата. Есть приостановка выполнения нашего кода на период «висения» некоего окна. И где разница с тем, что было до сих пор? Почему мы лишены возможности продолжить там же, в той же процедуре? Почему нам, на худой конец, не дали меток наподобие Goto, и обязательно теперь прыгать в другую процедуру? Напомню, второго потока по сути нет и не подразумевается!

Да и зачем нам в интерфейсах асинхронность вместо main flow? Ладно, тяжёлые серверные действия, уходящие фоновыми заданиями в настоящие асинхроны, но на клиенте (а описание оповещения живёт только на клиенте) таких задач пока нет и особо не предвидится. Подчеркну – именно применительно к взаимодействию с интерфейсом, а не к работе с данными, т.к. платформа отрисовывает и показывает всё за нас. Приведите мне пример, позволяющий убедить главбуха, отчего теперь код пишется втрое дольше!

Дочитавшие до этого места могут возразить, что, мол, интернеты-веяния времени, и вообще новомодные геопозиционирования и прочая. Насчёт интернета и веяний времени я комментировать не буду, т.к. версия встроенного в платформу браузера ниже всякой критики, свойство parentWindow не советовали к применению прям даже в СП, а уж какая мешанина вышла из его свойств/методов и свойств/методов Dociment в итоговом «Документ» я вообще молчу. Прогресс беспредельный, ага.

Что касается настоящей «интернетности». Да, хорошо, что объект «ОписаниеОповещения» уже напоминает известную в JavaScript возможность перекинуть процедуру как параметр и выполнить где-то в другом месте. Да, теперь мы можем вызвать процедуру из некоей формы, находясь в совсем другом месте, имея лишь оповещение, а значит, имея саму эту УФ, нужный контекст и тд. Но вот достучаться до команды так пока не получается – известно, что модуль общей команды это «чёрный ящик», и находящийся там код программно вызвать нельзя.

А главное, что нет настоящих Promise, хорошо известных в JS. Следующим логичным шагом было бы сделать нечто вроде: 

ОбъектИлиМенеджер.ПроцедураИлиМетод(Параметры).ЕслиУспешно Тогда
   
ДействияПриУспешности(Параметры);
ЕслиНеуспешно Тогда
   
ДействияПриНеуспешности(Параметры);
ЕслиУспешностьНеясна Тогда
   
ДействияПриНеясности(Параметры);
Конец

об1=Новый Обещание(ОписаниеОповщения1,ОписаниеОповещения2);

Но пока "обещаний" нам не обещают.

Логичной представляется также возможность динамического создания подписок на события любого характера (listeners), ну и наконец, господа из 1С, может быть, сделают перехват и обработку нажатия пользовательского прерывания, хотя бы исключительно на клиенте.

 

Итак, мы пока что имеем однопоточное, не-асинхронное (просто запутанное) выполнение кода, и якобы немодальные диалоги, чьё поведение ничем не отличается от модальных, а в ряде случаев вообще не модально по определению. Просто прибавилось хлопот.

В заключение отмечу, что 1С сама не очень соблюдает собственные рекомендации. Так, в http://its.1c.ru/docs/v8nonmodal/ сказано, цитирую, «Другой сценарий, который является крайне нежелательным - это немодальный диалог в обработчике ПередЗавершениемРаботыСистемы. Во-первых потому, что в условиях веб-клиента браузеры очень негативно относятся к показу каких-либо сообщений при закрытии приложений и блокируют их. Во-вторых потому, что наличие такого диалога не позволит реализовать некоторые сценарии работы.». Вспомним, как себя ведёт БП 3.0 при закрытии? То-то же.

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

 

 

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Яков Коган (Yashazz) 18.09.14 13:08
Да, забыл ещё одну тонкость упомянуть: даже если вы работаете сугубо на клиенте, данные 1С всё равно может погнать через сервер, поэтому будьте внимательны, пытаясь в параметрах описания оповещения что-нибудь не подходящее для такой сериализации, оно может сказать про ошибку передачи данных между клиентом и сервером. Следите, как у вас объявлено завершение, т.к. оно может быть и на сервере, и на клиенте.
2. Caponid V (caponid) 18.09.14 15:31
Столкнулся с этим непосредственно.
Хорошо что я в самом начале разработки конфы - пришлось переписать совсем немного... а вот для старой, да еще и с вэб интерфейсом - страшно даже браться.. хоть и на хроме она местами перестала работать.
3. Ivan Khorkov (vano-ekt) 18.09.14 16:24
диалог выбора файла кто чем заменяет сейчас? или самому предполагается написать?
5. Алексей Белоусов (AllexSoft) 18.09.14 17:51
Если честно пока тоже не осознал а зачем это все вообще нужно, этот отказ от модальности.. иногда мне специально нужно сделать оконо модельным чтобы пользователь не тыкал никуда более пока не закончит работу с этим окном.. пока что похоже на такси2...
6. Яков Коган (Yashazz) 18.09.14 19:25
(4) Согласись, платформописатели могли бы озаботиться, чтобы модальное твоё окно отрабатывалось по той же технологии, что и не-модальное-но-блокирующее-всё-кругом. Хоть подменой на ими сгенерённое. Но, видимо, "не шмагла".
A.Sytchev; kostas; bulpi; +3 Ответить 1
7. Егор Иванов (Infactum) 18.09.14 20:44
Справедливости ради отмечу, что однопоточность приложения никак не мешает исполнять код асинхронно. Стоит посмотреть хотя бы в сторону node.js. Очень хотелось бы надеяться, что в 8.4 наконец-то приблизятся к этой идеологии.
8. Алексей 1 (AlX0id) 18.09.14 21:27
(6) Yashazz,
Спору нет - можно сделать одно и то же хорошо и плохо )
Просто я к тому, что, казалось бы, в модальности ничего страшного нет, а вон какие бяки случаются. И уход от модальности обоснован полностью в связи с тем, что от нее отказываются все популярные браузеры.
9. Артем Целовальников (slazzy) 18.09.14 22:08
(3) vano-ekt, НачатьПомещениеФайла вам не нравится?
10. Яков Коган (Yashazz) 18.09.14 23:59
(7) Воистину так.

(8) Ещё раз: где там уход от модальности, если есть свойства поведения формы, позволяющие ей блокировать остальное? Это разве не лютая модальность? А если да, то почему ровно так же нельзя было сделать маленькое окошко, отрабатывающее функцию "вопрос"?
bow; veretennikoff; molodoi1sneg; +3 Ответить 1
11. Михаил Канаев (mrBart) 19.09.14 07:37
Заменил модальные вызовы на многоуровненые процедуры:

Пример

Процедура КакаяТО(Результат, ДополнительныйПараметр) экспорт

    Если ДополнительныйПараметр.кодДействия = 1 тогда

            ДополнительныйПараметр.КодДействия = 2;
           //ЗадатьВопрос

    КонецЕсли;

    Если ДополнительныйПараметр.кодДействия = 2 тогда

            ДополнительныйПараметр.КодДействия = 3;
           //Предупредить

    КонецЕсли;

    Если ДополнительныйПараметр.кодДействия = 4 тогда

           //Ввести значение

    КонецЕсли;

КонецПроцедура
...Показать Скрыть
KapasMordorov; +1 Ответить 1
12. BabySG (BabySG) 19.09.14 08:55
(0)
Многое, что можно было «спрятать» в платформе и сделать своими силами, просто перевалено на плечи разработчиков 1С.

Пример блокирующего окна, реализованного по другому в студию!
13. andr bat (zoytsa) 19.09.14 09:54
Наверно разработчиков платформы бесит звук нажатия на пассивное окно при открытом модальном. )))
e.kogan; veretennikoff; AlexanderKai; A.Sytchev; +4 Ответить
14. Сергей Старовойтов (AVARY) 19.09.14 10:04
Многое в решениях 1с становится понятным, если попробовать реализовать подобный функционал в web-интерфейсе через javascript и C# или PHP.
15. Алексей 1 (AlX0id) 19.09.14 10:17
(10) Yashazz,
Ну попробуйте запустить "немодальные" и "модальные" 1сные вызовы в Chrome 37. Одни запустятся, другие нет. Все остальное - просто софистика.
16. ффф ыыы (zqzq) 19.09.14 11:34
Вообще согласен с автором, неужели такая проблема генерировать "немодальный/псевдомодальный" код JavaScript на основе старого "модального" кода 1С. Хотя учитывая что авторефракторинг модальности пасует в тяжёных случаях, возможно и преобразование кода 1С->JS с такими же неразрешимыми проблемами сталкивается.
17. Shkalar Shkalar (Shkalar) 19.09.14 17:37
(14) AVARY, Полностью согласен.

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

А возможность ВыполнитьОбработкуОповещения компенсирует абсолютно все.
Да, еще нету возможности установки блокировок для безопасного использования общих переменных, но думаю что все впереди.
А "Приведите мне пример, позволяющий убедить главбуха, отчего теперь код пишется втрое дольше!" это позиция программиста-бухгалтера, не нравится, ну оставайтесь на обычных формах.
Пример такой (правда не к асинхронщине относится): есть обработка, которая работает 13 минут, я потратил уйму времени на то, чтобы это переделать в 30 секунд, разветвляя код фз в 10 потоков, причем в это время можно работать в программе дальше, т.к. интерфейс не зависает. Запускается все очень часто. Так что затрата моего времени была оправдана.

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


И чем плакаться о сыром подходе, я лучше буду извлекать из этого максимальную пользу для себя.
18. Яков Коган (Yashazz) 19.09.14 17:41
(11) Я так же поступаю - сделал 2 процедуры "Завершение", на один входной параметр (для ПоказатьПредупреждение и ПоказатьЗначение) и на два (для остальных), а внутри них разруливаю по этим параметрам. Но изврат же.

(12) По-другому это как? Я вот сделаю формочку с табличным полем, пропишу ей, чтоб всё блокировала, и буду вызывать - и чем это станет отличаться от, например, "ВыбратьЭлемент"? Ничем, кроме моих трудозатрат.

(14) Я и говорю - тогда пусть уж делают всё, как в JS, и нормальный асинхрон тоже. Но сказанного чуть выше насчёт нашего труда там, где могла бы пыхтеть платформа, это не отменяет.

(15) Вот и вопрос - что мешало самой 1С автообработать команду "Предупреждение" как "немодальную"? Лень?

(16) Возможно. Только "тяжёлых" случаев на порядок меньше, чем тех, что были жёстко ограничены новой концепцией. "ВыбратьИзМеню" - тяжёлый случай?
19. BabySG (BabySG) 19.09.14 18:26
(18)
По-другому это как? Я вот сделаю формочку с табличным полем, пропишу ей, чтоб всё блокировала, и буду вызывать - и чем это станет отличаться от, например, "ВыбратьЭлемент"? Ничем, кроме моих трудозатрат.

Веб-клиент пошлет нафиг примерно через 20 секунд или меньше :) Ссылку на тему, почему так - уже давали.

Вот и вопрос - что мешало самой 1С автообработать команду "Предупреждение" как "немодальную"? Лень?

При такой постановке вопроса понятно только то, что Вы совершенно не понимаете разницу между модальным вызовом и асинхронным + также не понимаете вопрос обратной совместимости кода :)
20. Яков Коган (Yashazz) 19.09.14 20:33
(17) 1С без бухгалтерии - ничто. Чем скорее вы это поймёте, тем более реалистичным увидите наш мир. 1С поднялась, выросла, стала монополистом итд исключительно потому, что большинство бухов вынуждено сдавать отчётность государству средствами БП (иначе шибко тяжко), и 1С продолжает лоббировать сие. Иначе сидели б мы на SAP, всяких "Парусах", Аксаптах и прочих Галактиках. Это оффтоп, но имхо, очевидность.
(19) Ага, са-а-авсем не понимаю))) Расскажите мне, я ж предупреждал, что рассуждаю, как "тупой одинэснег". Расскажите, с цитатами, с терминами, да со ссылками на первоисточники. Просветите, пожалуйста, желательно прямо статьёй - я уже заранее готов её плюсануть!
21. Евгений Пономаренко (Evgen.Ponomarenko) 19.09.14 23:37
(17) Shkalar,
И чем плакаться о сыром подходе, я лучше буду извлекать из этого максимальную пользу для себя. Ведь чем сложнее код (именно из-за возможностей) , тем меньше людей выйдет на высокий уровень и тем больше моя зп :)


Странно, а я думал, что моя зарплата зависит от производительности труда, качества предоставляемых услуг и удовлетворенности моего клиента. Увы, к сожалению, принцип "чем сложнее, тем лучше" поглощает все большое количество не окрепших умов, в том числе и умы ведущих разработчиков 1С.
veretennikoff; happyden; AlexanderKai; KapasMordorov; Рамзес; kostas; Krio2; al_zzz; bulpi; wolfsoft; DigitalMan; +11 Ответить 1
22. Евгений Пономаренко (Evgen.Ponomarenko) 19.09.14 23:50
(14) AVARY,
Многое в решениях 1с становится понятным, если попробовать реализовать подобный функционал в web-интерфейсе через javascript и C# или PHP.


А мне вот не понятно, с чего это вдруг Google Chrome, стал таким жадным к памяти? Подменяя собой все остальные браузеры chromium и лишая пользователя выбора. Того и гляди скоро обнаружатся в коде пустые циклы, что бы тормознуть крутой i7.

У меня последнее время складывается впечатление, что 1С в соответствии с ложными мировыми трендами идет не той дорогой. Автору - респект за поднятую вечную тему
kostas; roman77; bulpi; MaxDavid; +4 Ответить
23. Сергей Одинесников (monsta) 20.09.14 00:22
(14) AVARY,
@using (var f = Html.Bootstrap().Begin(new Form().LabelWidthMd(2).LabelWidthSm(3)))
{
    @f.FormGroup().TextBoxFor(Объект => Объект.Код)
    @f.FormGroup().TextBoxFor(Объект  => Объект.Наименование)
    @f.FormGroup().CheckBoxFor(Объект   => Объект.Использовать)
    @f.FormGroup().CustomControls(Html.Bootstrap().SubmitButton())
}
...Показать Скрыть

Занятно было бы на клиенте иметь возможность подключить twitter bootstrap и писать модальные окна на jquery.
Почему бы не сделать помимо управляемых форм возможность прописать все на HTML5.
Когда-то был холивар между WebForms и MVC, и где эти WebForms сейчас?
24. Сергей Галюк (dj_serega) 20.09.14 16:10
Ну не знаю. Я за такие методы 1С. И кода в 3 раза больше писать не нужно. Нужно просто понять как работает новый функционал и попробовать реализовать его. Понимание придет.
Аналогичная ситуация и с "плевками" в сторону управляемого приложения. Семерочники плюются на них. К ним же и Восьмерочники с обычными формами подтягиваются. Но на самом деле в УФ много плюсов и возможностей. Но для работы в этой управляемой среде нужно понимать что и как происходит. Что такое &НаКлиенте а что &НаСервереБезКонтекста и где его использовать ну и т.д. Примеров много.
Вообщем как-то так :)
veretennikoff; androgin; softcreator; WanGoff; gradi; Chif13; DigitalMan; BabySG; qwinter; +9 5 Ответить 3
25. Евгений Пономаренко (Evgen.Ponomarenko) 20.09.14 22:33
(24) dj_serega,
Что такое &НаКлиенте а что &НаСервереБезКонтекста и где его использовать

Вот...вот... Разработчики браузеров перекладывают свои проблемы на разработчиков платформ, те в свою очередь перекладывают чужие проблемы дальше на разработчиков конфигураций, те в свою очередь на внедренцев, внедренцы на пользователей. И все заняты... только реальную прибыль никто посчитать не может. Ибо зачем она нужна? каждый откусил свой кусочек порога, захомячил и раздувает с важным видом щеки. (вот только проиграть mp3 1С до сих пор не может, с интеграцией с браузерами - косяки... хех)
26. Яков Коган (Yashazz) 21.09.14 00:26
(24)
И кода в 3 раза больше писать не нужно.
Мдя? Статью, ссылочку на которую я привёл в своих заметках, посмотрите, сами всё увидите. В три-не в три, но вдвое больше это уж точно. И да, вы правы, клиент-серверное взаимодействие у 1С тоже вызывает вопросы. Вот вы, такой понимающий эти тонкости, наверное, можете ответить, почему ЗагрузитьНастройки для компоновщика настроек СКД можно делать на клиенте, а ПолучитьНастройки - только на сервере?

(19) Попробую, что ли, сделать. Посмотрим, пошлёт ли браузер "нафиг" то, что сделано в строгом соответствии с новыми рекомендациями, и какова тогда цена этим рекомендациям.
27. Сергей Одинесников (monsta) 21.09.14 11:48
Зачем вообще нужна директива &НаСервереБезКонтекста? Почему нельзя использовать для передачи контекста параметры? &НаКлиенте и &НаСервере тоже костыли, надо клиентскую и серверную часть разносить по разным модулям - client side и server side, иначе получается каша.
Насчет управляемых форм - они определенно более удобны в работе чем обычные формы, просто было бы неплохо предоставить возможность использования альтернативных фреймворков, а то в такси даже желтый цвет отключить нельзя. Тогда бы и вопросов не возникало - хочешь используй JQuery хочешь twitter bootstrap.
Проблему модальности можно было решить на уровне платформы, создавая обработчики автоматически. Решили другим путем - заставив десктопных разработчиков отказаться от красивого и понятного кода. Отсюда и buzz.
eeeio; dj_serega; unichkin; the1; Yashazz; +5 Ответить 2
28. Павел Алексеенко (qwinter) 21.09.14 12:42
Невинно пострадала процедура «Предупреждение». Полный аналог команды alert, которая отнюдь не является всплывающим окном, она, тем не менее, попала под запрет.
А ничего, что алерт блокирует весь браузер?)) Вообще очень смешно читать, что статью, что комментарии.

(27) monsta, ну расскажи те нам "идиотам", как автоматически можно создать обработчики?
29. Яков Коган (Yashazz) 21.09.14 13:57
(28) И что, alert не юзают и повсеместно запрещают? Очень смешно читать такие замечания)))

(28) Отвечу за monsta - а вот ровно так, как предлагается нам создавать ручками, только на пару уровней ниже и автоматом. Если вы в ответ скажете, что "не представляете себе автомата в этой ситуации", я авансом скажу, что набор таких модальных случаев конечен, строго очерчен, сводится к нескольким обработчикам, и никакого ИИ, чтобы это отработать без участия программиста, не надо.

Вообще забавно видеть комменты людей, то ли полагающих себя гуру, то ли не читавших статью - свысока полагая автора замшелым семёрочником, идейно не приемлющим никаких новшеств, не знающим ничего, кроме 1С, - они понтанутся и бегут себе дальше. А как начнёшь конкретные вопросы задавать - так и тишина)))
30. Яков Коган (Yashazz) 21.09.14 14:03
(27) Кстати да. Совершенно не понял, почему нам не дали хотя бы флага для реквизитов - "Передача клиент-сервер". Странно ведь - или тащим всю хрень, или не тащим ничего, управляемости ноль. Параметрами не всё можно передать - вот у меня 10 объектов "ДанныеФормы...", их на сервер кидать параметром в 8.2 некошерно, а в 8.3 просто нельзя; и что, зачем мне таскать все их скопом, когда нужен один? Словом, недоверченная концепция.
...или мы чего-то не знаем о флаге "Использовать всегда"?
31. Сергей Одинесников (monsta) 21.09.14 20:39
Вариант для мобильного контента - http://demos.jquerymobile.com/1.2.0-beta.1/docs/pages/page-dialogs.html - прекрасно работает и в обычном броузере.
  $(function() {
    $( "#dialog-confirm" ).dialog({
      resizable: false,
      height:140,
      modal: true,
      buttons: {
        "Delete all items": function() {
          $(this).dialog("close");
        },
        Cancel: function() {
          $(this).dialog("close");
        }
      }
    });
  });
...Показать Скрыть

Почему нельзя было так реализовать и в 1С.
32. Павел Алексеенко (qwinter) 21.09.14 22:41
(29) Yashazz, покажи хоть один уважаемый сайт, где юзают алерт?

(31) monsta, а теперь опиши, чем то, что ты привел отличается от реализации 1С?

Насчет управляемых форм - они определенно более удобны в работе чем обычные формы, просто было бы неплохо предоставить возможность использования альтернативных фреймворков, а то в такси даже желтый цвет отключить нельзя. Тогда бы и вопросов не возникало - хочешь используй JQuery хочешь twitter bootstrap.
Так то мешает то? http сервис есть? Есть! Хоть что прикручивай и вперед!
33. Сергей Одинесников (monsta) 21.09.14 23:26
(32) qwinter,
Так то мешает то? http сервис есть? Есть! Хоть что прикручивай и вперед!

Неплохая идея, по крайней мере не ограничены REST начиная с 8.3.5. Но давайте вспомним 7.7, в котором был V7Script, позволявший оперировать объектами 1С на сервере и генерировать честный HTML на клиенте. Сейчас мы получили все то же самое, но без возможностей окружения - IIS и .NET. А значит и на клиенте мы ограничены типами данных, с которыми удобно работать из 1С. Так и ладно - не нужно баловства типа графики и прочего на клиенте - но оставьте тогда ВвестиДату, Предупреждение и Вопрос без заморочек.
34. Shkalar Shkalar (Shkalar) 22.09.14 09:50
(21) Evgen.Ponomarenko, Эээ, построчная тарификация? :D
35. BabySG (BabySG) 22.09.14 10:11
(31) monsta, мешало то, что ООП нет в 1С. Тем не менее, отличия данного коа только в том, где описана выполняемая фукнция и не более того.
36. Яков Коган (Yashazz) 22.09.14 20:00
(19) Великий гуру нас так и не просветил. Увы.

Кстати, просьба к отписывающимся в теме: пожалуйста, выскажитесь о предложенном в публикации понимании модальности и асинхронности - оно-таки далеко от общепринятых по смыслу, или нэ?
37. Яков Коган (Yashazz) 22.09.14 20:29
(24)
Я за такие методы 1С. И кода в 3 раза больше писать не нужно. Нужно просто понять как работает новый функционал и попробовать реализовать его. Понимание придет.

Вот когда вам понадобится найти ветку в "ДанныеФормыДерево", например, пожалуйста, напишите мне в личку и расскажите а) реально ли НЕ нужно писать втрое больше, б) как же работает новый функционал, если метода поиска у объектов такого типа нет, в) какое понимание к вам пришло. Правда-правда, очень интересно.
38. Maxim Kolkin (the1) 23.09.14 08:50
Разработчики платформы вообще беспощадны к разработчикам конфигураций. Вспомните переход с 7-ки на 8-ку? Прешлось переписывать все с нуля. 8.2 ->8.3 - та же история. И это в то время, когда на виду совершенно безболезненные переходы с версии на версию у других производителей.
eeeio; AlexanderKai; dj_serega; Сисой; +4 Ответить 1
39. Осипов Сергей (fixin) 23.09.14 18:01
я всегда говорил, что УФ - зло.
1С рубит сук на котором сидит. Получается только всерьез, но уже не доступно.
40. Павел Алексеенко (qwinter) 23.09.14 21:56
(33) monsta,
Сейчас мы получили все то же самое, но без возможностей окружения - IIS и .NET
Прям великая потеря))) зато мы получили возможность развертывания на linux.
(37) Yashazz, можно прикладной пример такой "надобности"?
(38) the1, можно подробнее у каких производителей безболезненные переходы с версии на версию?
41. Яков Коган (Yashazz) 24.09.14 00:22
(39) Не согласен. УФ - нормальная идея, вкупе с разделением на клиент-сервер, только до ума доведено отнюдь не всё. Сыроват продуктец и кривоват местами.
(40) Найти нечто в дереве и спозиционироваться на эту строку. Кодом, естессно, а не интерфейсными усилиями в окошке поиска. Сделать строку текущей, или развернуть вложенные, или проставить там чего, не гоняя через само дерево значений на сервере. Вообще странный вопрос, это всё равно что спросить, зачем аналогичные методы у других таких.
42. Павел Алексеенко (qwinter) 24.09.14 09:10
(41) Yashazz, уважаемый, я и так понимаю "Найти нечто в дереве и спозиционироваться на эту строку". Я спросил зачем. Если Вы пишите, значить Вы уже сталкивались. Вот я прошу привести реальный пример когда это потребовалось.

И заодно напишите, у каких таких "других" есть подобные методы.
43. Sensey Master (MSensey) 24.09.14 09:34
Лично меня не устраивает
- невозможность быстро перейти к обработчику описания оповещения
- экспортные процедуры в модуле формы

А все остальное что написал автор ерунда.
Мне наоборот нравится - теперь блокируется не весь интерфейс, а только окно владельца.
44. Яков Коган (Yashazz) 24.09.14 09:38
(42) Оффтопим, однако. Ну как зачем - есть у меня дерево из N веток, надо мне нужную ветку раскрыть с подчинёнными и сделать текущей. Нужные данные юзверю показать, чтоб сам не искал и не щёлкал. А что до методов, так вот, например, ДанныеФормыКоллекция или ДанныеФормыСтруктураСКоллекцией, метод НайтиСтроки.

(43) Писать больше кода, затрачивать больше усилий на то, что могла бы делать платформа - ерунда? Вероятно, у вас почасовая оплата)))
Да, и ещё - что 1С слегка преувеличивает и никакой асинхронности не наблюдается - тоже ерунда?
45. Сисой Сисой (Сисой) 24.09.14 10:30
Поддерживаю автора.
Изначально переход к УФ был прогрессивным. Декларативные формы - это правильно. Как и СКД.
Но с самого начала 1С начала нагромождать архитектурно неверные решения. Например, определение нужности контекста (причем ВСЕГО СРАЗУ) по директиве препроцессора - это сильно. Welcome to 7.7.
И чем дальше в лес... Грустно. Красивая изначально идея "восьмерки" превращается в болото противоречащих друг другу концепций.
А реально необходимых разработчикам вещей (подписки на события формы, каскадный UPDATE, хотя бы частичная реализация наследования) - как не было, так и нет. И это не брюзжание старого автоматизатора - уже лет 10 назад существовали системы, где это было реализовано.
А уж троекратное переписывание Бухгалтерий (1.6->2.0->3.0) только ради архитектурных фенечек (и практически без наращивания функциональности, ну не считать же за таковую совмещение БУ и НУ на одном регистре) - да за это в приличном обществе в морду дают! Хотя в той же Консолидации совершенно замечательно уживались вместе управляемые и неуправляемые формы.
eeeio; Krio2; veretennikoff; logos; sevushka; ugroblin; AlexanderKai; monsta; Evgen.Ponomarenko; tormozit; wolfsoft; +11 Ответить
46. Антон Рощин (wolfsoft) 24.09.14 11:11
(25) Evgen.Ponomarenko,
Вот...вот... Разработчики браузеров перекладывают свои проблемы на разработчиков платформ, те в свою очередь перекладывают чужие проблемы дальше на разработчиков конфигураций, те в свою очередь на внедренцев, внедренцы на пользователей.
плюс ко всем вашим постам. И автору статьи плюс. "Не шмогла" - это похоже стало новым слоганом 1С.

Сколько ненужно кода можно было избежать, если бы разработчики реализовали элементарные вещи на уровне платформы. Выводя всё это на уровень разработки конфигурации, уменьшают преимущество самой платформы. Ведь суть 1С была в упрощении разработки учётных приложений. По большому счёту, никто же не мешает писать учётные программы на обычных языках программирования. Но на 1С это делается проще и быстрее. Пока проще и быстрее.
47. Евгений ' (WanGoff) 24.09.14 12:38
Полностью поддерживаю направление развития платформы, в том числе немодальности.
Одновременно с этим, данные статьи полезны как для общего развития, так и для критики положения дел. Как без критики-то.
48. BabySG (BabySG) 27.09.14 20:28
(20) Yashazz, посмотрите на партнерке - разработчики ответили раньше, чем я. В двух словах: без понимания, как работает платформа - да, будет "тупой 1С-ник".
Отсюда и идут подобные статьи, когда нет понимания всей картины в целом, а не только "смотрите, можно ведь было квадрат нарисовать мелком, зачем маслянные краски-то использовать?"
49. Яков Коган (Yashazz) 28.09.14 12:03
(48) BabySG, ссылку можно?
Вообще, к сожалению, два момента вынужден отметить.
Первое: далеко не всегда можно узнать, как именно работает платформа. Не спешат этим с нами делиться. В своё время даже материалы по "1С-Эксперт", где были интересные сведения о "неизведанных глубинах", спешно удалили с ИС.
Второе: далеко не всегда это интересно. Знаете, если вам, чтобы сделать шрифт жирным, придётся в новой версии Ворда проделывать на пять манипуляций больше, вам очень быстро станет наплевать, почему оно так устроено, как хитро и оптимально работает и что на шестом айфоне фурычит более круто. Если у вас не шестой айфон. Вы просто просидите над форматированием текста больше времени и начнёте задумываться об альтернативах.
eeeio; Brawler; +2 Ответить 1
50. BabySG (BabySG) 29.09.14 10:18
(49) https://partners.v8.1c.ru/forum/topic/1279918
Конечно, не всегда можно узнать. Но именно этот момент был известен по очень давним темам, а также рассказывали на семинарах.
Предугадывая вперед: да, нужно ездить на семинары, как бы это не было неудобно. Это единственный способ узнать, как/когда/почему работает. Просто нужно это принять, конференции инфорстарта эти семинары не заменят.

PS. В ворде всегда использовал стили, также CTRL+B (для "жирненького"), поэтому тут не вижу проблемы вообще очень давно, уже много-много лет :)
51. Яков Коган (Yashazz) 29.09.14 14:09
(50) Так вот, уважаемый гуру, спешу вас огорчить: у меня нет туда доступа, т.к.
"Доступ предоставляется руководителям и аттестованным специалистам фирм-франчайзи фирмы "1С". Также доступ предоставляется специалистам, приобретшим специальную поставку "1С:Предприятие 8. Комплект специалиста по разработке и внедрению" и не работающим в фирме-франчайзи. Решение о предоставлении доступа принимается руководителем ЦСО или фирмы-франчайзи, продавшей данный комплект."


Это, извиняйте, свинство в чистом виде. Это попытка выбить побольше бабла и ходить на поклон к франчам и ЦСО, и весьма некрасивый ход по увязыванию сюда сертификации специалистов. Что, если я не сертифицирован, мне не должно быть интересно, как работает штатная конфа на штатной платформе, честно проплаченная мной 1С БП 3.0? Что, 1С уже проприетарный софт, и менять/понимать код конфы не холопское дело?

И поэтому я с полным на то основанием, исходя из лично своего опыта, полученного методом тыка, позволю себе заявить - то, что налепила 1С по поводу модальных окон в последних релизах, это на 80% полный бред и ахинея, там ни отказа от модальности, ни асинхронности, а сплошь неудобства в работе.

P.S. Один спец, знающий AJAX в разы лучше меня, цитирую "именно после этого окончательно перестал жалеть, что соскочил с 1С".
52. BabySG (BabySG) 30.09.14 08:47
(51) Получилась классная отмазка, не так ли? :) "Я не хочу ничего делать, что бы узнать больше". А что, в SAP иной порядок? Или в MS? Чтобы узнать тонкости "из первых рук" - да, нужно вкладывать ресурсы. И это в любой сфере, иначе и будет "научный тык"
И поэтому я с полным на то основанием, исходя из лично своего опыта, полученного методом тыка
:)
53. Яков Коган (Yashazz) 30.09.14 11:53
(52) Отмазка - это у вас, что мол на семинарах рассказывали. Статью кто написал - вы или я? Я вам предлагал - напишите свою, просветите нас. Ан нет. Я, чтобы узнать больше, опыты ставлю и доступные материалы ищу, время трачу и силы. Подчёркиваю - доступные. Лишних денег на добывание недоступных материалов у меня нет. Так что фраза насчёт "не хочу ничего делать" - передёргивание, граничащее с клеветой.

Знаете, IBM когда-то завоевала рынок потому, что все материалы сделала доступными, и не вынуждала "вкладывать ресурсы, чтобы узнать тонкости из первых рук". И системы с открытым кодом тоже не просто так популярны. Производители, не понявшие это вовремя, проигрывают, если не имеют мохнатых лап и прочих способов поддержки. Хотелось бы, чтоб и 1С имела это в виду.
54. BabySG (BabySG) 30.09.14 12:14
(53) Все смешалось, люди... кони...
Еще раз: 1С рассказала об особенностях и почему нельзя было сделать по другому.

Есть "высшая профессональная" конференция, она платная. Вы же не удивляетесь, почему "профессональная" конференция инфорстарта платная? А ведь часть материалов доступно только там :)

Вот и появляются различные "догадки", "уверенности", хотя это не так. А рождается это из "лишних денег нет".

PS. Кстати, потратив "лишние" деньги, узнали бы, как решается вопрос
Логичной представляется также возможность динамического создания подписок на события любого характера (listeners), ну и наконец, господа из 1С, может быть, сделают перехват и обработку нажатия пользовательского прерывания, хотя бы исключительно на клиенте.

А раз "лишнего" нет - ждите доступности для всех. Только статей не стоит писать про этот момент до выхода в свет :)
Или писать, но в виде вопроса, а не обвинения (Д`артаньянов тут много)
55. Яков Коган (Yashazz) 30.09.14 12:51
(54) Ля-ля-ля того, кому 1С рассказала. Хватит понтоваться, что вы всё знаете, мы уже практически упали на колени и поклоняемся вашему всезнанию)))
Или расскажите всем хотя бы на ИС, или перестаньте спамить, если мы для вас недостаточно элитарный круг общения.

Да, и в очередной раз вы передёргиваете. Статьи ИС бесплатны и общедоступны всем пользователям, только что проверил. Или же вы говорите о какой-то совсем другой "профессиональной" конференции.
56. BabySG (BabySG) 30.09.14 13:41
(55) Yashazz,
Или расскажите всем хотя бы на ИС

Посетите семинар и узнаете, почему не публикуют сие.

Да, и в очередной раз вы передёргиваете. Статьи ИС бесплатны и общедоступны всем пользователям, только что проверил. Или же вы говорите о какой-то совсем другой "профессиональной" конференции.

Собственно, тут даже без комментариев... http://event.infostart.ru/2014/visitors/
Это стоит даже дороже, чем семинар 1С :)

Ля-ля-ля того, кому 1С рассказала. Хватит понтоваться, что вы всё знаете, мы уже практически упали на колени и поклоняемся вашему всезнанию)))

Если Вас интересует такой стиль общения, отвечу также: хватит понтоваться статьей, которая безграмотная и основа на незнании, т.к. есть желание экономить во всем.
57. Яков Коган (Yashazz) 30.09.14 14:08
(56) Я изложил свой опыт в статье. Вы этого не сделали. Я поделился некоторыми явно наблюдаемыми результатами. Вы привели ссылку на платный ресурс. У вас вообще нет публикаций на ИС. Вот сухой остаток.

Если вы давали подписку о неразглашении, то сочувствую. Потому как в среде профессиональных программистов считается хорошим тоном делиться сведениями с коллегами)).

Между разовым мероприятием, как конференция ИС-Event, где и сама 1С гость, и размещением материалов о собственном изделии на виртуальных ресурсах есть некоторая разница - хотя бы по затратам на оргвопросы, так что это некорректное сравнение. Разумеется, любое мероприятие стоит денег, хотя бы на аренду. А вот разместить сакральные сведения на своём сайте - это для 1С отнюдь не вопрос затрат, но вопрос деньговыжимания из нас, разработчиков.

p.s. не удастся вам в таком стиле, уж извините. Потому как счесть понтом статью, в начале которой ясно указан подход ("тупой одинэснег") и имеющую категорию Life, слишком большая натяжка даже для вашего стиля ведения дискуссии.
Засим прекращаю - у меня много дел, мало времени и совершенно нет желания добиваться сведений от не желающих/не могущих конструктивно общаться.
58. John Smith (PiccaHut001) 30.09.14 17:36
(50) BabySG, Есть ссылки, доказательства? Где же они? Предлагаете верить Вам на слово? Не врёте? Точно не врёте?
59. BabySG (BabySG) 01.10.14 13:54
(58) PiccaHut001, ссылки на что? Ссылка дана на ответ разработчиков. Кто хотел узнать больше - мог лично пообщаться на вернисаже в прошедший семинар.
60. John Smith (PiccaHut001) 01.10.14 14:33
(59) BabySG, Ваша ссылка тухлая, нужно быть франчём или партнёром 1С, чтобы узнать аргументацию овнокодеров разработчиков платформы. Не хочется делиться с народом тайным знанием? Нездоровая тяга к секретности началась с того, что чтобы увидеть список ошибок платформы, надо было купить ИТС. Глубокоуважаемый Борис, спасибо.
61. BabySG (BabySG) 01.10.14 16:28
(60) читайте (56)
Про текущий порядок распространения информации - не ко мне.
Общий смысл таков (если сократить): текущая статья не учитывает реализацию платформы, видит только то, показывается наружу. Поэтму возникает ложное впечатление, что можно сделать по иному.
62. John Smith (PiccaHut001) 02.10.14 15:16
(61) BabySG, опять "масло масляное". Вы аргументируете свои высказывания ссылкой, которую не смогут открыть большинство 1С-ников. Когда я обращаю ваше внимание на этот факт, начинаются отмазки о "порядке распространения информации", нелепые сказки о том, что по другому модальность сделать невозможно, потому-что так сказали разработчики и надо верить их вранью. Считаю, что с модальностью всё гораздо проще - тупо не хватило времени. Славные менеджерочки 1С ставят высшим приоритетом разработку клиента под макос, а проблему "с модальностью" решили с помощью костылей и залипух. Как всегда в 1С, "доступно и всерьёз".
63. Яков Коган (Yashazz) 02.10.14 15:21
Есть давно известная закономерность: в отсутствие достоверных своевременных сведений массово плодятся домыслы. И хорошо, если хотя бы под частью таких домыслов будет эмпирическое обоснование.
64. kiruha Дронов (kiruha) 02.10.14 16:22
Никто не знает как в такси 2 формы открыть рядом ?
Например чтобы визуально сверку провести
Пользователям совсем не нравится текущая реализация
65. Сергей Галюк (dj_serega) 02.10.14 16:33
(30) Yashazz, Та они видимо не додумали как сделать &НаСервереЧастьСКонтекстомЧастьБез. А должны были бы.
(37) Yashazz, А как же идентификатор строки?
66. Яков Коган (Yashazz) 02.10.14 16:52
(64) Никак. Или рисовать свою спецформу, совмещающую эти две как контейнер (кстати, красивая мысль для любителей парсить УФ), или запускать рядом 2 приложения и тратить на это лицензии. Ну или рабочий стол пополам поделить и туда засунуть.
(65) 1. Ага, об том уже не первый раз говорено. 2. Поиск мне нужен, а не идентификация. Поиск по значению в колонке.
67. kiruha Дронов (kiruha) 03.10.14 10:40
(66) Yashazz,
рисовать свою спецформу
мысль интересная - еще никто не делал универсальной такой ?
68. Яков Коган (Yashazz) 03.10.14 11:32
(67) kiruha, вроде нет. Кстати, может, я озабочусь после выходных... Интересная мысль, но не будем тут оффтопить.
69. Роман Ложкин (webester) 05.10.14 14:27
В корне не согласен, со многим.
И браузеры не исключение – диалог загрузки файла, или запрос на разрешение cookies, или вопрос насчёт сертификата – были и остаются модальными окнами. Настроечные аспекты, вопросы всяких FlashPlayer, антиспамы, антивирусные диалоги, принтеры и работа с печатью – модальны. И замечательно себя чувствуют в интернетах. Значит, не собирается мир пока уходить от модальности.

Вы немного путаете (и такое впечатление что делаете это осознанно) системные диалоги браузера (к которым у html кода доступа нет) и контент который пользователь видит на экране. Хром у меня по умолчанию блокирует всплывающие окна и причем я даже не всегда это замечаю. То есть выполняемый код у пользователя будет зависать по умолчанию и он в большинстве случаев не сможет понять почему. Про то что на телефонах это не работает вообще я так понял вы предлагаете оставить как есть.

Внимание, вопрос – где же пресловутый отказ от модальности?

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

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

У меня есть на этот счет соображения, но это только мои догадки, я не сотрудник фирмы 1С. Мне кажутся для этого есть несколько причин
Для начала - обратная совместимость. В данном случае сделали два варианта, и первый позволит решениям работающим "по старому" продолжить работать на новой платформе с минимальными доработками или совсем без них.
Еще одна асинхронность: разговоры о том, что ну можно было бы поставить флажочек в параметре, что бы все работало по новому, но код не надо было бы переписывать. Новый подход подразумевает асинхронность, когда код отработал при необходимости показал вопрос и не тормозит процесс пока пользователь что то ответит. А срабатывает событие по нажатию пользователя. Вроде одно и то же а разница огромная. С моей точки зрения это как раз правильный подход а остальные должны умереть, кто то в комментах упоминал асинхронность node.js таv как раз вся фишка в событиях(если я правильно понял когда читал про него).

Почему никто не посягнул на «ДиалогВыбораФайла.Выбрать»? Модальность же неимоверная!

Потому что системный диалог, системные диалоги смысла трогать не имеет в принципе.По моему это очевидно.

Почему не отказались от мини-диалогов, возникающих при нажатии на «педальку» поля ввода - например, от календаря или калькулятора, от выбора типа значения? Они ведь интерфейсно ровно то же, что выбор из списка или меню. Загадка!

Не вижу связи. Если вы отказались от водки, почему же вы не откажетесь и от чая? И там и там есть вода!

Не тут-то было. Простейшая проверка показывает, что асинхронность, заявленная идеологически, на практике отсутствует. Достаточно поставить бесконечный цикл после вызова «Показать…» и – здравствуй, перезапуск приложения. Асинхронностью я бы это не назвал ни в коем случае.

Опять не понимаю, как вы связали падение платформы в результате бесконечного цикла и асинхронность? Где то уже писали об этом, что 1С диагностирует бесконечный цикл и "в целях чего то там... бла бла" не помню честно, но там были разные варианты развития событий причем имеет значение релиз платформы, в любом случае написанный криво код приводящий к огромному количеству выполнений одного и того же бесконечного цикла с асинхронностью никак не связан. Такого поведения просто не должно быть.

Но вдумайтесь – где здесь асинхрон? Перед нами просто более запутанное, но всё такое же последовательное, плоское и однопоточное выполнение кода! Пресловутая «асинхронность» не чисто программная, а программно-интерфейсная силами платформы. Здесь нет ожидания успешности или неуспешности, нет их перехвата. Есть приостановка выполнения нашего кода на период «висения» некоего окна. И где разница с тем, что было до сих пор? Почему мы лишены возможности продолжить там же, в той же процедуре? Почему нам, на худой конец, не дали меток наподобие Goto, и обязательно теперь прыгать в другую процедуру? Напомню, второго потока по сути нет и не подразумевается!

По моему вы путаете асинхронность и многопоточность в веб разработке это связанные понятия, но это не одно и то же. Отсюда все непонимание, что происходит и ляп про плоскость и однопоточность. По поводу перехвата, ожидания успешности\не успешности я не особо понимаю, что вы хотите перехватить. Goto вроде как назвали "плохим" кодом где то в годах 90х и вроде как ничего не менялось с тех пор.

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

Че эта?© С чего вдруг втрое? Просто по другому.

А главное, что нет настоящих Promise, хорошо известных в JS. Следующим логичным шагом было бы сделать нечто вроде:

100раз извините за невежество, что не так с этим кодом:
&НаКлиенте
Процедура ЗавершениеВводаКоличества(Результат, ДополнительныеПараметры) Экспорт
	Если Результат <> Неопределено Тогда
		ДополнительныеПараметры.Количество = Результат;
		ОбработатьПодборНаСервере(ДополнительныеПараметры);
	КонецЕсли;
КонецПроцедуры // ЗавершениеВводаКоличества()
...Показать Скрыть

Результат то точно такой же, или нет?
70. Яков Коган (Yashazz) 05.10.14 19:14
(69) webester, по пунктам.

Вы немного путаете (и такое впечатление что делаете это осознанно) системные диалоги браузера (к которым у html кода доступа нет) и контент который пользователь видит на экране. Хром у меня по умолчанию блокирует всплывающие окна и причем я даже не всегда это замечаю. То есть выполняемый код у пользователя будет зависать по умолчанию и он в большинстве случаев не сможет понять почему. Про то что на телефонах это не работает вообще я так понял вы предлагаете оставить как есть.
Я не путаю. Я сужу с позиции юзверя, для которого разницы нет, системный диалог или ещё какой. Я не могу переключиться в другую часть этого окна/страницы, пока висит диалог - значит, модальное. Поймите, именно конечный эффект важен, а разница в реализации должна быть головной болью 1С, а не только/не столько моей. Отказа от модальности не-ту-ти. И что там будет зависать у пользователя - опять-таки проблемы платформы, а не мои, если я не написал явных глупостей в коде; но степень "служебности" точно не моя проблема. Аналогично на телефонах. И вы неправильно поняли - я отнюдь не призываю "оставить как есть", т.к. проблема действительно имеет место и направление способа её решения в целом верное, но сэкономить ручной труд 1С могли бы.

Опять подмена понятий. Предлагают не отказываться от модальных окон, от модели реализации как это сделано сейчас.
Новая модель реализации гораздо более трудоёмкая и менее прозрачная, хотя могла бы (при сохранении новой концепции) такой не быть. В преобладающем большинстве публикаций трубят именно об "отказе от модальности", так что насчёт подмены понятий скорее вопрос к авторам, пишущим от имени 1С.

Для начала - обратная совместимость. В данном случае сделали два варианта, и первый позволит решениям работающим "по старому" продолжить работать на новой платформе с минимальными доработками или совсем без них.
Это где совместимость? Где, пока не переделаешь иной раз половину кода, постоянно лезет сообщение о недопустимости модальных и мешает юзверю, или где оно вообще запрещено? Расскажите про совместимость и "совсем без доработок" в части модальности авторам типовой БП 3.0)))

Еще одна асинхронность: разговоры о том, что ну можно было бы поставить флажочек в параметре, что бы все работало по новому, но код не надо было бы переписывать.
Код очень даже будет нужно переписать, но не в стольких случаях (в ВыбратьИзМеню точно считаю лишним) и не столь неудобно.

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

Потому что системный диалог, системные диалоги смысла трогать не имеет в принципе.По моему это очевидно.
Мне не очевидно. Почему? Я вот сейчас начну страшно кричать, что они будут мешать работе во всяких хромах, на телефоне вообще не пойдут итд, где разница между системным выбором цвета и системным же выбором из списка значений? Ну, принципиально, где, а?
И кстати, диалог "все функции" ведь превосходно себя чувствует, а надо бы его запретить за лютую модальность)))

Не вижу связи. Если вы отказались от водки, почему же вы не откажетесь и от чая? И там и там есть вода!
Попытка софистики и ничего по делу. Значит, у вас нет ответа))

Опять не понимаю, как вы связали падение платформы в результате бесконечного цикла и асинхронность? Где то уже писали об этом, что 1С диагностирует бесконечный цикл и "в целях чего то там... бла бла" не помню честно, но там были разные варианты развития событий причем имеет значение релиз платформы, в любом случае написанный криво код приводящий к огромному количеству выполнений одного и того же бесконечного цикла с асинхронностью никак не связан. Такого поведения просто не должно быть.
Бесконечный цикл без засирания кэша - просто проверка поведения системы, служащая наглядным подтверждением, что действия синхронизированы, иначе б модальное окно спокойно отработало. Нету асинхронности.

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

По поводу перехвата, ожидания успешности\не успешности я не особо понимаю, что вы хотите перехватить. Goto вроде как назвали "плохим" кодом где то в годах 90х и вроде как ничего не менялось с тех пор.
Ладно, в личке попробую объяснить.

Приведите мне пример, позволяющий убедить главбуха, отчего теперь код пишется втрое дольше!
Че эта?© С чего вдруг втрое? Просто по другому.
Объём кода сравните, и всё станет пронзительно ясно)))

100раз извините за невежество, что не так с этим кодом:.. Результат то точно такой же, или нет?
Можно, можно так. Только, см.выше, однопоточно это всё работает.

p.s. вложенные цитаты не удались, прошу извинить за такой формат ответа)
71. ффф ыыы (zqzq) 06.10.14 08:40
Вообще казалось бы чего проще: 1 процедуру 1С с 1 "старым" модальным вопросом транслировать на уровне платформы в 2 "правильные" немодальные но блокирующие закладку браузера функции JavaScript до вопроса и после вопроса. Как запросы 1С с разыменовыванием через точку транслируются в правильные запросы SQL с левым соединением. Но что-то пошло не так... Абстракция протекла...

P.S. Вот тут можно найти примеры труднопреобразуемыой автоматически модальности http://v8.1c.ru/o7/201312ref/index.htm Но это ничтожный процент из встречающегося на практике..
72. Роман Ложкин (webester) 06.10.14 12:38
(70)
Я не путаю. Я сужу с позиции юзверя, для которого разницы нет, системный диалог или ещё какой. Я не могу переключиться в другую часть этого окна/страницы, пока висит диалог - значит, модальное. Поймите, именно конечный эффект важен, а разница в реализации должна быть головной болью 1С, а не только/не столько моей. Отказа от модальности не-ту-ти. И что там будет зависать у пользователя - опять-таки проблемы платформы, а не мои, если я не написал явных глупостей в коде; но степень "служебности" точно не моя проблема. Аналогично на телефонах. И вы неправильно поняли - я отнюдь не призываю "оставить как есть", т.к. проблема действительно имеет место и направление способа её решения в целом верное, но сэкономить ручной труд 1С могли бы.

Давайте для начала определимся с чьей стороны вы пишете. Со стороны пользователя которые не отличает диалог выбора файла от диалога вызываемого методом "Вопрос" или как разработчик которому не нравится текущая реализация некоторых приемов? Потому что ответы вам в этом случае будут разными. Конкретно про
Отказа от модальности не-ту-ти
Окно выбора принтера к логике работы приложения отношения не имеет, как и работа платформописателей. С окном выбора принтера все хорошо как минимум по той причине, что это системное апи и оно не будет блокироваться хромом и скорее всего будет корректно работать на любой платформе начиная от тонкого клиента заканчивая всем где есть принтер и его можно выбрать. Это я вам как разработчику говорю.
Как пользователю которому по барабану: В окне печати следует выбрать страницы, принтер, количество копий и нажать кнопку ОК. Модальность? Какая модальность? Вы о чем?
Или вот про это
Поймите, именно конечный эффект важен, а разница в реализации должна быть головной болью 1С, а не только/не столько моей

Где головная боль? Если для вас критичен код оставьте все как есть, если есть возможность перепишите так как оно должно быть инструменты есть. Да новый подход подразумевает другую логику, но для этого есть причины и про это я уже писал.

Новая модель реализации гораздо более трудоёмкая и менее прозрачная, хотя могла бы (при сохранении новой концепции) такой не быть.

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

Мне не очевидно. Почему? Я вот сейчас начну страшно кричать, что они будут мешать работе во всяких хромах, на телефоне вообще не пойдут итд, где разница между системным выбором цвета и системным же выбором из списка значений? Ну, принципиально, где, а?

Ответил выше. Для меня странно, что для вас это не очевидно. Я не могу доказывать что белый это белый, прошу прощения.

И кстати, диалог "все функции" ведь превосходно себя чувствует, а надо бы его запретить за лютую модальность)))

Там вроде как нет модальности а именно блокирование интерфейса, или я ошибаюсь?

Это где совместимость? Где, пока не переделаешь иной раз половину кода, постоянно лезет сообщение о недопустимости модальных и мешает юзверю, или где оно вообще запрещено? Расскажите про совместимость и "совсем без доработок" в части модальности авторам типовой БП 3.0)))

Под обратной совместимостью я имел ввиду, что ваш старый код будет работать на новой платформе именно так как вы предполагаете. Пока вы сами (я имею в виду автора конфигурации) не запретите использование модальных окон. То что разработчики типовой конфигурации БП3 решили делать сразу правильно это их путь. Вы можете так не поступать.

Попытка софистики и ничего по делу. Значит, у вас нет ответа))

Я так же не вижу связи между диалогом выбора принтера, и диалогом который разработчик инициирует методами встроенного языка, может это софистика, а может связи там нет (как нет связи между чаем и водкой) и вы путаете теплое с мягким(или намеренно делаете вид, что путаете) в обоих случаях.

Вот только по факту реализовано это не совсем так.

Что именно реализовано не так?

Бесконечный цикл без засирания кэша - просто проверка поведения системы, служащая наглядным подтверждением, что действия синхронизированы, иначе б модальное окно спокойно отработало. Нету асинхронности.

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

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

Асинхронность это клиент, многопоточность это сервер.За подробностями в гугл, тут я не эксперт извините.

Объём кода сравните, и всё станет пронзительно ясно)))

Вы там для главбуха игру "Кто хочет стать миллионером?" пишите? Или для чего вам такое количество диалогов? У меня в среднем на 800 строк не больше трех.

p.s. вложенные цитаты не удались, прошу извинить за такой формат ответа)

Никогда не парился такими мелочами.
73. Яков Коган (Yashazz) 06.10.14 14:44
(72) webester,

Окно выбора принтера к логике работы приложения отношения не имеет, как и работа платформописателей. С окном выбора принтера все хорошо как минимум по той причине, что это системное апи и оно не будет блокироваться хромом и скорее всего будет корректно работать на любой платформе начиная от тонкого клиента заканчивая всем где есть принтер и его можно выбрать.
ОК, убедили. Посмотрим, останутся ли таковыми только окна системных API.

Где головная боль? Если для вас критичен код оставьте все как есть, если есть возможность перепишите так как оно должно быть инструменты есть. Да новый подход подразумевает другую логику, но для этого есть причины и про это я уже писал.
Код критичен не для меня, а для пользователя, т.к. он либо работает, либо нет. При запрете модальных он естественно работать не будет, и моё мнение авторов типовых конфигураций не колышет. Новый подход не тождествен новой реализации - а мне не нравится именно реализация, но отнюдь не подход. Это я на всякий случай, если кто меня тут считает замшелым ретроградом)))

У меня иное мнение, а именно: С моей точки зрения это как раз правильный подход а остальные должны умереть
См.выше. Кстати, насчёт умереть - вспоминайте иногда, что такое есть "новое", и не будьте столь категоричны.

То есть реализация именно такая в силу своей идеологии. И для вас просто непривычна и не более.
Реализация откровенно неудобна, и не надо смешивать идеологию и реализацию. Повторюсь - я могу сымитировать модальное окно так, что всё будет фурычить. Почему этого не может сама платформа?

Мне не очевидно. Почему? Я вот сейчас начну страшно кричать, что они будут мешать работе во всяких хромах, на телефоне вообще не пойдут итд, где разница между системным выбором цвета и системным же выбором из списка значений? Ну, принципиально, где, а?
Ответил выше. Для меня странно, что для вас это не очевидно. Я не могу доказывать что белый это белый, прошу прощения.
Ну, если говорить, что уцелеют только глобально-всеобъемлюще поддерживаемые системные диалоги, к которым 1С не имеет отношения, тогда ладно. Но если будет явно 1С-ный диалог, живущий как модальное окно, мой вопрос останется актуальным.

И кстати, диалог "все функции" ведь превосходно себя чувствует, а надо бы его запретить за лютую модальность)))
Там вроде как нет модальности а именно блокирование интерфейса, или я ошибаюсь?
Есть-есть, ещё как.

Под обратной совместимостью я имел ввиду, что ваш старый код будет работать на новой платформе именно так как вы предполагаете. Пока вы сами (я имею в виду автора конфигурации) не запретите использование модальных окон. То что разработчики типовой конфигурации БП3 решили делать сразу правильно это их путь. Вы можете так не поступать.
Это наш общий путь, т.к. нас поставили перед фактом. Большинство обработок и дополнений пишется к типовым, в т.ч. без возможности внесения изменений, так что "могу так не поступать" - увы, сказка. Я вынужден следовать за типовыми.

Я так же не вижу связи между диалогом выбора принтера, и диалогом который разработчик инициирует методами встроенного языка, может это софистика, а может связи там нет (как нет связи между чаем и водкой) и вы путаете теплое с мягким(или намеренно делаете вид, что путаете) в обоих случаях.
Скажем так: я не вижу разницы между модальными диалогами, инициируемыми и выводимыми явно средствами платформы, и попавшими под запрет нашими модальными наработками. Насчёт чисто системных разобрались.

Вы видимо не до конца прочитали мое сообщение или я не могу понять о чем речь. Платформа или именно сам код который выполняет ваш цикл, написаны так, что есть видит однозначное зацикливание, останавливает работу платформы. Как это связано с асинхронностью? Код написан так, что платформа падает запуская такой цикл, в любом месте(может теперь только на клиенте, но раньше это было везде).
Да ну? Платформа что-то видит и останавливает? Первый раз слышу. Сколько раз видел повисание и снятие тремя кнопками либо обрывом соединения, а вот такого не встречал. Падает платформа, если у неё кэш переполнился, обычно. И - критерии "однозначного зацикливания" в студию. А то завтра, глядишь, ещё и бесконечные циклы с условием выхода писать запретят)))

Возможно. Расскажите разницу, попробуем разобраться, чего не хватает и где, возможно, мы не понимаем идею платформописателей. За подробностями в гугл
Жаль. Тогда мы оба только строим домыслы, каждый в меру известно чего.

Асинхронность это клиент
Фоновые асинхронные задания, любимое детище 1С, на клиенте? Или вы скажете, что это многопоточность без асинхрона?

Объём кода сравните, и всё станет пронзительно ясно)))
Вы там для главбуха игру "Кто хочет стать миллионером?" пишите? Или для чего вам такое количество диалогов? У меня в среднем на 800 строк не больше трех.
Да, у меня балованные юзвери, им нравится удобный интерфейс, сделанный под их пожелания. Менюшки выпадающие, знаете ли, или там отметки в списках, да мало ли... Трудно будет им сказать, что 1С ради мобильных приложений, на которых бухгалтеру работать никуда не впилось, лишает их комфортной работы, а меня вынуждает потратить время на тупой рефакторинг.
74. Роман Ложкин (webester) 06.10.14 16:47
(73)
Код критичен не для меня, а для пользователя, т.к. он либо работает, либо нет. При запрете модальных он естественно работать не будет, и моё мнение авторов типовых конфигураций не колышет. Новый подход не тождествен новой реализации - а мне не нравится именно реализация, но отнюдь не подход. Это я на всякий случай, если кто меня тут считает замшелым ретроградом)))

Код либо работает, либо нет, действительно. Методы которые использовались вами остались в платформе и вы можете ими пользоваться. Будет работать старый код или нет, зависит лично от вас.
Подход:
При текущей реализации, при вызове модального окна, останавливается код программы, а так же в случае веб клиента, происходит вызов... ситуация осложняется... ну и дальнейшее бла бла бла. Не буду пересказывать.
Решение: Реализовать метод который не подразумевает остановку программного кода и всплывающих окон в вебклиенте. Использовать по умолчанию в типовых конфигурациях.
Решение разумное, а использование по умолчанию в типовых... ну они авторы этих конфигураций :) это их право.

Кстати, насчёт умереть - вспоминайте иногда, что такое есть "новое", и не будьте столь категоричны.

Давайте будем использовать более мягкую формулировку: "Не должны более рассматриваться при проектировании интерфейсов".

Реализация откровенно неудобна, и не надо смешивать идеологию и реализацию. Повторюсь - я могу сымитировать модальное окно так, что всё будет фурычить. Почему этого не может сама платформа?

Реализация следствие следования идеологии. Никто ничего не смешивает. Программа как раз имитирует модальные окна и так, что все фурычит. Другой вопрос, что вам не нравится как она это делает. Повторюсь на это есть свои причины, мне кажется я знаю какие и я их озвучил. Но они вполне могут быть совсем другими. Если вы не видите причин для тех или иных действий это не значит что их нет.

Это наш общий путь, т.к. нас поставили перед фактом. Большинство обработок и дополнений пишется к типовым, в т.ч. без возможности внесения изменений, так что "могу так не поступать" - увы, сказка. Я вынужден следовать за типовыми.

Ваши отношения с типовыми конфигурациями, с новыми методам и способам их реализации в платформе никак не связаны. Мы обсуждаем БП3 или свойство конфигурации "Запрещено использовать модальные окна"? Я так понял речь идет о внешних обработках а не о том, что решение которое продается за 10 000р. И включающее в себя несколько тысяч строк кода перестанет работать, если следовать рекомендациям фирмы 1С? Если до текущего момента я понимал суть ваших претензий, то на данный момент, они мне кажутся абсурдными, простите пожалуйста, не хочу вас задеть, но если речь идет о том, что у клиента при переходе на новый интерфейс перестанет работать пара обработок, это даже как то странно. Просто молча переписали и продолжили.

Скажем так: я не вижу разницы между модальными диалогами, инициируемыми и выводимыми явно средствами платформы, и попавшими под запрет нашими модальными наработками.

Мне кажется причина во внешнем виде и их поведении. Если диалог можно зашить в платформу, то собственно можно предусмотреть его реализацию под любую платформу. Если содержимое диалога формируется разработчиком, тут все гораздо сложнее. Это так мои фантазии, разработчики со мной не советовались к сожалению.

Да ну? Платформа что-то видит и останавливает? Первый раз слышу. Сколько раз видел повисание и снятие тремя кнопками либо обрывом соединения, а вот такого не встречал. Падает платформа, если у неё кэш переполнился, обычно. И - критерии "однозначного зацикливания" в студию. А то завтра, глядишь, ещё и бесконечные циклы с условием выхода писать запретят)))

Гилев про это рассказывал, демонстрируя элемент справочника, который сам у себя был в родителях. Никаких критериев нет. Есть поведение системы которое никак с асинхронностью не связано.

Фоновые асинхронные задания, любимое детище 1С, на клиенте? Или вы скажете, что это многопоточность без асинхрона?

Никогда не пробовал запускать фоновые задания на клиенте и думал, что это не возможно. Так и что с ними с этими заданиями на клиенте? Как вы связываете это с асинхронными вызовами?

Да, у меня балованные юзвери, им нравится удобный интерфейс, сделанный под их пожелания. Менюшки выпадающие, знаете ли, или там отметки в списках, да мало ли..

Обилие выпадающих менющек, постоянно выскакивающие диалоговые окна и удобный интерфейс для меня взаимоисключающие параграфы. Для вас нет?
75. Яков Коган (Yashazz) 06.10.14 19:16
Писал-писал длинный ответ, а он съелся. В общем, мы расходимся в представлении о допустимых уровнях абстракции. Извечный спор, "свобода манёвра vs сложность кода". Мне бы ещё на 1 уровень "утопить" всю эту механику показалось разумным, сделать эдакий автомастер интерпретации простых модальных случаев.

Гилев про это рассказывал, демонстрируя элемент справочника, который сам у себя был в родителях. Никаких критериев нет. Есть поведение системы которое никак с асинхронностью не связано.
Дык, классика рекурсии, вылетающей за предел кэша, но к общему случаю бесконечных циклов отношения не имеет. К асинхрону, естессно, тоже.

Никогда не пробовал запускать фоновые задания на клиенте и думал, что это не возможно. Так и что с ними с этими заданиями на клиенте? Как вы связываете это с асинхронными вызовами?
О том и говорю. Утверждать, что "асинхронность - на клиенте", можно лишь тогда, когда согласуем понятия "асинхронность" и "многопоточность". Но, поскольку "с этим в гугл", то засим прекращаю.

Обилие выпадающих менющек, постоянно выскакивающие диалоговые окна и удобный интерфейс для меня взаимоисключающие параграфы. Для вас нет?
Для меня - возможно. Для наших пользователей - синонимы. Потому как разместить всё, чтоб помещалось на маленьком старом мониторе, и при этом инициирующие элементы были бы видны "все сразу", можно лишь так. Дополнения, уточнения, действия - по менюшкам и диалогам. Закладками им неудобно, т.к. одним единовременно взглядом не окинуть. Ну не у всех такие мониторы, как у разработчиков типовых конфигураций 1С...
76. Яков Коган (Yashazz) 06.10.14 19:21
А, вспомнил съеденное.
Диалог выбора периода, диалог отбора в формах списков - они модальные? Они блокируют исполнение кода?
77. Роман Ложкин (webester) 06.10.14 21:21
О том и говорю. Утверждать, что "асинхронность - на клиенте", можно лишь тогда, когда согласуем понятия "асинхронность" и "многопоточность". Но, поскольку "с этим в гугл", то засим прекращаю.

В моем понимании (в том смысле который я вкладываю в это значение) асинхронность означает отсутствие необходимости клиента ждать, результат запроса.
1. Мы вызвали вопрос, клиент вынужден ждать, пока пользователь сделает выбор.
2. Мы вызвали блокирующее окно, клиент выполнил код и занимается своими делами, когда пользователь сделает выбор, произойдет событие.
Это в моем понимании асинхронные запросы и про это рассказывают когда рассказывают про аякс, но таки за подробностями лучше в гугл.

Диалог выбора периода, диалог отбора в формах списков - они модальные? Они блокируют исполнение кода?

Они не подразумевают какого либо кода, кроме того который определен платформой. Или я не понимаю о чем вы спрашиваете.

В общем, мы расходимся в представлении о допустимых уровнях абстракции

Мне кажется истина где то посередине.
78. BabySG (BabySG) 12.10.14 14:34
(76) Yashazz,
Диалог выбора периода, диалог отбора в формах списков

А чем они принципиально отличаются от ПоказатьВводДаты, кроме того, что сделаны на уровне платформы и мы этим не управляем?
79. Павел Алексеенко (qwinter) 13.10.14 13:01
(78) BabySG,
А чем они принципиально отличаются от ПоказатьВводДаты, кроме того, что сделаны на уровне платформы и мы этим не управляем?
они не отличаются, они не блокируют исполнения кода.
80. Anton Loginchev (logos) 11.12.14 10:35
(77) Обычная неграмотность "одноэсника". Для того, чтобы можно было вести результативный диалог, а не базарный спор, нужно сначала договориться о значении терминов. Именно для этого используются общепринятые значения, хотя есть и вариант значения терминов 1С (как например Native API, который всегда был экспортируемым в ring 3 API ядра, пока разработчики 1С не придумали соглашение о написании платформонезависимых разделяемых библиотек). Вернемся к синхронному/асинхронному выполнению кода. В случае синхронного выполнения транслятор кода работает синхронно: запрос - ответ. Каждый следующий оператор выполняется после предыдущего. В случае асинхронного выполнения вызов и ответ о его обработки происходят независимо. Т.е. в коде пишется запрос, в каком то другом месте ожидается ответ. В рамках программирования, асинхронность реализуется многопоточностью. Для асинхронного вызова создается отдельный поток. Когда он завершается, вызывается событие обработчика завершения. Асинхронно может вызываться не только интерфейс пользователя, но и, например, интерфейс взаимодействия с БД. Поэтому говорить, о том, что она нужна только для клиента - неграмотно. Выражаясь проще, можно говорить о многопоточности без асинхронности (с большой натяжкой, потому что порождение любого потока можно рассматривать как асинхронное исполнение кода), но нельзя говорить об асинхронности без многопоточности.
81. Яков Коган (Yashazz) 11.12.14 14:57
(80) Обработка действий после обычного ПоказатьПредупреждение - это, на ваш взгляд, многопоточность или асинхронность?
82. Павел Алексеенко (qwinter) 11.12.14 16:02
(80) logos, подытоживая ваш пост получается, что взаимодействие клиент-сервер это многопоточность.....
83. John Smith (PiccaHut001) 16.12.14 18:33
(82) qwinter, клиент ждёт возврата с сервера. Это синхронное выполнение, или однопоточность. Клиент запускает фоновое задание на сервере и занимается чем-то своим - это асинхронное выполнение и многопоточность.
84. Юрий Водич (YuriFm) 10.01.15 10:33
1С для ухода от модальности разработали новые методы (Вопрос - ПоказатьВопрос, Предупреждение - ПоказатьПредупреждение, Выбрать - Показать и т.д.) соответственно. Не ясен смысл разработки для методов КаталогВременныхФайлов() , ПодключитьВнешнююКомпоненту, сделали новые методы на замену( НачатьПодключениеВнешнейКомпоненты, НачатьПолучениеКаталогаВременныхФайлов). Методы окон не вызывают, ничего не блокируется, хоть и работает синхронно (но выполнение занимает доли секунды, пользователь этого не замечает). У кого, какие соображения есть?
85. Виктор Назаров (androgin) 12.02.15 20:11
статью писал явно неграмотный человек, ну или невнимательный, ну или даже не 1С-ник.
как можно асинхронный код с продолжением процедуры без Возврат; и при этом орать, что асинхронность отсутствует. Ну явно же не читал методичку, которой явно описано как это реализовывается!
86. Виктор Назаров (androgin) 12.02.15 20:15
(3) vano-ekt, у диалога есть метод Показать() - он прекрасно отрабатывает
87. Виктор Назаров (androgin) 12.02.15 20:18
и уж если так нужна многопоточность - её можно реализовать фоновыми заданиями
примером может служить загрузка валят/проверка контрагента..
88. Яков Коган (Yashazz) 21.04.15 15:57
(85) androgin, чувак, расскажи в двух словах, что есть асинхронность (сверх того, что сказал logos), просвети неграмотного) И объясни, какую же методичку я не читал? И где асинхронность в том, что поток выполнения линейно идёт и не может ветвиться?

(87) а сам-то внимательно читал статью? Не похоже, т.к. я и говорил, нафиг нам многопоточность не нужна в работе с формами на клиенте. А с умным видом ляпнуть абсолютно не в тему - это мы все умеем.
89. Осипов Сергей (fixin) 28.07.15 08:05
Основная цель не отказ от модальности и не прогиб под браузера, а полный переход на событийность, чтобы не замораживать обработчики событий
90. Осипов Сергей (fixin) 24.11.15 11:57
перечитал эту статью уже теперь, когда пользуюсь УФ на всю катушку. Автор прав, но мы будем продолжать колоться, плакать и жрать кактус от 1С. Увы. Маркетинг победил программистов на Селезнёвской. Вместо красоты кода получаем ужас-ужас-ужас. .....