Программная установка разного основного стиля конфигурации для мобильного клиента и для тонкого клиента

1. Ukubaeva 21.09.20 17:48 Сейчас в теме
Здравствуйте!
Платформа 1С:Предприятие 8.3 (8.3.17.1549)
Конфигурация самописная
Возможно ли программно установить свойство конфигурации Основной стиль так, чтобы если это мобильный клиент, то устанавливался один стиль, а во всех остальных случаях - другой?
Цитата из My Webpage

Кроме непосредственного указания основного стиля в Конфигураторе, вы можете сделать это и с помощью встроенного языка. В контекст управляемого приложения мы вернули свойство глобального контекста ГлавныйСтиль. Устанавливать это свойство вам нужно в обработчике события УстановкаПараметровСеанса()

В моей конфигурации это не работает

Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)
	
	//ГлавныйСтиль = БиблиотекаСтилей["zmed_Основной"];
	#Если МобильныйАвтономныйСервер Тогда
		ГлавныйСтиль = БиблиотекаСтилей["zmed_СтильМобКлиент"];
	#КонецЕсли

	// СтандартныеПодсистемы
	СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса);
	// Конец СтандартныеПодсистемы
	
	// ПодключаемоеОборудование
	УстановленныеПараметры=Новый Массив;
	МенеджерОборудованияВызовСервера.УстановитьПараметрыСеансаПодключаемогоОборудования("РабочееМестоКлиента", УстановленныеПараметры);
	// Конец ПодключаемоеОборудование
	
КонецПроцедуры
Показать


Текст ошибки -
Свойство не может быть изменено после вызова 'УстановкаПараметровСеанса'

Спасибо!
По теме из базы знаний
Найденные решения
3. comptr 35 22.09.20 07:17 Сейчас в теме
При запуске конфигурации процедура УстановкаПараметровСеанса вызывается неоднократно, а установить ГлавныйСтиль можно только один раз.
При первом вызове этой процедуры её параметр = Неопределено, от этого и нужно оттолкнуться.
Если ИменаПараметровСеанса = Неопределено Тогда
#Если МобильныйАвтономныйСервер Тогда
        ГлавныйСтиль = БиблиотекаСтилей["zmed_СтильМобКлиент"];
    #КонецЕсли
КонецЕсли;
ret-Phoenix; JohnyDeath; Ukubaeva; +3 Ответить
5. comptr 35 22.09.20 09:35 Сейчас в теме
(4)
Свойство не может быть изменено после вызова 'УстановкаПараметровСеанса'

текст ошибки намекает, что это не первый вызов.
Ukubaeva; +1 Ответить
12. Ukubaeva 23.09.20 16:43 Сейчас в теме
Ура! Хороший метод найден! Вот он

Если ИменаПараметровСеанса = Неопределено Тогда
		//Если РольДоступна("zmed_МобКлиент") Тогда
			Если ПолучитьТекущийСеансИнформационнойБазы().ИмяПриложения = "MobileClient" Тогда
				ГлавныйСтиль = БиблиотекаСтилей["zmed_СтильМобКлиент"];
			КонецЕсли;
		//КонецЕсли;
	КонецЕсли;
	// СтандартныеПодсистемы
	СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса);
	// Конец СтандартныеПодсистемы
	
	// ПодключаемоеОборудование
	УстановленныеПараметры=Новый Массив;
	МенеджерОборудованияВызовСервера.УстановитьПараметрыСеансаПодключаемогоОборудования("РабочееМестоКлиента", УстановленныеПараметры);
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. BackinSoda 21.09.20 23:23 Сейчас в теме
(1) а в модуле приложения если попробовать, то что выйдет ? Может быть другой символ должен быть "МобильноеПриложениеСервер" ? или может от обратного, "Если не Сервер Тогда"
Ukubaeva; +1 Ответить
3. comptr 35 22.09.20 07:17 Сейчас в теме
При запуске конфигурации процедура УстановкаПараметровСеанса вызывается неоднократно, а установить ГлавныйСтиль можно только один раз.
При первом вызове этой процедуры её параметр = Неопределено, от этого и нужно оттолкнуться.
Если ИменаПараметровСеанса = Неопределено Тогда
#Если МобильныйАвтономныйСервер Тогда
        ГлавныйСтиль = БиблиотекаСтилей["zmed_СтильМобКлиент"];
    #КонецЕсли
КонецЕсли;
ret-Phoenix; JohnyDeath; Ukubaeva; +3 Ответить
4. Ukubaeva 22.09.20 09:21 Сейчас в теме
(3)Спасибо, но это проверила первым делом - нет, и по отладчику эта ошибка возникает с самого первого входа в процедуру.
5. comptr 35 22.09.20 09:35 Сейчас в теме
(4)
Свойство не может быть изменено после вызова 'УстановкаПараметровСеанса'

текст ошибки намекает, что это не первый вызов.
Ukubaeva; +1 Ответить
6. Ukubaeva 22.09.20 10:45 Сейчас в теме
(5)Да это понятно, и на форуме поиском я нашла похожую ситуацию и такой же ответ, и попробовала это написать в своем коде. Вчера в другой базе ругалось на саму эту строчку
Если ИменаПараметровСеанса = Неопределено Тогда
Сегодня сделала в другой базе - все ок. Но проблема еще в другом - нельзя использовать само это условие
 #Если МобильныйАвтономныйСервер Тогда
потому что в начале модуля написано
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
Можно конечно, туда дописать еще
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение или МобильныйАвтономныйСервер Тогда
но не факт, что в мобильном клиенте при запуске сервер будет автономный. В общем, пока как условие использовала признак роли пользователя моильного клиента. Временное быстрое решение. Как будет время, подумаю, как это грамотнее и красивее сделать. Спасибо!
7. comptr 35 22.09.20 11:12 Сейчас в теме
(6)
Вчера в другой базе ругалось на саму эту строчку

А что именно было написано? Потому что в разных версиях платформы само имя параметра у процедуры УстановкаПараметровСеанса меняется, и если не глядя скопипастить, можно получить ошибку о неизвестной переменной.
Ukubaeva; +1 Ответить
9. Ukubaeva 22.09.20 11:15 Сейчас в теме
(7)нет, я не копипастила, я писала то имя, которое было у меня. И это было еще до того, как искала здесь, так что и копипастить было нечего. А что писало, уже не помню.
8. comptr 35 22.09.20 11:15 Сейчас в теме
(6) Если я правильно понимаю, то МобильныйАвтономныйСервер - это в том числе и Сервер, так что конструкцию "#Если МобильныйАвтономныйСервер Тогда" можно вложить внутрь "#Если Сервер ...Тогда"
Ukubaeva; +1 Ответить
10. Ukubaeva 22.09.20 11:19 Сейчас в теме
(8)так мне нужно, чтобы для пользователей мобильного клиента устанавливался один стиль конфигурации, а для всех остальных - другой.
11. Ukubaeva 22.09.20 15:02 Сейчас в теме
(8)попробовала, не срабатывает
12. Ukubaeva 23.09.20 16:43 Сейчас в теме
Ура! Хороший метод найден! Вот он

Если ИменаПараметровСеанса = Неопределено Тогда
		//Если РольДоступна("zmed_МобКлиент") Тогда
			Если ПолучитьТекущийСеансИнформационнойБазы().ИмяПриложения = "MobileClient" Тогда
				ГлавныйСтиль = БиблиотекаСтилей["zmed_СтильМобКлиент"];
			КонецЕсли;
		//КонецЕсли;
	КонецЕсли;
	// СтандартныеПодсистемы
	СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса);
	// Конец СтандартныеПодсистемы
	
	// ПодключаемоеОборудование
	УстановленныеПараметры=Новый Массив;
	МенеджерОборудованияВызовСервера.УстановитьПараметрыСеансаПодключаемогоОборудования("РабочееМестоКлиента", УстановленныеПараметры);
Показать
Оставьте свое сообщение

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