Приложение не может быть закрыто потому что активен модальный диалог

Странные случайные зависания 1С

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

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

После всех этих манипуляций для магазинов выгрузили начальные образы, которые были успешно установлены. И вот тут возникла проблема. Из 13 магазинов проблема проявляется как минимум в пяти.

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

Проблема возникает с периодичностью примерно раз в один-два часа, т.е. раз 5 за день продавцы прибивают 1с. За две недели никаких закономерностей выявлено не было, может встать колом при открытом окне подбора товаров в чек, может встать когда пропикивают товар в чек, может встать когда ее вообще не касаются даже, т.е. просто открыто РМК, продавец через пол часа возвращается чтобы сделать продажу, а 1с стоит колом. При всем при этом, на сервере центральная база работает исправно, никаких зависаний, ничего такого прочего, обмены проходят.

Источник

Модальные окна в 1С 8.3

Модальные окна в 1С

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

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

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

Устранение ошибки «Использование в данном режиме модальных окон запрещено» в системе 1С

Эта разновидность ошибки стала возникать после того, как 1С была полностью переведена на новый интерфейс, относящийся к платформе 1С 8.3 – «Такси». Связано это с тем, что разработчиками в ней была включена возможность работы с окнами, однако, она была реализована без режима модальности.

Приложение не может быть закрыто потому что активен модальный диалог. Смотреть фото Приложение не может быть закрыто потому что активен модальный диалог. Смотреть картинку Приложение не может быть закрыто потому что активен модальный диалог. Картинка про Приложение не может быть закрыто потому что активен модальный диалог. Фото Приложение не может быть закрыто потому что активен модальный диалог

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

Приложение не может быть закрыто потому что активен модальный диалог. Смотреть фото Приложение не может быть закрыто потому что активен модальный диалог. Смотреть картинку Приложение не может быть закрыто потому что активен модальный диалог. Картинка про Приложение не может быть закрыто потому что активен модальный диалог. Фото Приложение не может быть закрыто потому что активен модальный диалог

Затем, в обязательном порядке потребуется сохранить произведенные в конфигурации изменения, после чего и обновить их. Та ошибка, о которой шла речь ранее, возникает, если установлена отметка о недопустимости использования режима модальности. Эта возможность возникла, начиная с платформы версии 8.3.3.721, релиз которой состоялся еще в сентябре 2013-го года. Другими словами, те пользователи системы, которые до настоящего момента по каким-либо причинам все еще продолжают работать с более старыми версиями платформы, могут не отказываться от использования модальности. Что же касается других версий, что бы устранить всякую возможность появления окна с ошибкой, допускается простая установка посредством использования вкладки «Использовать».

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

Приложение не может быть закрыто потому что активен модальный диалог. Смотреть фото Приложение не может быть закрыто потому что активен модальный диалог. Смотреть картинку Приложение не может быть закрыто потому что активен модальный диалог. Картинка про Приложение не может быть закрыто потому что активен модальный диалог. Фото Приложение не может быть закрыто потому что активен модальный диалог

Используемые через веб-клиент приложения, как и применяемые в облаке и на iPad (к примеру, «1cfresh.com» и др.), в данном режиме совершенно не функционируют. Все новые разновидности конфигураций использует в процессе своей работы интерфейса только безмодальный режим и ничего другого.

Модальность и отказ от ее использования

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

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

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

Источник

Периодическая ошибка модального диалога

Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.

Приложение не может быть закрыто потому что активен модальный диалог. Смотреть фото Приложение не может быть закрыто потому что активен модальный диалог. Смотреть картинку Приложение не может быть закрыто потому что активен модальный диалог. Картинка про Приложение не может быть закрыто потому что активен модальный диалог. Фото Приложение не может быть закрыто потому что активен модальный диалог

Приложение не может быть закрыто потому что активен модальный диалог. Смотреть фото Приложение не может быть закрыто потому что активен модальный диалог. Смотреть картинку Приложение не может быть закрыто потому что активен модальный диалог. Картинка про Приложение не может быть закрыто потому что активен модальный диалог. Фото Приложение не может быть закрыто потому что активен модальный диалог

