Модальные окна в Web-клиенте 1С

1. anaid 01.02.17 10:51 Сейчас в теме
Доброго времени суток!

С недавнего времени появилась проблема с модальными окнами в web-клиенте 1С. У некоторых пользователей стала выскакивать ошибка: "Использование модальных окон в данном режиме запрещено!". Причем интересная особенность, что у других пользователей все продолжает нормально работать. С теми же самыми правами, в том же самом браузере, той же версии!
Конфигурация: 1C:CRM, редакция 2.0 (2.0.11.5)
Платформа: 1С:Предприятие 8.3 (8.3.8.2197)
Работают пользователи через веб-клиент.
Запускаются все в браузере Mozilla Firefox (версия 51.0.1 32-bit).
В свойствах конфигурации установлено: Режим использования модальности = Использовать.

Поделитесь опытом, может, кто сталкивался с такой проблемой. Пыталась погуглить, но везде пишут только про "Режим использования модальности" и что не стоит использовать браузер Гугл Хром, так как с определенной версии он полностью перестал поддерживать модальные окна.
+
По теме из базы знаний
Найденные решения
2. anaid 03.02.17 15:20 Сейчас в теме
Я решила проблему! Без переписывания конфигурации и отката к старой версии браузера!!!)
Поделюсь, может, кому будет полезно.

