Каталог решений - Стандартные подсистемы БСП — параметры работы клиента и возможности диалогов

Стандартные подсистемы БСП — параметры работы клиента и возможности диалогов

Стандартные подсистемы БСП — параметры работы клиента и возможности диалогов

В наличии

В данной небольшой статье рассмотрим обработку параметров работы клиента и режим диалога (выбора вопроса) модулей «стандартные подсистемы» БСП.

Категория:

Описание

 

Введение

Всем доброго времени суток!

Давненько я не писал статей на ресурсе ввиду абсолютной нехватки времени. И вот сейчас, решил разобрать вместе с вами некоторые возможности библиотеки стандартных подсистем (БСП) в рамках модулей "стандартные подсистемы". Данную статью я разобью на две части.

В первой части данной статьи я предлагаю рассмотреть удобный функционал получения данных из обработки параметров клиента и использования  их на практике. А во второй части — пример режима "диалога" (выбора вопроса) в рамках возможностей библиотеки стандартных подсистем БСП.

Разработка будет вестись (на момент написания статьи — конец марта 2022 г.) в типовой конфигурации Библиотека стандартных подсистем — версия 3.1.6.137. Тестирование примеров — на Платформе 1с 8.3.20.1674 (64 бит).

Как всегда, данные подходы можно использовать в любых типовых конфигурация, в основе которых лежит типовая библиотека БСП.

Итак, переходим к первой части:

 

Часть 1. Использование возможностей функций "ПараметрыРаботыКлиентаПриЗапуске" и "ПараметрыРаботыКлиента".

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

Элементарный код использования на клиенте вот такой:

&НаКлиенте
Процедура Команда1(Команда)
	
	РезультатПриЗапуске = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске();  
	
КонецПроцедуры

 

Результат выполнения — это огромная фиксированная структура:

 

Рис.1. Структура — результат выполнения функции ПараметрыРаботыКлиентаПриЗапуске.

 

Рис.2. Структура (продолжение) — результат выполнения функции ПараметрыРаботыКлиентаПриЗапуске().

 

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

 

Рис.3. Структура (продолжение) — информация о настройке резервного копирования.

 

Рис.4. Структура (продолжение) — информация о блокировке сеансов.

 

Функция ПараметрыРаботыКлиента() возвращает несколько "урезанную" структуру данных:

Рис.5. Структура "урезанная"- результат выполнения функции ПараметрыРаботыКлиента().

 

Далее, я приведу простой пример использования функции ПараметрыРаботыКлиента(). Вот такой (получаю все подсистемы конфигурации из фиксированного соответствия):

&НаКлиенте
Процедура Команда1(Команда)
	
	РезультатПриЗапуске = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске(); 
	
	Для Каждого ИмяПодсистемы ИЗ РезультатПриЗапуске.ИменаПодсистем Цикл
		
		Сообщить(ИмяПодсистемы.Ключ); // Строка, например "ТехнологияСервиса.ЦентрКонтроляКачества"
		
	КонецЦикла;	

КонецПроцедуры

 

Затем, я могу посмотреть состав необходимой мне подсистемы и права на нее.

 

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

Для справки отмечу, что в данной структуре можно даже "нарыть" СНИЛС Администратора (через привязанное физическое лицо).

Теперь, перейдем ко второй части статьи. В ней мы рассмотрим процедуру диалога выбора (вопроса) пользователю — ПоказатьВопросПользователю().

 

Часть 2. ПоказатьВопросПользователю() — Процедура диалога выбора (вопроса) и ее основные возможности.

По-факту — это обычный "вопрос пользователю" — ПоказатьВопрос(), но достаточно более продвинутый, имеющий более гибкие настройки.

Сначала отмечу, что код ПоказатьВопросПользователю() в "базовом" использовании мало отличается от ПоказатьВопрос() и данная процедура выглядит вот так:

&НаКлиенте
Процедура Команда1(Команда) // БСП-шная версия
	
	ТекстВопроса = "Выбрать ответ на вопрос";
		
	ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеВопросаСервер", ЭтотОбъект);
	
    //В БСП можно работать как через "РежимДиалогаВопрос", так и через "СтруктуруКнопок"

	Кнопки = РежимДиалогаВопрос.ДаНетОтмена;
	
	СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(ОповещениеОЗакрытии, ТекстВопроса, Кнопки, );
	
КонецПроцедуры


&НаКлиенте
Процедура ЗадатьВопрос(Команда) // Версия через платформу

Оповещение = Новый ОписаниеОповещения("ПослеОтветаНаВопрос",ЭтотОбъект); 

// Здесь, ПоказатьВопрос работает через "РежимДиалогаВопрос"

ПоказатьВопрос(Оповещение, "Пойдешь на улицу?", РежимДиалогаВопрос.ДаНетОтмена,0,КодВозвратаДиалога.Да, "");

КонецПроцедуры

 

Типовой результат выполнения процедуры ПоказатьВопросПользователю() будет вот такой (обычный вопрос — "да", "нет", "отмена"):

 

Рис.6. Диалог ответа на вопрос через процедуру ПоказатьВопросПользователю(). Практически "аналог" показатьВопрос().

 

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

&НаКлиенте
Процедура Команда1(Команда)
	
	ТекстВопроса = "Нажмите на кнопку для выбора задания";
	
	ДополнительныеПараметры       = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();
	
	ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеВопросаСервер", ЭтотОбъект);
	
	ДопПараметры = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();
	
	ДопПараметры.КнопкаПоУмолчанию = 1; // отметим кнопку 1 (по-умолчанию)
	ДопПараметры.Таймаут = 10; // (посадим таймаут на кнопку 1)
	ДопПараметры.КнопкаТаймаута  = 1;
	ДопПараметры.Заголовок = "Выбор выполнения задания";
	ДопПараметры.ПредлагатьБольшеНеЗадаватьЭтотВопрос = Ложь;
	//
	//Кнопки = РежимДиалогаВопрос.ДаНетОтмена;
	//
	Кнопки = Новый СписокЗначений(); // здесь мы добавим пять произвольных кнопок
	Кнопки.Добавить(1,"Задание 1");
	Кнопки.Добавить(2,"Задание 2");
	Кнопки.Добавить(3,"Задание 3");
	Кнопки.Добавить(4,"Задание 4");
	Кнопки.Добавить(5,"Задание 5");
		
	СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(ОповещениеОЗакрытии, ТекстВопроса, Кнопки, ДопПараметры);
	
КонецПроцедуры


// Процедура "оповещения" выбора нажатия кнопки - далее идем по тому "пути", который выбрали:

&НаКлиенте
Процедура ПослеВопросаСервер(Ответ, ДополнительныеПараметры) Экспорт
	
	Если Ответ.Значение = 5 Тогда
		
		Сообщить("Нажата кнопка 5");
        ВыполнитьПроцедуруНаСервере5();  // можно и на сервере и на клиенте, конечно
		
	ИначеЕсли Ответ.Значение = 4 Тогда
		
		Сообщить("Нажата кнопка 4");
        ВыполнитьПроцедуруНаСервере4();
		
	ИначеЕсли Ответ.Значение = 3 Тогда
		
		Сообщить("Нажата кнопка 3");
        ВыполнитьПроцедуруНаСервере3();
		
	ИначеЕсли Ответ.Значение = 2 Тогда		
		
		Сообщить("Нажата кнопка 2");
        ВыполнитьПроцедуруНаСервере2();
		
	Иначе				
		Сообщить("Нажата кнопка 1 (по умолчанию, спустя 10 сек)");
		ВыполнитьПроцедуруПоУмолчаниюНаСервере();
	КонецЕсли;	
		
КонецПроцедуры

Здесь, я запускаю задание, в зависимости от нажатой кнопки. Причем, "Задание 1" — запускается по-умолчанию в течение 10 секунд.

 

В результате запроса диалога — мы получим вот такую форму:

 

Рис.7. Настройка диалога пользователя. Задание 1 начнет выполняться через 10 секунд по-умолчанию.

 

Согласно описанию вводных параметров процедуры в библиотеке стандартных подсистем, они могут быть такие:

//  Структура:

//    * КнопкаПоУмолчанию (Произвольный) - определяет кнопку по умолчанию по типу кнопки или по связанному с ней значению.

//    * Таймаут (Число)     - интервал времени в секундах до автоматического закрытия окна вопроса.

//    * КнопкаТаймаута (Произвольный) - кнопка (по типу кнопки или по связанному с ней значению), на которой отображается количество секунд, оставшихся доистечения таймаута.

//    * Заголовок (Строка)  - заголовок вопроса. 

//    * ПредлагатьБольшеНеЗадаватьЭтотВопрос (Булево) - если Истина, то в окне вопроса будет доступен одноименный флажок.

//    * БольшеНеЗадаватьЭтотВопрос (Булево) - принимает значение, выбранное пользователем в соответствующем флажке.

//    * БлокироватьВесьИнтерфейс (Булево)   - если Истина, форма вопроса открывается, блокируя работу всех остальных открытых окон, включая главное окно.

//    * Картинка   (Картинка) - картинка, выводимая в окне вопроса.

//    * ТекстФлажка  (Строка) - текст флажка "Больше не спрашивать".			

 

Пример работы данной процедуры выглядит вот так:

 

Рис.8. Демонстрация работы диалога пользователя возможностями Библиотеки стандартных подсистем 3.1.6.

 

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

Далее, предлагаю (в рамках данной статьи) — перейти в разделу "Мои материалы по возможностям БСП".

 

Мои материалы по возможностям Библиотеки стандартных подсистем (БСП)

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

Также прошу ознакомиться с другими моими статьями по интересному функционалу типовых конфигураций в рамках библиотеки стандартных подсистем и по разделам. Я накопил достаточный объем знаний по данной библиотеки, ниже наиболее интересные статьи по ней.

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

Так же вы можете подписаться на мой телеграмм канал https://t.me/quazareline

 

Обновленный список материалов по применению БСП на практике, доступных на этом ресурсе:

 

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

Профили управления доступом к объектам в любой конфигурации на БСП

Журнал регистрации — основные методы работы через БСП

Базовые приемы работы с кластером 1С при помощи БСП

 

Запуск длительных операций с помощью библиотеки стандартных подсистем:

Гарантированно рабочий пример использования длительных операций на БСП с отображением прогресса. [Часть 1]

Запуск почти любых процедур и функции конфигураций в асинхронном режиме — БСП — Длительные операции [Часть 2]

БСП — рабочие примеры асинхронного запуска функций и процедур

 

Работа со штрихкодами и печатными макетами с помощью библиотеки стандартных подсистем:

Генерация штрихкодов с помощью БСП для программистов

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

Печать макета MS Word в любом документе с помощью БСП

Префиксация объектов — полезный типовой функционал БСП

Работаем с контактной информацией в конфигурациях на БСП

 

Разные прикладные разработки:

Генератор маршрута по "документам отгрузки" в Google.Maps

Честный знак — запрос содержания упаковки по ее коду [табачная продукция]

Универсальный журнал документов для типовых конфигураций

has been added to your cart:
Оформление заказа