Использование модальных окон в данном режиме запрещено! Модальные окна не работают, как быть? В конфигураторе в свойства конфигурации, есть параметр «Режим использования модальности»
Если установить Не использовать , то - принципе весь код, который после ОткрытьФормуМодально() Вопрос(), Предупреждение(), Выборов и диалогов открытия-сохранения станет работать с ошибками!
Рассмотрим пример с Использовать :
Код 1C v 8.3 &НаКлиенте
Процедура КомандаВопрос(Команда)
Ответ = Вопрос("Ну что скажешь? ", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
Сообщить("Ответили ДА!");
КонецЕсли;
КонецПроцедуры
В режиме Предприятие получаем
Если мы поставим Режим использования модальности = Не использовать то получим ошибку: Использование модальных окон в данном режиме запрещено
Теперь код нужно писать по новому:
Код 1C v 8.3 &НаКлиенте
Процедура КомандаВопросПоНовому(Команда)
Оповещение = Новый ОписаниеОповещения("ОтветНаВопросЗавершение", ЭтотОбъект);
ТекстВопроса = "Ну что скажешь?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ОтветНаВопросЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
Сообщить("Ответили ДА");
КонецЕсли;
КонецПроцедуры
в результате
Почему 1С решила отказаться от использования модальных окон ?
В наш век развития мобильных технологий все идет к тому - что скоро все будут работать на планшетах и телефонах . 1С сделала для этого «Web Клиент» и «Мобильное приложение». И чтобы успешно двигаться вперед нужно решать такие проблемы как, блокировка всплывающих окон. Ведь даже обычные браузеры по умолчанию блокируют модальные (всплывающие) окна!
Категория:
1С Общие вопросы - Управляемые формы и Такс… Как в 1С автоматически переключать раскладку клавиатуры? Для этого можно использовать функционал следующих внешних компонент:
1. FormEx смотрите тут.
Код 1C v 7.x Сервис=СоздатьОбъект("Сервис");
Сервис.РаскладкаКлавиатуры("Russian");
2. Miracle смотрите тут.
3. NetaTable смотрите тут.
Код 1C v 7.x Если (ЗагрузитьВнешнююКомпоненту("NetaTable.dll")=1) Тогда
РовнаяТаблица=СоздатьОбъект("AddIn.NTable");
Иначе
Предупреждение("Внешняя компонента AddIn.NetaTable НЕ подключена!!!"+РазделительСтрок+"Работа программы невозможна!!!");
СтатусВозврата(0);
Возврат
КонецЕсли;
Процедура ПриНачалеВыбораЗначения(ИдентЭлемента,ФлагОтбора)
Если ИдентЭлемента = "Диагноз" Тогда
РовнаяТаблица.УстановитьРаскладку(67699721);
ИначеЕсли ИдентЭлемента = "ИсточникФинансирования" Тогда
РовнаяТаблица.УстановитьРаскладку(68748313);
КонецЕсли;
КонецПроцедуры
А можно и без внешних компонент:
Код 1C v 7.x //примеры Sserj
Процедура СменитьРаскладку(Реж)
//Можно и просто через wrapper.dll
//Wrapper = CreateObject("DynamicWrapper");
//Wrapper.Register("USER32.DLL", "ActivateKeyboardLayout", "i=ll", "f=s", "r=l");
//Wrapper.Register("USER32.DLL", "LoadKeyboardLayout", "i=sl", "f=s", "r=l");
//rus = Wrapper.LoadKeyboardLayout("00000419", 0);
//eng = Wrapper.LoadKeyboardLayout("00000409", 0);
//Если Реж = "RUS" Тогда
// Wrapper.ActivateKeyboardLayout(rus, 0);
//ИначеЕсли Реж = "EN" Тогда
// Wrapper.ActivateKeyboardLayout(eng , 0);
//КонецЕсли;
Если Не (Константа.ВключатьНамЛоокВТелефонах = Истина) Тогда
Возврат;
КонецЕсли;
wshShell=createObject("wScript.shell");
Если Реж = "RUS" Тогда
wshShell.SendKeys("^(8)",0);
ИначеЕсли Реж = "EN" Тогда
wshShell.SendKeys("^(9)",0);
КонецЕсли;
КонецПроцедуры // СменитьРаскладку(Реж)
//ЕЩЕ
//Обновляем хоткеи смены языков, для подмены в полях где нужна английская раскладка
текст = СоздатьОбъект("текст");
текст.ДобавитьСтроку("Windows Registry Editor Version 5.00");
текст.ДобавитьСтроку("");
текст.ДобавитьСтроку("[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000100]");
текст.ДобавитьСтроку("""Virtual Key""=hex:39,00,00,00");
текст.ДобавитьСтроку("""Key Modifiers""=hex:02,c0,00,00");
текст.ДобавитьСтроку("""Target IME""=hex:09,04,09,04");
текст.ДобавитьСтроку("");
текст.ДобавитьСтроку("[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000101]");
текст.ДобавитьСтроку("""Virtual Key""=hex:38,00,00,00");
текст.ДобавитьСтроку("""Key Modifiers""=hex:02,c0,00,00");
текст.ДобавитьСтроку("""Target IME""=hex:19,04,19,04");
ИмяФайла = КаталогИБ() + "LangHotKey.reg";
Попытка
текст.Записать(ИмяФайла);
wshShell=createObject("wScript.shell");
StrComand = "regedit /S " + СокрЛП(ИмяФайла);
wshShell.Run(StrComand,1);
//Задерживаемся, иначе скрипт не успевает прочитать файл
Для Сч=1 По 50000 Цикл
КонецЦикла;
ФС.УдалитьФайл(ИмяФайла);
Исключение
КонецПопытки;
Категория:
Полезные, Универсальные Функции