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

26.10.21

База данных - Администрирование СУБД

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

Введение

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

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

Данная публикация будет полезна прежде всего программистам-разработчикам, работающим с любыми современными типовыми конфигурациями в серверном режиме на Платформе 1С 8.3 и придерживающимся стандартов разработки. Методы, описываемые в статье, будут одинаково работать в любой современной типовой конфигурации с БСП.

Примеры данной статьи будут работать при условии, что у вас серверная база. Все примеры приведены для COM-соединения.

Изучение типовых типовых методов библиотеки стандартных подсистем, значительно сокращая время разработки обработок и расширений, не заставляя вас изобретать что-то свое.

Данный материал я условно разделил на две части, в которых я привожу два полезных практических примера: часть 1 - это сеансы и их удаление по фильтру, а часть 2 - это установка блокировок сеансов и регламентных заданий:

 

Часть 1. Получение сеансов информационной базы данных и их удаление по заданному фильтру.

Для начала рассмотрим одну из основных функций 

СеансыИнформационнойБазы(Знач ПараметрыАдминистрированияКластера, Знач ПараметрыАдминистрированияИБ, Знач Фильтр = Неопределено)

Данная функция возвращает структуру, содержащую сеансы подключения к информационной базе данных, например:

СеансыИнформационнойБазы

 

	
// конструктор соединения к кластеру
АдминКластера   = АдминистрированиеКластера.ПараметрыАдминистрированияКластера();
	
АдминКластера.АдресАгентаСервера = "localhost";
АдминКластера.ИмяАдминистратораКластера = "admin";
АдминКластера.ПарольАдминистратораКластера= "123456";
	
// конструктор соединения к базе данных
АдминИБ 		= АдминистрированиеКластера.ПараметрыАдминистрированияИнформационнойБазыКластера();
	
АдминИБ.ИмяВКластере = "ssl83test";
АдминИБ.ИмяАдминистратораИнформационнойБазы = "Администратор";
АдминИБ.ПарольАдминистратораИнформационнойБазы = "123456"; 
	
// получим сеансы соединения с ИБ
СеансыИБ 		= АдминистрированиеКластераCOM.СеансыИнформационнойБазы(АдминКластера, АдминИБ);

 

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

Рис.1 Структура сеанса, полученная функцией БСП СеансыИнформационнойБазы().

 

Теперь попробуем удалить полученные сеансы с помощью процедуры

УдалитьСеансыИнформационнойБазы(Знач ПараметрыАдминистрированияКластера, Знач ПараметрыАдминистрированияИБ, Знач Фильтр = Неопределено) Экспорт
    

фильтр сеанса я буду создавать структурой:

 
 Фильтр сеансов информационной базы данных

 

ФильтрУдаления = Новый Структура("ИдентификаторКлиентскогоПриложения");
ФильтрУдаления.ИдентификаторКлиентскогоПриложения = "Designer";

 

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

 
 Удаление сеанса "конфигуратора":
	АдминКластера   = АдминистрированиеКластера.ПараметрыАдминистрированияКластера();
	
	АдминКластера.АдресАгентаСервера = "localhost";
	АдминКластера.ИмяАдминистратораКластера = "admin";
	АдминКластера.ПарольАдминистратораКластера= "77777";
	
	АдминИБ 		= АдминистрированиеКластера.ПараметрыАдминистрированияИнформационнойБазыКластера();
	
	АдминИБ.ИмяВКластере = "ssl83test";
	АдминИБ.ИмяАдминистратораИнформационнойБазы = "Администратор";
	АдминИБ.ПарольАдминистратораИнформационнойБазы = "123456"; 
	
	// получим сеансы соединения с ИБ
	СеансыИБ 		= АдминистрированиеКластераCOM.СеансыИнформационнойБазы(АдминКластера, АдминИБ);
	
	
	ФильтрУдаления = Новый Структура("ИдентификаторКлиентскогоПриложения");
	ФильтрУдаления.ИдентификаторКлиентскогоПриложения = "Designer";
		
	//выкидываем занявшего конфигуратор
	АдминистрированиеКластераCOM.УдалитьСеансыИнформационнойБазы(АдминКластера, АдминИБ, ФильтрУдаления);

 

 

После применения данной процедуры у сотрудника, который занял конфигуратор и "ушел домой" выскочит вот такая известная надпись:

 

Рис.2.Выкидываем пользователя из конфигуратора.

 

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

Также возможна фильтрация и по другим параметрам. Вот некоторые из них:

 
 Словарь свойств сеансов

 

	Результат = АдминистрированиеКластера.СвойстваСеанса();
	
	Результат.Номер = "SessionID";
	Результат.ИмяПользователя = "UserName";
	Результат.ИмяКлиентскогоКомпьютера = "Host";
	Результат.ИдентификаторКлиентскогоПриложения = "AppID";
	Результат.ИдентификаторЯзыка = "Locale";
	Результат.МоментСозданияСеанса = "StartedAt";
	Результат.МоментПоследнейАктивностиСеанса = "LastActiveAt";
	Результат.БлокировкаСУБД = "blockedByDBMS";
	Результат.Блокировка = "blockedByLS";
	Результат.Передано = "bytesAll";
	Результат.ПереданоЗа5Минут = "bytesLast5Min";
	Результат.СерверныхВызовов = "callsAll";
	Результат.СерверныхВызововЗа5Минут = "callsLast5Min";
	Результат.ДлительностьСерверныхВызовов = "durationAll";
	Результат.ДлительностьТекущегоСерверногоВызова = "durationCurrent";
	Результат.ДлительностьСерверныхВызововЗа5Минут = "durationLast5Min";
	Результат.ПереданоСУБД = "dbmsBytesAll";
	Результат.ПереданоСУБДЗа5Минут = "dbmsBytesLast5Min";
	Результат.ДлительностьВызововСУБД = "durationAllDBMS";
	Результат.ДлительностьТекущегоВызоваСУБД = "durationCurrentDBMS";
	Результат.ДлительностьВызововСУБДЗа5Минут = "durationLast5MinDBMS";
	Результат.СоединениеСУБД = "dbProcInfo";
	Результат.ВремяСоединенияСУБД = "dbProcTook";
	Результат.МоментЗахватаСоединенияСУБД = "dbProcTookAt";
	Результат.Спящий = "Hibernate";
	Результат.ЗавершитьЧерез = "HibernateSessionTerminateTime";
	Результат.ЗаснутьЧерез = "PassiveSessionHibernateTime";
	Результат.ПрочитаноСДиска = "InBytesAll";
	Результат.ПрочитаноСДискаВТекущемВызове = "InBytesCurrent";
	Результат.ПрочитаноСДискаЗа5Минут = "InBytesLast5Min";
	Результат.ЗанятоПамяти = "MemoryAll";
	Результат.ЗанятоПамятиВТекущемВызове = "MemoryCurrent";
	Результат.ЗанятоПамятиЗа5Минут = "MemoryLast5Min";
	Результат.ЗаписаноНаДиск = "OutBytesAll";
	Результат.ЗаписаноНаДискВТекущемВызове = "OutBytesCurrent";
	Результат.ЗаписаноНаДискЗа5Минут = "OutBytesLast5Min";
	Результат.Лицензия = Новый ФиксированнаяСтруктура(Лицензия);
	Результат.ОписаниеСоединения = Новый ФиксированнаяСтруктура(ОписаниеСоединения);
	Результат.РабочийПроцесс = Новый ФиксированнаяСтруктура(РабочийПроцесс);

 

 

Данный метод вы можете применять на любой серверной базе, которая основана на библиотеке стандартных подсистем.

Теперь, переходим к части 2.

 

Часть 2. Установка блокировок соединений и регламентных заданий.

Теперь предлагаю рассмотреть еще одну полезную штуку - как установки блокировок соединений и регламентных заданий, так и регламентных заданий в частности.

Для понимания, установлена ли у нас блокировка регламентных заданий, воспользуемся функцией

БлокировкаРегламентныхЗаданийИнформационнойБазы(Знач ПараметрыАдминистрированияКластера, Знач ПараметрыАдминистрированияИБ) Экспорт,