Я нарыла, что проблему модальных окон при использовании веб-клиента 1С решает некое расширение для браузера 1C:Enterprise 8 Extension (почитать про него можно, например, здесь: https://1c.link/article/ff-addon-installation). Но! Главный вопрос был, как его установить??? И это оказалось не так очевидно, как хотелось бы;). Итак, заходим в меню "Общие настройки" -> "Персональные настройки", переходим на вкладку "Работа с файлами", там есть волшебная кнопка "Установить расширение работы с файлами", нажимаем ее.

И тут появляется гнусное сообщение об ошибке: "Использование синхронных методов на клиенте запрещено!". Вот те на!((( Снова засада....Читаем про асинхронность тут - http://v8.1c.ru/o7/201412async/index.htm. Все становится понятно).

Осталось найти процедуру, которая запускается при нажатии на вышеупомянутую кнопку "Установить расширение работы с файлами", и заменить в ней синхронный метод на новый асинхронный аналог. В моем случае нужно было заменить УстановитьРасширениеРаботыСФайлами() на НачатьУстановкуРасширенияРаботыСФайлами().

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
&НаКлиенте
Процедура УстановитьРасширениеРаботыСФайламиНаКлиенте(Команда)

//УстановитьРасширениеРаботыСФайлами();

НачатьУстановкуРасширенияРаботыСФайлами();

КонецПроцедуры
////////////////////////////////////////////////////////////­////////////////////////////////////////////////////////////­/////////
Показать


После этого все работает! Ура!!! Устанавливаем вышеупомянутое Расширение, и продолжаем наслаждаться работой веб-клиента в последней версии Firefox без каких-либо проблем с модальными окнами!

P.S.: мне было нежелательно править конфу, поэтому я сделала немного по-другому. Создала внешнюю обработку, которая запускает данный метод глобального контекста - НачатьУстановкуРасширенияРаботыСФайлами(). Запустила ее на веб-клиенте у каждого проблемного пользователя, расширение установилось, и жизнь снова заиграла яркими красками;))

Собственно, всё!
LIL_PIVO; gradi; Anchoret; alex-l19041; dj_serega; +5
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. anaid 03.02.17 15:20 Сейчас в теме
Я решила проблему! Без переписывания конфигурации и отката к старой версии браузера!!!)
Поделюсь, может, кому будет полезно.

Я нарыла, что проблему модальных окон при использовании веб-клиента 1С решает некое расширение для браузера 1C:Enterprise 8 Extension (почитать про него можно, например, здесь: https://1c.link/article/ff-addon-installation). Но! Главный вопрос был, как его установить??? И это оказалось не так очевидно, как хотелось бы;). Итак, заходим в меню "Общие настройки" -> "Персональные настройки", переходим на вкладку "Работа с файлами", там есть волшебная кнопка "Установить расширение работы с файлами", нажимаем ее.

И тут появляется гнусное сообщение об ошибке: "Использование синхронных методов на клиенте запрещено!". Вот те на!((( Снова засада....Читаем про асинхронность тут - http://v8.1c.ru/o7/201412async/index.htm. Все становится понятно).

Осталось найти процедуру, которая запускается при нажатии на вышеупомянутую кнопку "Установить расширение работы с файлами", и заменить в ней синхронный метод на новый асинхронный аналог. В моем случае нужно было заменить УстановитьРасширениеРаботыСФайлами() на НачатьУстановкуРасширенияРаботыСФайлами().

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
&НаКлиенте
Процедура УстановитьРасширениеРаботыСФайламиНаКлиенте(Команда)

//УстановитьРасширениеРаботыСФайлами();

НачатьУстановкуРасширенияРаботыСФайлами();

КонецПроцедуры
////////////////////////////////////////////////////////////­////////////////////////////////////////////////////////////­/////////
Показать


После этого все работает! Ура!!! Устанавливаем вышеупомянутое Расширение, и продолжаем наслаждаться работой веб-клиента в последней версии Firefox без каких-либо проблем с модальными окнами!

P.S.: мне было нежелательно править конфу, поэтому я сделала немного по-другому. Создала внешнюю обработку, которая запускает данный метод глобального контекста - НачатьУстановкуРасширенияРаботыСФайлами(). Запустила ее на веб-клиенте у каждого проблемного пользователя, расширение установилось, и жизнь снова заиграла яркими красками;))

Собственно, всё!
LIL_PIVO; gradi; Anchoret; alex-l19041; dj_serega; +5
3. user766950 21.09.17 15:46 Сейчас в теме
Столкнулся с подобной проблемой в веб клиентах FF, Chrom, расширение работы с файлами устанавливается, но при команде открыть получаю "Использование синхронных методов на клиенте запрещено!", в тонком и толстом клиенте все работает. При открытии через тонкий клиент отрабатывает вот этот код
&НаКлиенте
Процедура РасположениеНаПланеРасширениеПредложено(РасширениеРаботыСФайламиПодключено, ДополнительныеПараметры) Экспорт
	Перем ПолноеИмяФайла;
	
	ДанныеФайла = ДополнительныеПараметры.ДанныеФайла;
	ИмяФайла = ДополнительныеПараметры.ИмяФайла;
	СохранятьКак = ДополнительныеПараметры.СохранятьКак;	

	Если РасширениеРаботыСФайламиПодключено Тогда
		РабочийКаталогПользователя = ФайловыеФункцииСлужебныйКлиент.РабочийКаталогПользователя();
		Если ПустаяСтрока(РабочийКаталогПользователя) Тогда
			ПоказатьПредупреждение(, НСтр("ru = 'Не задан рабочий каталог'"));
			Возврат;
		КонецЕсли;
		
		ПолныйПуть = "";
		ФайлМожноОткрывать = ПрисоединенныеФайлыСлужебныйКлиент.ПолучитьФайлВРабочийКаталог(
				ДанныеФайла.СсылкаНаДвоичныеДанныеФайла,
				"",
				ТекущаяДата(),
				ИмяФайла,
				КаталогВременныхФайлов(),
				ПолныйПуть
			);

		Если ФайлМожноОткрывать Тогда
			ЗапуститьПриложение(ПолныйПуть);
		КонецЕсли; 
		
	Иначе
		ПолучитьФайл(ДанныеФайла.СсылкаНаДвоичныеДанныеФайла, СохранятьКак, Истина);
	КонецЕсли;
	
КонецПроцедуры
Показать


А вот проверку типа клиента нашел ниже по коду, уже вот в этом учвстке:
&НаКлиенте
Процедура РасположениеНаПланеОткрытие(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Если Не АР_ОбщиеПроцедурыКлиент.ДоступнаРаботаMSOffice(2) Тогда
		Возврат;		
	КонецЕсли;
	
	ДанныеПланировки = АР_ОбщиеПроцедуры.ЗначенияРеквизитовОбъекта(Объект.РасположениеНаПлане, "ФайлПланировки, Лист, ГрОбъект, ОбластьТекста");
	ДанныеПланировки.Вставить("Наименование", Объект.Наименование);
	
	ЭтоВебКлиент = Ложь;
	
	#Если ВебКлиент Тогда
		СохранятьКак = АР_ОбщиеПроцедурыКлиентСервер.ПолучитьИмяФайлаПланировки(ДанныеПланировки.ФайлПланировки, "Расположение объекта");
		ИмяФайла = "";
		ЭтоВебКлиент = Истина;	
	#Иначе
		СохранятьКак = АР_ОбщиеПроцедурыКлиентСервер.ПолучитьИмяФайлаПланировки(ДанныеПланировки.ФайлПланировки, "Расположение объекта");
		Файл = Новый Файл(СохранятьКак);
		ИмяФайла = Файл.Имя;
	#КонецЕсли
	
	ОбрабатыватьШаблоныИПланировкиНаКлиенте = НЕ ЭтоВебКлиент И АР_ОбщиеПроцедуры.ПолучитьЗначениеКонстанты("АР_ОбрабатыватьШаблоныИПланировкиНаКлиенте");
	
	Если ОбрабатыватьШаблоныИПланировкиНаКлиенте Тогда
		АдресХранилища = АР_ОбщиеПроцедурыКлиентСервер.ОтобразитьНаПланировкеОбъект(ДанныеПланировки);
		Если НЕ АдресХранилища = Неопределено Тогда
			ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресХранилища);
			ДвоичныеДанные.Записать(СохранятьКак);
			ЗапуститьПриложение(СохранятьКак);
		КонецЕсли;
	Иначе
		ДанныеФайла = АР_ОбщиеПроцедуры.ПолучитьГрафическийОбъект(ДанныеПланировки, СохранятьКак);
		Если НЕ ДанныеФайла = Неопределено Тогда
			
			ДополнительныеПараметры = Новый Структура;
			ДополнительныеПараметры.Вставить("ДанныеФайла", ДанныеФайла);
			ДополнительныеПараметры.Вставить("СохранятьКак", СохранятьКак);
			ДополнительныеПараметры.Вставить("ИмяФайла", ИмяФайла);
			
			ОписаниеОповещения = Новый ОписаниеОповещения("РасположениеНаПланеРасширениеПредложено", ЭтотОбъект, ДополнительныеПараметры);
			ОбщегоНазначенияКлиент.ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(ОписаниеОповещения);
			
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры
Показать


Уже всю голову изломал где может быть затык(
+
4. kuzev 47 21.09.17 16:11 Сейчас в теме
(3) ПолучитьФайл замените на НачатьПолучениеФайлов (http://v8.1c.ru/o7/201412async/index.htm).
+
5. user766950 21.09.17 16:26 Сейчас в теме
(4)
НачатьПолучениеФайлов

Не задан рабочий каталог
+
6. kuzev 47 21.09.17 16:32 Сейчас в теме
(5) справку по функции посмотрите =)
+
7. user766950 22.09.17 10:18 Сейчас в теме
Теперь получаю останов на блоке
ФайлМожноОткрывать = ПрисоединенныеФайлыСлужебныйКлиент.ПолучитьФайлВРабочийКаталог(
                ДанныеФайла.СсылкаНаДвоичныеДанныеФайла,
                "",
                ТекущаяДата(),
                ИмяФайла,
                КаталогВременныхФайлов(),
                ПолныйПуть
            );
Прикрепленные файлы:
+
8. kuzev 47 22.09.17 17:05 Сейчас в теме
(7) потому что вызываемой функции общего модуля выполняется синхронный вызов ПолучитьФайлы(ПолучаемыеФайлы, ПолученныеФайлы, , Ложь):

Функция ПолучитьФайлВРабочийКаталог(Знач АдресДвоичныхДанныхФайла,
                                    Знач ОтносительныйПуть,
                                    Знач ДатаМодификацииУниверсальная,
                                    Знач ИмяФайла,
                                    Знач РабочийКаталогПользователя,
                                    ПолноеИмяФайлаНаКлиенте)
	
	Если РабочийКаталогПользователя = Неопределено
	 ИЛИ ПустаяСтрока(РабочийКаталогПользователя) Тогда
		
		Возврат Ложь;
	КонецЕсли;
	
	КаталогСохранения = РабочийКаталогПользователя + ОтносительныйПуть;
	
	Попытка
		СоздатьКаталог(КаталогСохранения);
	Исключение
		СообщениеОбОшибке = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
		СообщениеОбОшибке = НСтр("ru = 'Ошибка создания каталога на диске:'") + " " + СообщениеОбОшибке;
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеОбОшибке);
		Возврат Ложь;
	КонецПопытки;
	
	Файл = Новый Файл(КаталогСохранения + ИмяФайла);
	Если Файл.Существует() Тогда
		Файл.УстановитьТолькоЧтение(Ложь);
		УдалитьФайлы(КаталогСохранения + ИмяФайла);
	КонецЕсли;
	
	ПолучаемыйФайл = Новый ОписаниеПередаваемогоФайла(КаталогСохранения + ИмяФайла, АдресДвоичныхДанныхФайла);
	ПолучаемыеФайлы = Новый Массив;
	ПолучаемыеФайлы.Добавить(ПолучаемыйФайл);
	
	ПолученныеФайлы = Новый Массив;
	
	Если ПолучитьФайлы(ПолучаемыеФайлы, ПолученныеФайлы, , Ложь) Тогда
		ПолноеИмяФайлаНаКлиенте = ПолученныеФайлы[0].Имя;
		Файл = Новый Файл(ПолноеИмяФайлаНаКлиенте);
		Файл.УстановитьУниверсальноеВремяИзменения(ДатаМодификацииУниверсальная);
		Возврат Истина;
	КонецЕсли;
	
	Возврат Ложь;
	
КонецФункции
Показать

Также вызывается СоздатьКаталог() вместо НачатьСозданиеКаталога().
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот