Что такое модальный диалог в 1с и как его закрыть

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

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

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

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

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

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

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

Что такое модальный диалог в 1с и как его закрыть. Смотреть фото Что такое модальный диалог в 1с и как его закрыть. Смотреть картинку Что такое модальный диалог в 1с и как его закрыть. Картинка про Что такое модальный диалог в 1с и как его закрыть. Фото Что такое модальный диалог в 1с и как его закрыть

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

Что такое модальный диалог в 1с и как его закрыть. Смотреть фото Что такое модальный диалог в 1с и как его закрыть. Смотреть картинку Что такое модальный диалог в 1с и как его закрыть. Картинка про Что такое модальный диалог в 1с и как его закрыть. Фото Что такое модальный диалог в 1с и как его закрыть

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

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

Что такое модальный диалог в 1с и как его закрыть. Смотреть фото Что такое модальный диалог в 1с и как его закрыть. Смотреть картинку Что такое модальный диалог в 1с и как его закрыть. Картинка про Что такое модальный диалог в 1с и как его закрыть. Фото Что такое модальный диалог в 1с и как его закрыть

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

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

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

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

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

Источник

Модальность в 1С

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

Общая информация

В начале рассмотрим общие вопросы связанные с модальными окнами в 1С.

Что не так с модальными окнами?

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

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

Когда следует отказаться от модальности?

Разумеется отказ от модальности необходим далеко не всегда.

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

Во-вторых, не все прикладные решения обязаны использовать этот режим. Отказ от модальности является критичным для приложений которые будут использоваться:

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

Как все поправить?

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

Каждый раз, перед тем как начать переделывать модальный диалог, стоит очень серьезно подумать — не проще ли будет избавиться от этого диалога совсем.

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

Непосредственно при отказе от модальности очень поможет механизм рефакторинга о котором подробно написано в отдельной статье.

Соответствие синхронных методов асинхронным аналогам (на момент написания статьи) можно посмотреть тут.

Практические примеры

В качестве практических примеров рассмотрим основные приемы работы с блокирующими окнами.

Источник

Отказ от использования модальных окон

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

Развитие продуктов «1С» и платформы «1С:Предприятие»

Одним из основных векторов развития платформы «1С:Предприятие» является возможность ее успешного использования в среде Интернет.

Эта среда имеет ряд ограничений, которые отсутствуют в среде настольных приложений:

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

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

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

Проблемы поддержки модальных окон в среде Интернет

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

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

Для разработки качественных веб-приложений требуются асинхронные средства обеспечения взаимодействия с пользователем.

Такие средства были добавлены в платформу «1С:Предприятие» в версии 8.3.3.

Несколько терминов и определений

Далее в статье будут использоваться следующие термины:

Общие принципы при переходе на асинхронную модель построения бизнес-логики

В синхронной модели код, зависящий от выбора пользователя, выполняется последовательно.

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

Таким образом, получается, что такой код разбивается на две процедуры:

Новые асинхронные средства платформы для взаимодействия с пользователем

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

Этот объект имеет конструктор со следующими параметрами:

Для получения значения модуля у вышеперечисленных объектов добавлено общее свойство ЭтотОбъект.

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

Группа этих методов отличается следующим:

Также были добавлены возможности работы с управляемыми формами в асинхронной модели. Однако, для них не создавалось новых методов, а были доработаны уже имеющиеся средства:

Дополнительно реализован новый метод глобального контекста ВыполнитьОбработкуОповещения(), который позволяет вручную осуществить вызов процедуры-обработчика. Это позволяет реализовать общую процедуру, выполняющую опрос пользователя, которая вызывается из разных мест.

Особенности реализации асинхронной бизнес-логики

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

Это подтверждается тем фактом, что все современные веб-приложения построены именно с использованием асинхронной модели и их количество постоянно растет.

Типовые сценарии при переходе на асинхронную модель


Вопрос пользователю в команде формы

Наиболее частым сценарием является получение информации от пользователя во время исполнения какой-либо команды.
Допустим, существует следующий код, написанный в рамках синхронной модели:

В рамках асинхронной модели с использованием новых средств этот код будет выглядеть следующим образом:

//Добавим вид характеристики на форму
ДобавитьХарактеристикуНаСервере ( ВидХарактеристики ) ;
КонецПроцедуры

Следует обратить внимание, что процедура-обработчик объявлена экпортируемой. Это связано с тем, что эта процедура будет вызвана не кодом самого модуля, а системным кодом платформы, поэтому модуль должен предоставить к ней доступ.

Вопрос пользователю при закрытии формы

В таких случаях доступен следующий алгоритм:

Ниже приведен пример кода, реализующего этот алгоритм:

Вопрос пользователю во вложенных процедурах

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

Предположим, существует общая функция, которая возвращает текст, в зависимости от ответа пользователя:

В асинхронной модели эту функцию и ее вызовы следует реализовывать следующим образом:

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

Заключение

В статье были рассмотрены новые средства, позволяющие реализовывать более качественные приложения с использованием асинхронной модели, принятой в среде Интернет.

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

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

Источник

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

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

ВНИМАНИЕ!

Скоро на «Клерке» стартует обучение на онлайн-курсе повышения квалификации для получения удостоверения, которое попадет в госреестр. Тема курса: управленческий учет.

Повысьте свою ценность как специалиста в глазах директора. Смотреть полную программу

Источник

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

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