которая вернет нам текущее состояние блокировки регламентных заданий для информационной базы.

Код выглядит вот так:

 
 Выясняем установлена ли блокировка регламентных заданий

 

	АдминКластера   = АдминистрированиеКластера.ПараметрыАдминистрированияКластера();
	
	АдминКластера.АдресАгентаСервера = "localhost";
	АдминКластера.ИмяАдминистратораКластера = "admin";
	АдминКластера.ПарольАдминистратораКластера= "77777";
	
	АдминИБ 		= АдминистрированиеКластера.ПараметрыАдминистрированияИнформационнойБазыКластера();
	
	АдминИБ.ИмяВКластере = "ssl83test";
	АдминИБ.ИмяАдминистратораИнформационнойБазы = "Администратор";
	АдминИБ.ПарольАдминистратораИнформационнойБазы = "123456"; 
	
	// состояние блокировки - у меня возвращает Истина
	Блокировка 	= АдминистрированиеКластераCOM.БлокировкаРегламентныхЗаданийИнформационнойБазы(АдминКластера, АдминИБ);

 

 

Заходим в консоль и смотрим, действительно "Да".

 

Рис.3.Блокировка регламентных заданий включена.

 

Теперь программно включим блокировку регламентных заданий, код будет вот такой:

 
 Снятие блокировки регламентных заданий

 

	АдминКластера   = АдминистрированиеКластера.ПараметрыАдминистрированияКластера();
	
	АдминКластера.АдресАгентаСервера = "localhost";
	АдминКластера.ИмяАдминистратораКластера = "admin";
	АдминКластера.ПарольАдминистратораКластера= "77777";
	
	АдминИБ 		= АдминистрированиеКластера.ПараметрыАдминистрированияИнформационнойБазыКластера();
	
	АдминИБ.ИмяВКластере = "ssl83test";
	АдминИБ.ИмяАдминистратораИнформационнойБазы = "Администратор";
	АдминИБ.ПарольАдминистратораИнформационнойБазы = "123456"; 
	
	// состояние блокировки - у меня возвращает Истина
	Блокировка 	= АдминистрированиеКластераCOM.БлокировкаРегламентныхЗаданийИнформационнойБазы(АдминКластера, АдминИБ);
	Сообщить(Блокировка);	
	
	// снимаем блокировку регламентных заданий
	АдминистрированиеКластераCOM.УстановитьБлокировкуРегламентныхЗаданийИнформационнойБазы(АдминКластера, АдминИБ, Ложь);
	Блокировка 	= АдминистрированиеКластераCOM.БлокировкаРегламентныхЗаданийИнформационнойБазы(АдминКластера, АдминИБ);


	// теперь, возвращает Ложь	
	Сообщить(Блокировка);

 

 

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

БлокировкаСеансовИЗаданийИнформационнойБазы(Знач ПараметрыАдминистрированияКластера, Знач ПараметрыАдминистрированияИБ) Экспорт.

Пример использования данной функции:

 
 Состояние блокировки сеансов и заданий информационной базы (Ложь или Истина)

 

	АдминКластера   = АдминистрированиеКластера.ПараметрыАдминистрированияКластера();
	
	АдминКластера.АдресАгентаСервера = "localhost";
	АдминКластера.ИмяАдминистратораКластера = "quazare";
	АдминКластера.ПарольАдминистратораКластера= "77777";
	
	АдминИБ 		= АдминистрированиеКластера.ПараметрыАдминистрированияИнформационнойБазыКластера();
	
	АдминИБ.ИмяВКластере = "ssl83test";
	АдминИБ.ИмяАдминистратораИнформационнойБазы = "Администратор";
	АдминИБ.ПарольАдминистратораИнформационнойБазы = "123456"; 
	
//возвращает структуру по блокировкам
	БлокировкаСеансовЗаданийСостояние 	= АдминистрированиеКластераCOM.БлокировкаСеансовИЗаданийИнформационнойБазы(АдминКластера, АдминИБ);

 


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

Рис.4.Возврат структуры по блокировкам базы данных.

 

Сейчас я "поиграюсь" с блокировками с помощью процедуры БСП

УстановитьБлокировкуСеансовИЗаданийИнформационнойБазы(Знач ПараметрыАдминистрированияКластера, Знач ПараметрыАдминистрированияИБ, Знач СвойстваБлокировкиСеансовИЗаданий) Экспорт.

 

Напишу код, где запрещу все сеансы на один день, но дам код разрешения. Код выглядит вот так:

 
 Запрет сеансов до определенной даты с кодом разрешения

 

	АдминКластера   = АдминистрированиеКластера.ПараметрыАдминистрированияКластера();
	
	АдминКластера.АдресАгентаСервера = "localhost";
	АдминКластера.ИмяАдминистратораКластера = "admin";
	АдминКластера.ПарольАдминистратораКластера= "77777";
	
	АдминИБ 		= АдминистрированиеКластера.ПараметрыАдминистрированияИнформационнойБазыКластера();
	
	АдминИБ.ИмяВКластере = "ssl83test";
	АдминИБ.ИмяАдминистратораИнформационнойБазы = "Администратор";
	АдминИБ.ПарольАдминистратораИнформационнойБазы = "123456"; 
	
	БлокировкаСеансовЗаданийСостояние 	= АдминистрированиеКластераCOM.БлокировкаСеансовИЗаданийИнформационнойБазы(АдминКластера, АдминИБ);
	
	
	// выношу конструктор структуру а код процедуры
    СтрБлок = Новый Структура("БлокировкаСеансов, ДатаС, ДатаПо, Сообщение, КодРазрешения,ПараметрБлокировки,БлокировкаРегламентныхЗаданий");
	
	СтрБлок.БлокировкаСеансов = истина;
	СтрБлок.ДатаС = СтроковыеФункцииКлиентСервер.СтрокаВДату("20.10.2021");
	СтрБлок.ДатаПо = СтроковыеФункцииКлиентСервер.СтрокаВДату("27.10.2021");
	СтрБлок.Сообщение="Соединения с ИБ заблокировал";
	СтрБлок.КодРазрешения="11";
	СтрБлок.ПараметрБлокировки="";	
	СтрБлок.БлокировкаРегламентныхЗаданий=истина;
	
	
	АдминистрированиеКластераCOM.УстановитьБлокировкуСеансовИЗаданийИнформационнойБазы(АдминКластера, АдминИБ, СтрБлок);
	

 

 

Заходим в консоль и видим, да - для этой базы все установлено (код писал 26.10.2021 - поэтому на один день).

 

Рис.5.Программно заблокировал базу для соединений и регламентных заданий с кодом разрешения.

 

Перейдем к заключению и выводам статьи.

 

Заключение и выводы

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

Все эксперименты для написания этой статьи проводились на платформе 1С - 8.3.19.1264 и последней версии (на момент написания статьи) чистой конфигурации БСП 3.1.5.208. Использовалось СОМ-соединение.

Спасибо за прочтение данного материала. Если статья вам понравилась - прошу поддержать ее.

 

Другие мои материалы по подсистемам БСП

Также прошу ознакомиться с другими моими статьями по функционалу библиотеки стандартных подсистем и типовым конфигурациям:

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

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

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

кластер 1с администрирование бсп

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

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

Синтакс-помощник БСП - cправочник по библиотекам стандартных подсистем и электронных документов. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП и БЭД.

3254 руб.

21.11.2024    14576    51    30    

59

БСП (Библиотека стандартных подсистем) Разработчик 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

Каждый раз, когда разработчик 1С пишет очередной цикл для свертки массива или использует конструкцию Попытка / Исключение для проверки наличия реквизита, где-то грустит один архитектор фирмы «1С». Мы привыкли изобретать велосипеды там, где в Библиотеке стандартных подсистем (БСП) уже давно лежат готовые, оптимизированные и протестированные на тысячах баз решения. Ниже — практическая подборка из 8 методов актуальных релизов БСП (3.X), которые сделают ваш код чище, быстрее и профессиональнее. Разберем на примерах «Было / Стало».