Приложение не может быть закрыто потому что активен модальный диалог. Смотреть фото Приложение не может быть закрыто потому что активен модальный диалог. Смотреть картинку Приложение не может быть закрыто потому что активен модальный диалог. Картинка про Приложение не может быть закрыто потому что активен модальный диалог. Фото Приложение не может быть закрыто потому что активен модальный диалог

Приложение не может быть закрыто потому что активен модальный диалог. Смотреть фото Приложение не может быть закрыто потому что активен модальный диалог. Смотреть картинку Приложение не может быть закрыто потому что активен модальный диалог. Картинка про Приложение не может быть закрыто потому что активен модальный диалог. Фото Приложение не может быть закрыто потому что активен модальный диалог

Добрый день, Евгений!

Приложение не может быть закрыто потому что активен модальный диалог. Смотреть фото Приложение не может быть закрыто потому что активен модальный диалог. Смотреть картинку Приложение не может быть закрыто потому что активен модальный диалог. Картинка про Приложение не может быть закрыто потому что активен модальный диалог. Фото Приложение не может быть закрыто потому что активен модальный диалог

Добрый день, Евгений!

Спасибо, передала разработчикам.

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

1. Уточните, пожалуйста, проблема у вас появляется в тонком клиенте или в веб-клиенте?
2. И еще, измененная у Вас конфигурация или типовая? Не было ли каких-нибудь доработок в этом механизме?

Добрый вечер, Наталья!

1. Тонкий клиент.
2. Измененная конфигурация. В механизме оповещений доработок нет.
Подозрения есть на доработки в документе «Событие», а конкретно в модуле формы документа в процедуре «Подключаемый_КомандаОбработкаАтрибутаСобытияОбщая». Чуть позже опишу их смысл, если кратко то они связаны с установкой признака недоступности некоторых полей формы при переводе статуса события в «Завершено». Возможно потребуется их оптимизация, хотя в среде разработки ошибка указанная никогда не проявлялась, жалуются только пользователи из группы доступа «Менеджеры по продажам».

Источник

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

Что на самом деле мы получили в 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. Следующим логичным шагом было бы сделать нечто вроде:

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

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

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

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

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

Источник

Модальный диалог да/нет

Заменить немодальный диалог на модальный
Всем привет. У меня появилась некоторая проблема, при изучении языка С++Bilder 6.0 Так как я.

Модальный диалог используя ASP либо VBScript
Как, используя ASP, либо VBScript сделать модальный диалог. Если это делать на JavaScript, то в.

Показать модальный диалог с N кнопок и проверить какая из них нажата
кнопки не являются по смыслу подобными DialogResult’ам, т.е. возвращать DialogResult.Ok и т.д.

в боксе изначально одна строчка. По кнопке1 добавляется еще две со своими «объектами» (int) и первой строчке тоже придается «объект». А по кнопке2 в заголовок улетает «объект» второй строчки (22) (это из рабочей программы. ).

БП 3.0 приложение не может быть закрыто потому что активен модальный диалог
Добрый день! Есть 7 файловых баз БП 3.0 (платформа 8.3.12.168 релиз 3.0.65.91). Лежат они на.

Приложение не может быть закрыто потому что активен модальный диалог. Смотреть фото Приложение не может быть закрыто потому что активен модальный диалог. Смотреть картинку Приложение не может быть закрыто потому что активен модальный диалог. Картинка про Приложение не может быть закрыто потому что активен модальный диалог. Фото Приложение не может быть закрыто потому что активен модальный диалогДиалог да/нет в
Добрый день! Подскажите пожалуйста, какими бы я способами не пробовал не могу впаять в код диалог.

Приложение не может быть закрыто потому что активен модальный диалог. Смотреть фото Приложение не может быть закрыто потому что активен модальный диалог. Смотреть картинку Приложение не может быть закрыто потому что активен модальный диалог. Картинка про Приложение не может быть закрыто потому что активен модальный диалог. Фото Приложение не может быть закрыто потому что активен модальный диалогДиалог вида да/нет
Здравствуйте! Есть в WinAPI или MFC способ без организации диалога через ресурсы сделать диалог с.

Как создать заказной диалог (Да, Нет)?
Все привет. Код, представленный ниже, создает диалог с кнопками Yes и No. Как создать диалог.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *