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

01.04.22

Разработка - БСП (Библиотека стандартных подсистем)

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

 

Введение

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

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

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

Разработка будет вестись (на момент написания статьи - конец марта 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.

 

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

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

 

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

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

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

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

 

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

 

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

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

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

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

 

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

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

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

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

 

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

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

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

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

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

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

 

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

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

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

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

стандартные подсистемы БСП режим диалога получение параметров системы

См. также

Шаблон многопоточного выполнения фонового задания

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Пример шаблона для многопоточного выполнения фонового задания на основе БСП. Шаблоны сделаны для процедуры и функции.

2 стартмани

03.05.2024    649    6    Hitcher    2    

7

БСП. Добавляем отчет в меню Отчеты

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Добавим новый отчет в меню нового документа средствами БСП.

02.04.2024    3509    John_d    10    

92

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    2041    dimanich70    8    

14

Заполнение поля адреса в своей обработке [БСП]

Механизмы платформы 1С БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Небольшая шпаргалка по функциям БСП касательно адреса. Так скажем, еще один способ помимо https://infostart.ru/1c/articles/1060970/

12.02.2024    848    FilippovRI    0    

16

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

07.02.2024    2780    YA_418728146    11    

47

1С:БСП Дополнительные реквизиты и сведения

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Бесплатно (free)

В этой статье расскажем об архитектуре, использовании и особенностях реализации подсистемы «Свойства» из инструментария разработчика «1С:Библиотека стандартных подсистем» (1С: БСП).

19.01.2024    7246    PROSTO-1C    5    

47
Отзывы
7. quazare 3645 28.03.22 20:57 Сейчас в теме
Обработку с "диалогом пользователя" можете скачать https://github.com/quazareline/SSL-klients-and-dialogs
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. sergey279 111 23.03.22 12:32 Сейчас в теме
	ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеВопросаСервер", ЭтотОбъект);
	
	Кнопки = Новый СписокЗначений(); // здесь мы добавим пять произвольных кнопок   
	Кнопки.Добавить(1,"Задание 1");
	Кнопки.Добавить(2,"Задание 2");
	Кнопки.Добавить(3,"Задание 3");
	Кнопки.Добавить(4,"Задание 4");
	Кнопки.Добавить(5,"Задание 5");
	                                   
	ПоказатьВопрос(ОповещениеОЗакрытии, "Пойдешь на улицу?", Кнопки,10,1, "заголовок", 1);
Показать


По-моему оно и без БСП со списком значений работает.
_Sedoy; zaic; RocKeR_13; artbear; Teplotrassamen; +5 Ответить
11. mrSallivan 73 09.06.23 11:04 Сейчас в теме
(1) по фен-шую нужно использовать асинхрон
12. rule_2 48 15.01.24 07:26 Сейчас в теме
(11) Я бы с вами согласился 30 минут назад, пока не столкнулся с проблемой, которая привела меня сюда.

Привожу 2 примера:
первый - это платформенный ВопросАсинх
второй - СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю

В обоих случаях вопрос - это строка без переносов, в одну строку (простите за тавтологию). Платформа очень странно его форматирует, будто не предполагает длинных кнопок с вопросом.
Прикрепленные файлы:
2. davdykin 25 24.03.22 05:10 Сейчас в теме
Спасибо за статью. С одной стороны эта тема конечно интересна, т.к. есть куча плюшек которые уже реализованы и не надо изобретать велосипед, с другой стороны, то что 1С не вкурсе что такое "обратная совместимость" убивает, т.к. после обновления зачастую эта куча плюшек перестает работать и приходится просто, чтобы вернуть работоспособность - перелопачивать код.
8. Andronav 27.05.22 09:03 Сейчас в теме
(2) Т.е. БСП перестаёт поддерживать процедуры которые находятся в интерфейсной части её модулей? И как часто это происходит?
9. quazare 3645 27.05.22 10:08 Сейчас в теме
(8) Если вы об "устаревании" процедур и функций в самой БСП - то да, есть такая практика... так и пишут в комментарии "//устарела, следует использовать такую-то"..... сколько-то релизов БСП эта устаревшая функция еще существует в модулях
3. quazare 3645 24.03.22 06:34 Сейчас в теме
(2) все имеет свойство устаревать. По поводу использования БСП - просто удобно и экономия времени
4. davdykin 25 24.03.22 10:08 Сейчас в теме
(3) Все имеет свойство устаревать, но если вы в каждом обновлении тасуете процедуры между модулями и не оставляете в старых модулях, для обратной совместимости хотя бы "прокси", то вы сводите полезность своей БСП к 0, т.к. времени на то, чтобы напилить свой велосипед вместо БСП уйдет меньше, чем после каждой обновы у 10 клиентов править решения на основе бсп.
5. quazare 3645 24.03.22 10:11 Сейчас в теме
(4) да я согласен с вами, но почему-то последнее время у меня выходит так, что велосипеды пилятся как раз с помощью БСП...
6. davdykin 25 24.03.22 10:19 Сейчас в теме
(5)У меня в основном так. "О клевая процедура в бсп", выпиливаем ее в свой модуль - профит )
7. quazare 3645 28.03.22 20:57 Сейчас в теме
Обработку с "диалогом пользователя" можете скачать https://github.com/quazareline/SSL-klients-and-dialogs
10. ImHunter 315 21.02.23 18:26 Сейчас в теме
(6) А потом захотите полноценно затащить БСП - и уже не сможете. Т.к. будет надергана солянка из разных модулей разных версий.
Оставьте свое сообщение