Имя: Пароль:
1C
 
В чем смысл блокировать модальность в обычном приложении?
, ,
0 TormozIT
 
гуру
23.01.16
15:41
Если в конфигурации с "Режим использования модальности" = "Не использовать" в обычном приложении выполняется модальный метод, то возникает исключение "Использование модальных окон в данном режиме запрещено".

Непонятно, какую выгоду можно получить в обычном приложении от запрета модальности. Возможно действие этого свойства конфигурации распространили на обычное приложение ненамеренно?
1 aka AMIGO
 
23.01.16
15:49
Вопрос насущный: если у меня открыто модальное окно, я могу войти в другие открытые окна? Ну к примеру, журнал там, или документ..табличный..
2 TormozIT
 
гуру
23.01.16
15:51
(1) На то оно и модальное окно, чтобы фокусировать внимание пользователя и не давать параллельно меняться другим формам.
3 Drac0
 
23.01.16
15:55
(0) Когда придется подключать юзеров через веб, то не надо будет переписывать срочно конфу.
4 TormozIT
 
гуру
23.01.16
15:58
(3) Как связаны веб клиент и обычное приложение? У них принципиально разный интерфейс. Для управляемого режима (в первую очередь веб клиента) это свойство и сделано. Вот в нем его смысл понятен.
5 su_mai
 
23.01.16
16:04
(0) А что в режиме обычного приложения исключается многопользовательский клиент-серверный вариант работы?
6 TormozIT
 
гуру
23.01.16
16:05
(5) Нет.
7 ДенисЧ
 
23.01.16
16:06
(5) а какая связь твоего вопроса с (0)?
(0) восьмёрка - глючная и сырая.
8 su_mai
 
23.01.16
16:07
(7) Это не вопрос (5) это евро-ответ :)
9 TormozIT
 
гуру
23.01.16
16:09
(8) Видимо ты не очень хотел чтобы тебя поняли.
10 Записьдампа
 
23.01.16
16:09
(0) Потому что одна и та же конфигурация может использовать одновременно все три вида интерфейса. Например, часть функционала в толстом, отдельные рабочие места - в вебе.
11 TormozIT
 
гуру
23.01.16
16:15
(10) Именно поэтому вопрос и возник. В управляемом интерфейсе свойство должно работать. Тут вопросов нет. Зачем оно работает в обычном режиме? Клиентский код управляемого и обычно режимов пересекается лишь частично и не в модулях форм, где вполне можно использовать единый немодальный стиль общения с пользователем.
12 Смотрящий
 
23.01.16
16:16
Жрите, жрите кактус
13 Записьдампа
 
23.01.16
16:25
(11) То есть ты предлагаешь принципиально отказаться от общих клиентских модулей, работающих в разных интерфейсах?
14 TormozIT
 
гуру
23.01.16
16:27
(13) Нет
15 Serginio1
 
24.01.16
10:02
(0) Наверное, что бы жизнт медом не казалась. На самом деле компилятор, мог бы сам разбивать процедуру в зависимости от типа приложения. Рефакторинг они сделали, так же можно это сделать и при компиляции.
Для серверных вызовов можно сделать аналог нетовского await
Это резко увеличи ло бы производительность программиста.
16 Serginio1
 
24.01.16
10:05
чтобы клиентский и серверный код были в одном методе
17 Serginio1
 
24.01.16
10:06
Да и давно уже нужно замыкания вводить
18 Остап Сулейманович
 
24.01.16
11:32
(0) Если конфигурация работает во всех возможных режимах :
1. Не устанавливай такую фишку в свойствах конфигурации.
2. Прописывай поведение диалогов для каждого режима с помощью директив компиляции
#Если ТолстыйКлиентОбычноеПриложение
#Если ТолстыйКлиентУправляемоеПриложение
#Если ТонкийКлиент
#Если ВебКлиент
3. Ответственность за корректное поведение системы в части использования модальности - полностью на тебе.
19 Записьдампа
 
24.01.16
11:47
(15) Угу. Особенно в варианте поставки модуля без исходных текстов.
20 Записьдампа
 
24.01.16
11:48
(18) Не надо так делать. Немодальные методы не запрещаются при режиме модальности "использовать"
21 Остап Сулейманович
 
24.01.16
11:52
(20) Ну если ТС хочется в толстом работать модально? Ну очень хочется... прям аж... Тогда можно?
22 Записьдампа
 
24.01.16
11:56
(21) Ему не хочется =)
У него вопрос "а почему совместимость с устаревшей технологией модальности организована вот так, если я нашёл частный случай когда она еще может работать"
И вот тут даже не знаешь, что ответить...
23 Остап Сулейманович
 
24.01.16
12:06
(22) Вот это вот в части "устаревшей" есть просто набор символов.
Нифига оно еще не устарело. Просто из соображений безопасности  <b>может быть</?> отключено в браузере.
Статистики пользования 1С в браузерах у меня нет. Но думаю, что это мизерный процент по сравнению с толстым или тонким клиентами.
24 Serginio1
 
24.01.16
12:08
(20) А кая разница. В итоге код то все равно компилируется в байт код, в котором можно предусмотреть ветвление в зависимости от клиента.
25 Serginio1
 
24.01.16
12:10
24+ Я к тому, что компилятор может сразу генерить немодальные вызовы.
26 DJ Anthon
 
24.01.16
12:12
(0) просто вас мягко просят переходить на продвинутые методы работы. не нравиццо - юзайте старую платформу, где оно не ругаисся
27 Записьдампа
 
24.01.16
12:13
(23) https://hh.ru/vacancy/7711233
Ты имеешь возможность все исправить =)
28 Записьдампа
 
24.01.16
12:19
(25) Не может. Например при вызове модельного метода в цикле.
29 Остап Сулейманович
 
24.01.16
12:19
(27) Тут бы со своим справиться... Нет уж. Пускай они сами.
30 vde69
 
24.01.16
12:20
(4) а мне и для веб клиента не понятен смысл запрета модальности....

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

кто мне объяснит зачем вообще нужно выполнять код когда мы хотим явным образом получить выбор пользователя?
например в списке документов при попытке удаления модальный вопрос вполне уместен... ну нельзя продолжать работать с этим списком пока не ответишь... с другими окнами - пожалуйста, но в рамках одной вкладки фигу...
31 Остап Сулейманович
 
24.01.16
12:25
(30) В браузере может быть запрещено использование модальных окон. Просто. По независящим от 1С причинам.

Я вообще не понимаю смысла работать в браузере при наличии тонкого клиента.
32 vde69
 
24.01.16
12:26
(31) кто мешает реализовать модальность через <div>
33 Записьдампа
 
24.01.16
12:29
(32) Однопоточность javascript, на котором выполняется интерпретатор байт-кода 1С
34 Записьдампа
 
24.01.16
12:31
(31) Отсутствие возможности устанавливать софт. Просто. По независящим от 1С причинам =)
35 Остап Сулейманович
 
24.01.16
12:31
(32) <div> - это не модальность. Это многослойность.
36 Остап Сулейманович
 
24.01.16
12:34
(34) А вот и нифига. Отсутствие возможности устанавливать софт не мешает установить браузер. А вот тонкий клиент встанет не на каждую ОСь. Я думаю - в этом причина. Кроссплатформенность, расширение рынков сбыта и все такое...
37 Провинциальный 1сник
 
24.01.16
12:45
(35) Что мешает не использовать системные модальные окна, а отрисовывать их самостоятельно в контексте основного окна?
38 Записьдампа
 
24.01.16
12:47
(37) см (33)
39 Провинциальный 1сник
 
24.01.16
12:49
(38) Как однопоточность джаваскрипта способна этому помешать? Модальный диалок в любом случае блокирует основной контекст выполнения.
40 Провинциальный 1сник
 
24.01.16
12:50
+(39) Модальный диалог ждет реакции пользователя, пусть при этом джаваскрипт остановился - кому от этого плохо?
41 Serginio1
 
24.01.16
12:51
(28) Может. Посмотри на нетовские await, yield
42 Serginio1
 
24.01.16
13:23
41. Суть такая генерируется класс который захватывает переменные в поля класса. Метод с немодальными вызовами метод разбивается на несколько методов, которые вызывают друг друга. Цикл переделывается на енумератор, где в нужных местах вызывается next
43 Serginio1
 
24.01.16
13:26
Я это давно делал для при создании курсора для обхода деревьев http://rsdn.ru/article/alg/tlsd.xml
44 Записьдампа
 
24.01.16
13:28
(41) Да по тебе прям психологию изучать уже можно.

Классическая подмена предмета обсуждения - только что говорили, что компилятор 1С не может такое рефакторить, и тут внезапно утверждается, что компилятор .net - может. И какие из этого надо сделать выводы? Что кислое более красное чем железное?
Эта твоя асинхронность появилась только в C# 5.0 (2013 год, насколько я помню), а компилятор 1С не менялся с 8.2 (2009 год, последнее крупное впиливание - директивы условной компиляции).

Ну и не менее классический перевод внимания на себя - "а я делал"
45 Serginio1
 
24.01.16
14:20
(44) это await появился. До этого как и в JS прекрасно работали ContinueWith
А делать надо выводы 1С, что бы делать работу программисто более производительной и эффективной.
  Это переход к тому, что такой средний программист как я работающий на мебельном производстве это делал лет 12 назад, то почему же этого не может такая крупная фирма с крутыми программистами.
46 Записьдампа
 
24.01.16
14:58
(45) Да крутой ты, крутой. А фирма 1С - лохи. Рубашку только на себе не рви - завтра ж ещё на работу.
47 Serginio1
 
24.01.16
15:43
(46) Где я рву? Я признаю факт, что я средний программист.
И фирма 1С не может держать лохов. Но если посмотреть как развиваются другие языки. Где эффективность программирования увеличивается постоянно, 1С только усложняет жизнь программистам.
Посмотри на C++,C#,Java. JS изменяется, а еще добавляются и развиваются TypeScript, Angular 2 на TS.
Кстати 1С взять бы за основу TS где кстати есть поддержка await https://ru.wikipedia.org/wiki/TypeScript
48 su_mai
 
24.01.16
17:47
(47) Ничего 1С не усложняет, наоборот, такого низкого порога вхождения в программирование как в 1С, нет наверное нигде. Есть конечно некоторые моменты, но в целом все круто.
49 Serginio1
 
24.01.16
18:00
(48) Ты просто на других языках не программировал. Низкий порог вхождения не всегда равно эффективности программирования. И честно я очень рад за тебя, что тебе нравится программировать
50 su_mai
 
24.01.16
18:13
(49) Вопрос не в эффективности программировании на языке, а в эффективности достижения определенных целей. 1С декларирует, что она автоматизирует бизнес процессы организаций. Мое мнение - она удобна и эффективна для этого.

ПС.
>Ты просто на других языках не программировал.
http://www.anekdot.ru/id/120130/
51 Bober
 
24.01.16
18:37
(0) так как в обычном можно запускать уф, то поэтому и сделали. а так как контекст синх методов вызванных из обычных форм и уф не различается, то впиндюрили этот отскок при любом вызове этих методов.
52 Serginio1
 
24.01.16
19:04
(50) Вот именно, что пока она только блестит, а если бы еще и развивалась, так и не только блестела.
53 su_mai
 
24.01.16
19:12
(0) (+5) По сути темы мне думается, вот что.

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

Включая в конфигурации режим "Режим использования модальности" = "Не использовать" вы берете на себя ответственность следовать другой "парадигме программирования" не только в плане интерфейса, но и при работе с данными.
54 su_mai
 
24.01.16
19:13
(52) :)
55 TormozIT
 
гуру
24.01.16
19:22
(53) Дельный аргумент. Правда о нем само 1С видимо забыло в документации http://its.1c.ru/docs/v8nonmodal/#1
56 Записьдампа
 
24.01.16
19:40
(53) Не путайте, пожалуйста транзакции с блокировками.
Если я напишу при начале работы системы НачатьТранзакцию, а при окончании работы - ОтменитьТранзакцию, то какое это отношение будет иметь к модальности?
57 Marine Band
 
24.01.16
19:41
(53) Что за глупость...
58 su_mai
 
24.01.16
20:06
(55) В книжке написано: Филиппов - Настольная книга 1С Эксперта по технологическим вопросам. Изд. 2 - 2015, стр 61 3 абзац
59 Записьдампа
 
24.01.16
20:15
(58) Ну это не "общий случай" рассматривается, а вполне конкретный подход, когда творчески одаренный программист начинает вести диалог с пользователем, заблокировав объекты. Делает ли он это модально или немодально, не имеет никакого значения - блокировка изменяется только после получения ответа от пользователя.
60 vde69
 
24.01.16
21:57
(53) хороший тон был заложен вначале перехода на УФ


ВсеКлиентскиефункции
КачалоТранзакции
ВсеСерверныефункции
КонецТранзакции

в нем все логично, если нужна реакция пользователя - она всегда ДО начала транзакции

но сейчас по моему до маразма доводят

и причины доведения до маразма всего две
1. Фреш, и желание разделить данные разных компаний....
2. 100% кроссплатформеность и движение в сторону мобильных приложений.

Эти два пункта просто охерено усложняют и губят платформу...

-----------------------------------

Ну банально нельзя угнаться за всеми новыми течениями, надо выбирать что-то одно из современного развития. А 1с пытается сделать семилапого пятичлена вместо обычного двурукого...
61 TormozIT
 
гуру
26.01.16
14:49
Радостная новость из 1С.
"
Начиная с версии 8.3.5 свойство "Режим использования модальности" в тонком и толстом клиентах учитывается только если указан параметр командной строки /EnableCheckModal.
Этот параметр автоматически подставляется в командную строку при запуске приложения из конфигуратора.

Если этот параметр не указан, то в этих клиентах он не учитывается: исключения не кидаются, предупреждения не показываются.
В веб-клиенте "Режим использования модальности" учитывается всегда.

Данное изменение было сделано как раз из-за этой проблемы."

Пока непонятно следующее:
1. Зачем параметр автоматически подставляется в командную строку при запуске приложения из конфигуратора? Похоже на ошибку платформы.

2. Как отключить подстановку этого параметра в строку запуска при запуске клиентского приложения из конфигуратора? Обычно как раз из конфигуратора запускают обычное приложение в базе, написанной под управляемое приложение.
62 TormozIT
 
гуру
26.01.16
15:11
(61) Ответ на вопрос №1
"Это было сделано из следующих соображений:

    запуск приложения из конфигуратора используют разработчики конфигураций, а не конечные пользователи,
    если в конфигурации "Режим использования модальности" не установлен в "Использовать", то разработчик должен видеть ошибки использования модальных окон.
"
63 Живой Ископаемый
 
26.01.16
15:14
просто если бы они уже реализовали замыкания и управление потоками, то не нужно было бы отказываться от модальности.
64 Карупян
 
26.01.16
15:21
(0) Никакого смысла конечно нет. Сделали как сделали.
Но так как на толстые формы уже забили никто исправлять не будут
65 TormozIT
 
гуру
26.01.16
15:30
(64) "Толстые формы" - не совсем корректный термин. Правильно "обычные" формы и "управляемые формы", а "управляемые формы" с нятяжкой можно разделить на толстые (работающие только в толстом клиенте) и тонкие управляемые(работающие во всех управляемых клиентах).
66 Карупян
 
26.01.16
15:33
(65) Но клиент то называется толстый
67 TormozIT
 
гуру
26.01.16
15:38
(66) Верно. Клиент толстым называется из-за объема трафика между клиентом и сервером, но принцип работы управляемых форм во всех клиентах (обычный, толстый управляемый, тонкий управляемый и др.) одинаковый.
68 su_mai
 
26.01.16
22:07
(61) Это написано в V8Update.htm, как я сразу туда не посмотрел :(

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