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

17.09.14

Разработка - Механизмы платформы 1С

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

 

 

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

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    3562    dsdred    48    

66

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

24.01.2024    5032    YA_418728146    25    

62

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6160    dsdred    36    

110

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

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

06.10.2023    18196    SeiOkami    46    

116

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    11766    human_new    27    

72

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8555    YA_418728146    6    

139

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

20.08.2023    6195    sebekerga    54    

93

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15525    SeiOkami    31    

103
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 4706 18.09.14 13:08 Сейчас в теме
Да, забыл ещё одну тонкость упомянуть: даже если вы работаете сугубо на клиенте, данные 1С всё равно может погнать через сервер, поэтому будьте внимательны, пытаясь в параметрах описания оповещения что-нибудь не подходящее для такой сериализации, оно может сказать про ошибку передачи данных между клиентом и сервером. Следите, как у вас объявлено завершение, т.к. оно может быть и на сервере, и на клиенте.
2. caponid 18.09.14 15:31 Сейчас в теме
Столкнулся с этим непосредственно.
Хорошо что я в самом начале разработки конфы - пришлось переписать совсем немного... а вот для старой, да еще и с вэб интерфейсом - страшно даже браться.. хоть и на хроме она местами перестала работать.
3. vano-ekt 123 18.09.14 16:24 Сейчас в теме
диалог выбора файла кто чем заменяет сейчас? или самому предполагается написать?
9. slazzy 42 18.09.14 22:08 Сейчас в теме
(3) vano-ekt, НачатьПомещениеФайла вам не нравится?
86. androgin 12.02.15 20:15 Сейчас в теме
(3) vano-ekt, у диалога есть метод Показать() - он прекрасно отрабатывает
6. Yashazz 4706 18.09.14 19:25 Сейчас в теме
(4) Согласись, платформописатели могли бы озаботиться, чтобы модальное твоё окно отрабатывалось по той же технологии, что и не-модальное-но-блокирующее-всё-кругом. Хоть подменой на ими сгенерённое. Но, видимо, "не шмагла".
7OH; A.Sytchev; kostas; bulpi; +4 Ответить
8. AlX0id 18.09.14 21:27 Сейчас в теме
(6)
Спору нет - можно сделать одно и то же хорошо и плохо )
Просто я к тому, что, казалось бы, в модальности ничего страшного нет, а вон какие бяки случаются. И уход от модальности обоснован полностью в связи с тем, что от нее отказываются все популярные браузеры.
92. Patriot1S 99 30.10.20 14:13 Сейчас в теме
(6) Пришел к тем-же неутешительным выводам - https://infostart.ru/public/1295065/
Но кажется Вы еще не подняли тему безопасности и всовывания везде расширения 1С.
5. AllexSoft 18.09.14 17:51 Сейчас в теме
Если честно пока тоже не осознал а зачем это все вообще нужно, этот отказ от модальности.. иногда мне специально нужно сделать оконо модельным чтобы пользователь не тыкал никуда более пока не закончит работу с этим окном.. пока что похоже на такси2...
7. Infactum 314 18.09.14 20:44 Сейчас в теме
Справедливости ради отмечу, что однопоточность приложения никак не мешает исполнять код асинхронно. Стоит посмотреть хотя бы в сторону node.js. Очень хотелось бы надеяться, что в 8.4 наконец-то приблизятся к этой идеологии.
10. Yashazz 4706 18.09.14 23:59 Сейчас в теме
(7) Воистину так.

(8) Ещё раз: где там уход от модальности, если есть свойства поведения формы, позволяющие ей блокировать остальное? Это разве не лютая модальность? А если да, то почему ровно так же нельзя было сделать маленькое окошко, отрабатывающее функцию "вопрос"?
7OH; bow; veretennikoff; molodoi1sneg; +4 Ответить
15. AlX0id 19.09.14 10:17 Сейчас в теме
(10)
Ну попробуйте запустить "немодальные" и "модальные" 1сные вызовы в Chrome 37. Одни запустятся, другие нет. Все остальное - просто софистика.
11. mrBart 33 19.09.14 07:37 Сейчас в теме
Заменил модальные вызовы на многоуровненые процедуры:

Пример

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

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

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

    КонецЕсли;

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

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

    КонецЕсли;

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

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

    КонецЕсли;

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

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

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

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

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

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

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

При такой постановке вопроса понятно только то, что Вы совершенно не понимаете разницу между модальным вызовом и асинхронным + также не понимаете вопрос обратной совместимости кода :)
36. Yashazz 4706 22.09.14 20:00 Сейчас в теме
(19) Великий гуру нас так и не просветил. Увы.

Кстати, просьба к отписывающимся в теме: пожалуйста, выскажитесь о предложенном в публикации понимании модальности и асинхронности - оно-таки далеко от общепринятых по смыслу, или нэ?
12. BabySG 19.09.14 08:55 Сейчас в теме
(0)
Многое, что можно было «спрятать» в платформе и сделать своими силами, просто перевалено на плечи разработчиков 1С.

Пример блокирующего окна, реализованного по другому в студию!
13. zoytsa 19.09.14 09:54 Сейчас в теме
Наверно разработчиков платформы бесит звук нажатия на пассивное окно при открытом модальном. )))
e.kogan; veretennikoff; AlexanderKai; A.Sytchev; +4 Ответить
14. AVARY 175 19.09.14 10:04 Сейчас в теме
Многое в решениях 1с становится понятным, если попробовать реализовать подобный функционал в web-интерфейсе через javascript и C# или PHP.
17. Shkalar 19.09.14 17:37 Сейчас в теме
(14) AVARY, Полностью согласен.

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

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

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


И чем плакаться о сыром подходе, я лучше буду извлекать из этого максимальную пользу для себя.
20. Yashazz 4706 19.09.14 20:33 Сейчас в теме
(17) 1С без бухгалтерии - ничто. Чем скорее вы это поймёте, тем более реалистичным увидите наш мир. 1С поднялась, выросла, стала монополистом итд исключительно потому, что большинство бухов вынуждено сдавать отчётность государству средствами БП (иначе шибко тяжко), и 1С продолжает лоббировать сие. Иначе сидели б мы на SAP, всяких "Парусах", Аксаптах и прочих Галактиках. Это оффтоп, но имхо, очевидность.
(19) Ага, са-а-авсем не понимаю))) Расскажите мне, я ж предупреждал, что рассуждаю, как "тупой одинэснег". Расскажите, с цитатами, с терминами, да со ссылками на первоисточники. Просветите, пожалуйста, желательно прямо статьёй - я уже заранее готов её плюсануть!
48. BabySG 27.09.14 20:28 Сейчас в теме
(20) посмотрите на партнерке - разработчики ответили раньше, чем я. В двух словах: без понимания, как работает платформа - да, будет "тупой 1С-ник".
Отсюда и идут подобные статьи, когда нет понимания всей картины в целом, а не только "смотрите, можно ведь было квадрат нарисовать мелком, зачем маслянные краски-то использовать?"
49. Yashazz 4706 28.09.14 12:03 Сейчас в теме
(48) BabySG, ссылку можно?
Вообще, к сожалению, два момента вынужден отметить.
Первое: далеко не всегда можно узнать, как именно работает платформа. Не спешат этим с нами делиться. В своё время даже материалы по "1С-Эксперт", где были интересные сведения о "неизведанных глубинах", спешно удалили с ИС.
Второе: далеко не всегда это интересно. Знаете, если вам, чтобы сделать шрифт жирным, придётся в новой версии Ворда проделывать на пять манипуляций больше, вам очень быстро станет наплевать, почему оно так устроено, как хитро и оптимально работает и что на шестом айфоне фурычит более круто. Если у вас не шестой айфон. Вы просто просидите над форматированием текста больше времени и начнёте задумываться об альтернативах.
koltunov.sp; eeeio; Brawler; +3 Ответить
50. BabySG 29.09.14 10:18 Сейчас в теме
(49) https://partners.v8.1c.ru/forum/topic/1279918
Конечно, не всегда можно узнать. Но именно этот момент был известен по очень давним темам, а также рассказывали на семинарах.
Предугадывая вперед: да, нужно ездить на семинары, как бы это не было неудобно. Это единственный способ узнать, как/когда/почему работает. Просто нужно это принять, конференции инфорстарта эти семинары не заменят.

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

p.s. не удастся вам в таком стиле, уж извините. Потому как счесть понтом статью, в начале которой ясно указан подход ("тупой одинэснег") и имеющую категорию Life, слишком большая натяжка даже для вашего стиля ведения дискуссии.
Засим прекращаю - у меня много дел, мало времени и совершенно нет желания добиваться сведений от не желающих/не могущих конструктивно общаться.
58. PiccaHut001 30.09.14 17:36 Сейчас в теме
(50) BabySG, Есть ссылки, доказательства? Где же они? Предлагаете верить Вам на слово? Не врёте? Точно не врёте?
59. BabySG 01.10.14 13:54 Сейчас в теме
(58) PiccaHut001, ссылки на что? Ссылка дана на ответ разработчиков. Кто хотел узнать больше - мог лично пообщаться на вернисаже в прошедший семинар.
60. PiccaHut001 01.10.14 14:33 Сейчас в теме
(59) BabySG, Ваша ссылка тухлая, нужно быть франчём или партнёром 1С, чтобы узнать аргументацию овнокодеров разработчиков платформы. Не хочется делиться с народом тайным знанием? Нездоровая тяга к секретности началась с того, что чтобы увидеть список ошибок платформы, надо было купить ИТС. Глубокоуважаемый Борис, спасибо.
61. BabySG 01.10.14 16:28 Сейчас в теме
(60) читайте (56)
Про текущий порядок распространения информации - не ко мне.
Общий смысл таков (если сократить): текущая статья не учитывает реализацию платформы, видит только то, показывается наружу. Поэтму возникает ложное впечатление, что можно сделать по иному.
62. PiccaHut001 02.10.14 15:16 Сейчас в теме
(61) BabySG, опять "масло масляное". Вы аргументируете свои высказывания ссылкой, которую не смогут открыть большинство 1С-ников. Когда я обращаю ваше внимание на этот факт, начинаются отмазки о "порядке распространения информации", нелепые сказки о том, что по другому модальность сделать невозможно, потому-что так сказали разработчики и надо верить их вранью. Считаю, что с модальностью всё гораздо проще - тупо не хватило времени. Славные менеджерочки 1С ставят высшим приоритетом разработку клиента под макос, а проблему "с модальностью" решили с помощью костылей и залипух. Как всегда в 1С, "доступно и всерьёз".
21. Evgen.Ponomarenko 565 19.09.14 23:37 Сейчас в теме
(17) Shkalar,
И чем плакаться о сыром подходе, я лучше буду извлекать из этого максимальную пользу для себя. Ведь чем сложнее код (именно из-за возможностей) , тем меньше людей выйдет на высокий уровень и тем больше моя зп :)


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


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

У меня последнее время складывается впечатление, что 1С в соответствии с ложными мировыми трендами идет не той дорогой. Автору - респект за поднятую вечную тему
Chai Nic; kostas; roman77; bulpi; MaxDavid; +5 Ответить
23. monsta 58 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 сейчас?
16. zqzq 23 19.09.14 11:34 Сейчас в теме
Вообще согласен с автором, неужели такая проблема генерировать "немодальный/псевдомодальный" код JavaScript на основе старого "модального" кода 1С. Хотя учитывая что авторефракторинг модальности пасует в тяжёных случаях, возможно и преобразование кода 1С->JS с такими же неразрешимыми проблемами сталкивается.
24. dj_serega 390 20.09.14 16:10 Сейчас в теме
Ну не знаю. Я за такие методы 1С. И кода в 3 раза больше писать не нужно. Нужно просто понять как работает новый функционал и попробовать реализовать его. Понимание придет.
Аналогичная ситуация и с "плевками" в сторону управляемого приложения. Семерочники плюются на них. К ним же и Восьмерочники с обычными формами подтягиваются. Но на самом деле в УФ много плюсов и возможностей. Но для работы в этой управляемой среде нужно понимать что и как происходит. Что такое &НаКлиенте а что &НаСервереБезКонтекста и где его использовать ну и т.д. Примеров много.
Вообщем как-то так :)
smirnov0ser; veretennikoff; androgin; softcreator; WanGoff; gradi; Chif13; DigitalMan; BabySG; qwinter; +10 5 Ответить
25. Evgen.Ponomarenko 565 20.09.14 22:33 Сейчас в теме
(24) dj_serega,
Что такое &НаКлиенте а что &НаСервереБезКонтекста и где его использовать

