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

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 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Розница 3.0 Абонемент ($m)

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

1 стартмани

14.09.2023    368    1    itmind    0    

10

Оптимизация персонализированных рассылок отчетов в БСП

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

Представленная в публикации разработка позволяет оптимизировать персонализированную рассылку отчетов БСП за счет предварительной выборки получателей отчетов.

1 стартмани

10.07.2023    826    0    Sirruf    0    

3

Снова об использовании ТекущаяДата() на клиенте и на сервере и о работе в разных часовых поясах

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

Можно ли применять ТекущаяДата() вопреки требованиям стандартов 1С? Безопасно ли использование функции ОбщегоНазначенияКлиент.ДатаСеанса() из БСП? Как правильно поступать при работе пользователей в разных часовых поясах?

24.04.2023    5656    Alxby    26    

45

Печать в WORD при помощи БСП. Вывод уникальных ссылок в строки таблицы

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

Пример вывода уникальных ссылок в строку таблицы макета WORD при печати с помощью БСП. Может быть полезна при создании интерактивных прайсов.

03.04.2023    1293    user1575928    0    

18

Учим БСП печатать активные ссылки и подложку в документе WORD

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

Небольшое расширение БСП для печати в WORD. Добавлена печать активных ссылок, подложки документа, и фона страницы.

1 стартмани

13.03.2023    1646    4    user1575928    0    

7

Многопоточное выполнение процедуры с помощью ДлительныеОперации

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

В публикации: Приведен шаблон для запуска многопоточной операции для различных вариантов размещения многопоточной операции, в том числе в модуле объекта внешней обработки, встроенной в справочник Дополнительные отчеты и обработки; Представлен вариант корректного отображения прогресса многопоточной операции; Приведены замеры, демонстрирующие целесообразность использования нового механизма для увеличения производительности.

1 стартмани

26.02.2023    6236    egoriy111    24    

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