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

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 1С:ERP Управление предприятием 2 Бесплатно (free)

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

01.03.2024    1282    dimanich70    6    

13

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

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

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

12.02.2024    687    FilippovRI    0    

15

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

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

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

07.02.2024    2348    YA_418728146    11    

40

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

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

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

19.01.2024    5158    PROSTO-1C    5    

45

Бесплатный митап 9 февраля «Библиотеки и фреймворки на 1С и всё, что с этим связано»

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

Митап посвящен вопросам создания, использования и поддержке переиспользуемого кода при разработке решений на платформе 1С:Предприятие 8.

15.01.2024    3798    0    Infostart    0    

20

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

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

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

28.12.2023    4826    mrXoxot    11    

99
Отзывы
7. quazare 3586 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 47 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 3586 27.05.22 10:08 Сейчас в теме
(8) Если вы об "устаревании" процедур и функций в самой БСП - то да, есть такая практика... так и пишут в комментарии "//устарела, следует использовать такую-то"..... сколько-то релизов БСП эта устаревшая функция еще существует в модулях
3. quazare 3586 24.03.22 06:34 Сейчас в теме
(2) все имеет свойство устаревать. По поводу использования БСП - просто удобно и экономия времени
4. davdykin 25 24.03.22 10:08 Сейчас в теме
(3) Все имеет свойство устаревать, но если вы в каждом обновлении тасуете процедуры между модулями и не оставляете в старых модулях, для обратной совместимости хотя бы "прокси", то вы сводите полезность своей БСП к 0, т.к. времени на то, чтобы напилить свой велосипед вместо БСП уйдет меньше, чем после каждой обновы у 10 клиентов править решения на основе бсп.
5. quazare 3586 24.03.22 10:11 Сейчас в теме
(4) да я согласен с вами, но почему-то последнее время у меня выходит так, что велосипеды пилятся как раз с помощью БСП...
6. davdykin 25 24.03.22 10:19 Сейчас в теме
(5)У меня в основном так. "О клевая процедура в бсп", выпиливаем ее в свой модуль - профит )
7. quazare 3586 28.03.22 20:57 Сейчас в теме
Обработку с "диалогом пользователя" можете скачать https://github.com/quazareline/SSL-klients-and-dialogs
10. ImHunter 312 21.02.23 18:26 Сейчас в теме
(6) А потом захотите полноценно затащить БСП - и уже не сможете. Т.к. будет надергана солянка из разных модулей разных версий.
Оставьте свое сообщение