Вот...вот... Разработчики браузеров перекладывают свои проблемы на разработчиков платформ, те в свою очередь перекладывают чужие проблемы дальше на разработчиков конфигураций, те в свою очередь на внедренцев, внедренцы на пользователей. И все заняты... только реальную прибыль никто посчитать не может. Ибо зачем она нужна? каждый откусил свой кусочек порога, захомячил и раздувает с важным видом щеки. (вот только проиграть mp3 1С до сих пор не может, с интеграцией с браузерами - косяки... хех)
46. wolfsoft 2421 24.09.14 11:11 Сейчас в теме
(25) Evgen.Ponomarenko,
Вот...вот... Разработчики браузеров перекладывают свои проблемы на разработчиков платформ, те в свою очередь перекладывают чужие проблемы дальше на разработчиков конфигураций, те в свою очередь на внедренцев, внедренцы на пользователей.
плюс ко всем вашим постам. И автору статьи плюс. "Не шмогла" - это похоже стало новым слоганом 1С.

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

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

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

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

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

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

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

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

Неплохая идея, по крайней мере не ограничены REST начиная с 8.3.5. Но давайте вспомним 7.7, в котором был V7Script, позволявший оперировать объектами 1С на сервере и генерировать честный HTML на клиенте. Сейчас мы получили все то же самое, но без возможностей окружения - IIS и .NET. А значит и на клиенте мы ограничены типами данных, с которыми удобно работать из 1С. Так и ладно - не нужно баловства типа графики и прочего на клиенте - но оставьте тогда ВвестиДату, Предупреждение и Вопрос без заморочек.
40. qwinter 671 23.09.14 21:56 Сейчас в теме
(33) monsta,
Сейчас мы получили все то же самое, но без возможностей окружения - IIS и .NET
Прям великая потеря))) зато мы получили возможность развертывания на linux.
(37) можно прикладной пример такой "надобности"?
(38) the1, можно подробнее у каких производителей безболезненные переходы с версии на версию?
30. Yashazz 4706 21.09.14 14:03 Сейчас в теме
(27) Кстати да. Совершенно не понял, почему нам не дали хотя бы флага для реквизитов - "Передача клиент-сервер". Странно ведь - или тащим всю хрень, или не тащим ничего, управляемости ноль. Параметрами не всё можно передать - вот у меня 10 объектов "ДанныеФормы...", их на сервер кидать параметром в 8.2 некошерно, а в 8.3 просто нельзя; и что, зачем мне таскать все их скопом, когда нужен один? Словом, недоверченная концепция.
...или мы чего-то не знаем о флаге "Использовать всегда"?
65. dj_serega 390 02.10.14 16:33 Сейчас в теме
(30) Та они видимо не додумали как сделать &НаСервереЧастьСКонтекстомЧастьБез. А должны были бы.
(37) А как же идентификатор строки?
31. monsta 58 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С.
35. BabySG 22.09.14 10:11 Сейчас в теме
(31) monsta, мешало то, что ООП нет в 1С. Тем не менее, отличия данного коа только в том, где описана выполняемая фукнция и не более того.
38. ixijixi 1761 23.09.14 08:50 Сейчас в теме
Разработчики платформы вообще беспощадны к разработчикам конфигураций. Вспомните переход с 7-ки на 8-ку? Прешлось переписывать все с нуля. 8.2 ->8.3 - та же история. И это в то время, когда на виду совершенно безболезненные переходы с версии на версию у других производителей.
eeeio; AlexanderKai; dj_serega; Сисой; +4 Ответить
39. fixin 4252 23.09.14 18:01 Сейчас в теме
я всегда говорил, что УФ - зло.
1С рубит сук на котором сидит. Получается только всерьез, но уже не доступно.
41. Yashazz 4706 24.09.14 00:22 Сейчас в теме
(39) Не согласен. УФ - нормальная идея, вкупе с разделением на клиент-сервер, только до ума доведено отнюдь не всё. Сыроват продуктец и кривоват местами.
(40) Найти нечто в дереве и спозиционироваться на эту строку. Кодом, естессно, а не интерфейсными усилиями в окошке поиска. Сделать строку текущей, или развернуть вложенные, или проставить там чего, не гоняя через само дерево значений на сервере. Вообще странный вопрос, это всё равно что спросить, зачем аналогичные методы у других таких.
42. qwinter 671 24.09.14 09:10 Сейчас в теме
(41) уважаемый, я и так понимаю "Найти нечто в дереве и спозиционироваться на эту строку". Я спросил зачем. Если Вы пишите, значить Вы уже сталкивались. Вот я прошу привести реальный пример когда это потребовалось.

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

(43) Писать больше кода, затрачивать больше усилий на то, что могла бы делать платформа - ерунда? Вероятно, у вас почасовая оплата)))
Да, и ещё - что 1С слегка преувеличивает и никакой асинхронности не наблюдается - тоже ерунда?
43. MSensey 49 24.09.14 09:34 Сейчас в теме
Лично меня не устраивает
- невозможность быстро перейти к обработчику описания оповещения
- экспортные процедуры в модуле формы

А все остальное что написал автор ерунда.
Мне наоборот нравится - теперь блокируется не весь интерфейс, а только окно владельца.
45. Сисой 87 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 Ответить
47. WanGoff 138 24.09.14 12:38 Сейчас в теме
Полностью поддерживаю направление развития платформы, в том числе немодальности.
Одновременно с этим, данные статьи полезны как для общего развития, так и для критики положения дел. Как без критики-то.
63. Yashazz 4706 02.10.14 15:21 Сейчас в теме
Есть давно известная закономерность: в отсутствие достоверных своевременных сведений массово плодятся домыслы. И хорошо, если хотя бы под частью таких домыслов будет эмпирическое обоснование.
64. kiruha 388 02.10.14 16:22 Сейчас в теме
Никто не знает как в такси 2 формы открыть рядом ?
Например чтобы визуально сверку провести
Пользователям совсем не нравится текущая реализация
66. Yashazz 4706 02.10.14 16:52 Сейчас в теме
(64) Никак. Или рисовать свою спецформу, совмещающую эти две как контейнер (кстати, красивая мысль для любителей парсить УФ), или запускать рядом 2 приложения и тратить на это лицензии. Ну или рабочий стол пополам поделить и туда засунуть.
(65) 1. Ага, об том уже не первый раз говорено. 2. Поиск мне нужен, а не идентификация. Поиск по значению в колонке.
67. kiruha 388 03.10.14 10:40 Сейчас в теме
(66)
рисовать свою спецформу
мысль интересная - еще никто не делал универсальной такой ?
68. Yashazz 4706 03.10.14 11:32 Сейчас в теме
(67) kiruha, вроде нет. Кстати, может, я озабочусь после выходных... Интересная мысль, но не будем тут оффтопить.
69. webester 26 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 4706 05.10.14 19:14 Сейчас в теме
(69) webester, по пунктам.

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

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

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

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

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

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

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

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

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

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

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

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

p.s. вложенные цитаты не удались, прошу извинить за такой формат ответа)
72. webester 26 06.10.14 12:38 Сейчас в теме
(70)
Я не путаю. Я сужу с позиции юзверя, для которого разницы нет, системный диалог или ещё какой. Я не могу переключиться в другую часть этого окна/страницы, пока висит диалог - значит, модальное. Поймите, именно конечный эффект важен, а разница в реализации должна быть головной болью 1С, а не только/не столько моей. Отказа от модальности не-ту-ти. И что там будет зависать у пользователя - опять-таки проблемы платформы, а не мои, если я не написал явных глупостей в коде; но степень "служебности" точно не моя проблема. Аналогично на телефонах. И вы неправильно поняли - я отнюдь не призываю "оставить как есть", т.к. проблема действительно имеет место и направление способа её решения в целом верное, но сэкономить ручной труд 1С могли бы.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

P.S. Вот тут можно найти примеры труднопреобразуемыой автоматически модальности http://v8.1c.ru/o7/201312ref/index.htm Но это ничтожный процент из встречающегося на практике..
75. Yashazz 4706 06.10.14 19:16 Сейчас в теме
Писал-писал длинный ответ, а он съелся. В общем, мы расходимся в представлении о допустимых уровнях абстракции. Извечный спор, "свобода манёвра vs сложность кода". Мне бы ещё на 1 уровень "утопить" всю эту механику показалось разумным, сделать эдакий автомастер интерпретации простых модальных случаев.

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

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

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

А чем они принципиально отличаются от ПоказатьВводДаты, кроме того, что сделаны на уровне платформы и мы этим не управляем?
79. qwinter 671 13.10.14 13:01 Сейчас в теме
(78) BabySG,
А чем они принципиально отличаются от ПоказатьВводДаты, кроме того, что сделаны на уровне платформы и мы этим не управляем?
они не отличаются, они не блокируют исполнения кода.
77. webester 26 06.10.14 21:21 Сейчас в теме
О том и говорю. Утверждать, что "асинхронность - на клиенте", можно лишь тогда, когда согласуем понятия "асинхронность" и "многопоточность". Но, поскольку "с этим в гугл", то засим прекращаю.

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

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

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

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

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

(87) а сам-то внимательно читал статью? Не похоже, т.к. я и говорил, нафиг нам многопоточность не нужна в работе с формами на клиенте. А с умным видом ляпнуть абсолютно не в тему - это мы все умеем.
87. androgin 12.02.15 20:18 Сейчас в теме
и уж если так нужна многопоточность - её можно реализовать фоновыми заданиями
примером может служить загрузка валят/проверка контрагента..
89. fixin 4252 28.07.15 08:05 Сейчас в теме
Основная цель не отказ от модальности и не прогиб под браузера, а полный переход на событийность, чтобы не замораживать обработчики событий
90. fixin 4252 24.11.15 11:57 Сейчас в теме
перечитал эту статью уже теперь, когда пользуюсь УФ на всю катушку. Автор прав, но мы будем продолжать колоться, плакать и жрать кактус от 1С. Увы. Маркетинг победил программистов на Селезнёвской. Вместо красоты кода получаем ужас-ужас-ужас. .....
91. 7OH 69 07.02.17 16:44 Сейчас в теме
Согласен со статьёй на все 100%.
Каждый раз думаю о "программистах" платформы вспоминаю 3 кита ООП :
1) Костылирование
2) Инкостыляция
3) Поликостылизм
и зачастую адреса разработчиков хочется достать намного больше, чем адрес съемок "Дом-2".
Пишу параллельно на С, Delphi и Java иногда.
Каждый день приходится тратить уйму времени на эти Показать...
Иногда даже кошмары снятся в виде формы вопроса с количеством вариантов ответов = количеству перестановок вариантов ответов на каждый вопрос при линейном подходе.
---
И вот как программист С - я бы таки сделал обёртку для всех вызовов с таким же поведением, как у "немодальных".
Анализ черного ящика от Якова верный - всё можно было сделать прозрачно.
Cthulhu; sikuda; +2 Ответить
Оставьте свое сообщение