04.06.2026    13886    Kaliostr0    21    

36

Администрирование СУБД Системный администратор Разработчик Бесплатно (free)

Статья рассказывает об опыте перевода больших баз с MSSQL на Postgres и годовой эксплуатации после перехода. Показано, с какими ограничениями утилиты ibcmd можно столкнуться при миграции больших баз и какие подходы помогают безопасно обходить эти проблемы. Приведены наиболее интересные кейсы, выявленные в эксплуатации: особенности настроек Postgres, поведение оптимизатора, тонкости работы логики и статистики, а также редкие, но критичные ситуации с производительностью. Материал будет полезен тем, кто планирует переход на Postgres и хочет заранее понимать реальные риски, подводные камни и проверенные практики их преодоления.

20.04.2026    10440    berserg    12    

27

Адаптация типовых решений БСП (Библиотека стандартных подсистем) Кадровый учет ЭДО и ОФД 1C:Бухгалтерия 1С:Зарплата и кадры 7.7 1C:ERP 1С:ЗУП 1С:УТ 1С:ДО Платные (руб)

Наше расширение 1С Госключ обеспечивает интеграцию любой конфигурации 1С на базе БСП с мобильным приложением «Госключ», позволяя сотрудникам подписывать кадровые документы (КЭДО) и документы материальной ответственности (МОЛ, ПБ) усиленной электронной подписью прямо со смартфона. Решение автоматизирует формирование и отправку документов на подпись, отслеживает статусы подписания и хранит подписанные файлы непосредственно в базе 1С

25000 руб.

06.03.2026    2732    4    0    

5

БСП (Библиотека стандартных подсистем) Универсальные функции Разработчик 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

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

06.02.2026    25133    manul1c    7    

29

БСП (Библиотека стандартных подсистем) Разработчик 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)

Уже заезженная тема с выводом в Word макетов при помощи БСП, но некоторые коллеги все равно спрашивают. Поэтому размещаю тут материал, как это сделать за три простых шага. Решение, которым я успешно пользуюсь в случаях, когда не нужна универсальность подключаемых внешних печатных форм.

16.09.2025    9904    _seerco2002    0    

36

Анализ учета БСП (Библиотека стандартных подсистем) 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)

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

22.05.2025    6651    256    seperblunt    10    

31
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1409 26.10.21 12:34 Сейчас в теме
По коду жестко к COM завязано или есть возможность расширить под RAC/RAS?
3. toropkin_ev 10 26.10.21 16:45 Сейчас в теме
(2) А что это за конструктор?

(1) В БСП также есть общий модуль АдминистрированиеКластераRAS - замените в коде на него.
2. quazare 4020 26.10.21 13:04 Сейчас в теме
(1) это все настраивается в конструкторе АдминистрированиеКластера
4. vld1973 99 26.10.21 17:06 Сейчас в теме
Спасибо интересно, положу на полочку, как будет подходящая задача использую.
5. user820492 26.10.21 17:34 Сейчас в теме
Спасибо! Полезная статья!
6. quazare 4020 26.10.21 17:41 Сейчас в теме
(3) имелись ввиду такие функции-конструкторы:

Функция ПараметрыАдминистрированияКластера() Экспорт
	
	Результат = Новый Структура();
	
	Результат.Вставить("ТипПодключения", "COM"); // "COM" или "RAS"
	
	// Только для "COM"
	Результат.Вставить("АдресАгентаСервера", "");
	Результат.Вставить("ПортАгентаСервера", 1540);
	
	// Только для "RAS"
	Результат.Вставить("АдресСервераАдминистрирования", "");
	Результат.Вставить("ПортСервераАдминистрирования", 1545);
	
	Результат.Вставить("ПортКластера", 1541);
	Результат.Вставить("ИмяАдминистратораКластера", "");
	Результат.Вставить("ПарольАдминистратораКластера", "");
	
	Возврат Результат;
	
КонецФункции

Показать
7. teembox 08.09.22 11:07 Сейчас в теме
Полезный материал, спасибо
Для отправки сообщения требуется регистрация/авторизация