StandardServersManagement - Управление серверами. Доработки

29.06.26

Администрирование - Сервера

Небольшая модификация стандартной обработки 1С "Управление серверами". Добавлена возможность изменять порядок серверов и сохранять измененный порядок в настройках.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Управление серверами
.epf 599,22Kb
3 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

Стандартная обработка от 1С "Управление серверами" (StandardServersManagement) в целом довольно удобна - главное ее преимущество для меня - это возможность работать с серверами разных версий. Но есть и неудобства - список серверов невозможно упорядочить по своему желанию.

Возможность добавить сервера в нужном порядке существует только при начальном добавлении. Если вы сохраните/восстановите настройки, то порядок будет произвольным. И это обусловлено архитектурно. Добавленные сервера хранятся в настройках в виде структуры, порядок размещения элементов в структуре не гарантируется. Соответственно после добавления вы никак не можете изменить порядок серверов.

Предлагается небольшая доработка - возможность "двигать" сервера вверх/вниз по дереву, и сохранять/восстанавливать дерево серверов с сохранением порядка.

Вы можете сохранить встроенную обработку в файл - она входит в состав платформы. Как это сделать - можно посмотреть в публикации на инфостарт Получение обработок платформы.

Либо можете скачать уже модифицированную обработку.

План изменений:

  1. В основной форме "MainForm" добавляем две новых команды: "СдвинутьВверх", "СдвинутьВниз"
  2. Добавляем кнопки команд на форму
  3. Прописываем обработчики "сдвига" строк дерева
  4. Добавляем в сохраняемые настройки массив с порядком серверов
  5. При чтении настроек получаем массив порядка и используем его при построении дерева

Начнем с конца, т.к. именно в этом вся соль доработки - построение дерева с учетом порядка.
Вносим изменения в процедуру FillClusterTreeConnectionList - Заполнить дерево кластеров.

При получении настроек в переменную ConnectionSettingsToAdministrationServers получаем наши настройки порядка в переменную МассивПорядок: 

	....
	....
	//Вставка
	МассивПорядок = Неопределено;
	//КонецВставки
	If (Metadata.ScriptVariant = Metadata.ObjectProperties.ScriptVariant.English) Then 
		ConnectionSettingsToAdministrationServers = CommonSettingsStorage.Load("Common/AdministrationServersConnectionsParameters", "");
		//Вставка
		МассивПорядок = CommonSettingsStorage.Load("Common/AdministrationServersConnectionsParameters_Order", "");
		//КонецВставки
	ElsIf (Metadata.ScriptVariant = Metadata.ObjectProperties.ScriptVariant.Russian) Then
		ConnectionSettingsToAdministrationServers = CommonSettingsStorage.Load("Общее/ПараметрыПодключенияСерверовАдминистрирования", "");
		//Вставка
		МассивПорядок = CommonSettingsStorage.Load("Общее/ПорядокПодключенияСерверовАдминистрирования", "");
		//КонецВставки
	EndIf; 

далее в этой же процедуре перед циклом обхода полученной коллекции ConnectionSettingsToAdministrationServers перебираем нашу коллекцию МассивПорядок, получаем имя сервера, если находим его в стандартных настройках, то добавляем в дерево.

//Вставка
		Если МассивПорядок <> Неопределено Тогда
			Для Каждого КлючИмяСервера ИЗ МассивПорядок Цикл
				ЗначениеConnectionLine = ConnectionSettingsToAdministrationServers.Получить(КлючИмяСервера);
				Если ЗначениеConnectionLine <> Неопределено Тогда
					NewConnection = ConnectionTable.Add();
					NewConnection.Name = КлючИмяСервера;
					If (Metadata.ScriptVariant = Metadata.ObjectProperties.ScriptVariant.English) Then
						NewConnection.ServerAdministrationAddress = ЗначениеConnectionLine.Address;
						NewConnection.ServerAdministrationPort = ЗначениеConnectionLine.Port;
					ElsIf (Metadata.ScriptVariant = Metadata.ObjectProperties.ScriptVariant.Russian) Then
					    NewConnection.ServerAdministrationAddress = ЗначениеConnectionLine.Адрес;
						NewConnection.ServerAdministrationPort = ЗначениеConnectionLine.Порт;
					EndIf;	
					NewConnection.Login = "";
					NewConnection.Password = "";
				КонецЕсли;
			КонецЦикла;
		Иначе
			МассивПорядок = Новый Массив;
		КонецЕсли;
//КонецВставки

Другими словами мы повторяем стандартную процедуру добавления серверов, только делаем это в нужном нам порядке.

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

For each ConnectionLine In ConnectionSettingsToAdministrationServers Do
	//Вставка
	КлючИмяСервера = МассивПорядок.Найти(ConnectionLine.Key);
	Если КлючИмяСервера <> Неопределено Тогда
		Продолжить;
	КонецЕсли;
	//КонецВставки

Переходим к сохранению настроек порядка.
Делаем это в процедуре "SavingAdministrationConsoleSettings". В самом начале процедуры вставляем свой код - подготавливаем коллекцию МассивПорядок и сохраняем ее в настройках:

&AtServer
Procedure SavingAdministrationConsoleSettings(ConnectionSettings)
	....	
	....	
	//Вставка
	//Создадим массив и поместим туда значения в том порядке, в каком у нас они расположены в дереве
	ВерхняяКоллекцияДерева = ClusterTree.ПолучитьЭлементы();
	МассивПорядок = New Array();
	Если ВерхняяКоллекцияДерева.Количество() > 0 Тогда
		СтрокаЦентральныйСервер = ВерхняяКоллекцияДерева[0];
		КолллекцияСерверов = СтрокаЦентральныйСервер.ПолучитьЭлементы();
		Для Каждого СтрокаСервера ИЗ КолллекцияСерверов Цикл
			ИмяСервераКлюч = СтрокаСервера.Name;
			ЗначениеConnection = ConnectionSettings.Получить(ИмяСервераКлюч);
			Если ЗначениеConnection <>	Неопределено Тогда
				МассивПорядок.Add(ИмяСервераКлюч);
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
	If (Metadata.ScriptVariant = Metadata.ObjectProperties.ScriptVariant.English) Then 
		CommonSettingsStorage.Save("Common/AdministrationServersConnectionsParameters_Order", "", МассивПорядок);
	ElsIf (Metadata.ScriptVariant = Metadata.ObjectProperties.ScriptVariant.Russian) Then
		CommonSettingsStorage.Save("Общее/ПорядокПодключенияСерверовАдминистрирования", "", МассивПорядок);
	EndIf;
	//КонецВставки
	

Основное дело сделано. Остались мелочи - добавляем процедуры для обработки нажатия на кнопки сдвига вверх/вниз:

&НаКлиенте
Процедура СдвинутьЭлементДерева(Направление)
	
	ВерхняяКоллекцияЭлементов = ClusterTree.ПолучитьЭлементы();
	Если ВерхняяКоллекцияЭлементов.Количество() > 0 Тогда
		СтрокаЦентральныйСервер = ВерхняяКоллекцияЭлементов[0];
		
		ТекСтрока = Элементы.ClusterTree.ТекущаяСтрока;
		ТекДанные = ClusterTree.НайтиПоИдентификатору(ТекСтрока);
		
		Родитель = ТекДанные.ПолучитьРодителя();
		Если Родитель = СтрокаЦентральныйСервер Тогда
			ЭлементыРодителя = Родитель.ПолучитьЭлементы();
			ИндексТекЭлемента = ЭлементыРодителя.Индекс(ТекДанные);
			ЭлементыРодителя.Сдвинуть(ИндексТекЭлемента,Направление);
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СдвинутьВверх(Команда)
	
	СдвинутьЭлементДерева(-1);
	
КонецПроцедуры

&НаКлиенте
Процедура СдвинутьВниз(Команда)
	
	СдвинутьЭлементДерева(1);
	
КонецПроцедуры

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

Таким образом теперь стандартная обработка стала немного удобнее.

Если вы скачаете готовый файл, то обработку нужно добавить в базу через механизм дополнительных обработок. Стандартное подключение через БСП: Админстрирование / Печатные формы, отчеты и обработки / Дополнительные отчеты и обработки / Добавить...  Выбираете скачанный файл, указываете размещение (например, Администрирование) и указываете пользователей, кому будет доступна обработка - в общем все стандартно.

Проверено на следующих конфигурациях и релизах:

  • 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.11.466

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

обработка стандартная обработка StandardServersManagement управление серверами кластер

См. также

Сервера Системный администратор Бесплатно (free)

За считанные месяцы цены на серверное железо выросли в разы, а бюджеты компаний – нет, поэтому ошибка при подборе оборудования для 1С теперь обходится особенно дорого. Разбираем, почему логика «возьмем самое дорогое и производительное» здесь не работает, какие особенности памяти, дисков и серверных конфигураций нужно учитывать и где действительно можно сэкономить – от свертки базы до использования десктопного компьютера. Показываем, как продавцы могут предлагать вместо подходящих компонентов более выгодные им аналоги или неликвид и почему советы нейросетей о частоте процессора, конфигурациях и тесте Гилева нельзя принимать на веру. Объясняем, какие ошибки приводят к потере производительности и на чем при подборе сервера для 1С экономить нельзя.

08.09.2026    1408    7o2uYXg    1    

5

HighLoad оптимизация Сервера Системный администратор 1С 8.3 Абонемент ($m)

Снимает настройки кластера, рабочих серверов и баз штатным объектом платформы и по каждой пишет не значение, а последствие: не "резервирование = Ложь", а "при аварии сеансы базы завершатся, а не переедут". Только чтение.

10 стартмани

28.08.2026    1080    5    nedomolkov.ivan    0    

1

HighLoad оптимизация Сервера Системный администратор 1С 8.3 Бесплатно (free)

Поставил RAS, а кластер отвечает "различаются версии клиента и сервера". Открыл свойства сервера, а поля интервала перезапуска там больше нет. Разбор двух диалогов консоли: что вписывать в каждое поле и от чего это защищает.

28.08.2026    2046    nedomolkov.ivan    6    

2

HighLoad оптимизация Сервера Системный администратор 1С 8.3 Бесплатно (free)

Кластер достался настроенным кем-то другим: rphost растёт, к утру обмены не выполнены, а в консоли десятки значений, и непонятно, норма это или мина. Разбор того, чего стоят дефолты кластера на боевой базе и чем их читать, не открывая консоль.

28.08.2026    1914    nedomolkov.ivan    2    

3

HighLoad оптимизация Сервера Системный администратор Разработчик 1С 8.3 Бесплатно (free)

Сводная таблица показывала загрузку диска 97-99 % каждый день, и вывод напрашивался сам: диск упирается в потолок, надо расширять. Среднее по тому же ряду оказалось 4,24 %, а выше 80 % диск был в семи пятиминутных интервалах из 2016 - по одному на каждую ночь недели, это окно резервного копирования. В потолок диск не упирается. Потом тот же метод соврал в обратную сторону: на прореженном до пяти минут ряде исчезли пятнадцатисекундные провалы свободного места до 27 мегабайт. Одна ошибка чтения графиков дала два противоположных ложных вывода из одних данных. Настоящее узкое место сидело в памяти, и находок там две: растущий рабочий процесс сервера приложений и мёртвые сеансы терминального сервера. Разбираю, какие свойства кластера это ограничивают, какие три таймаута проверить, и показываю место, где мой собственный расчёт не сошёлся на три с половиной гигабайта.

19.08.2026    1909    nedomolkov.ivan    5    

3

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

Переносили боевую базу 276 ГБ с MS SQL на PostgreSQL. Перенос вставал четыре раза подряд, каждый раз через час и без единого сообщения об ошибке. Две гипотезы, взятые из чужих статей, замеры не подтвердили. Настоящей причиной оказался неразрывный пробел в наименовании номенклатуры: ICU схлопывает его с обычным, MS SQL считает строки разными, PostgreSQL одинаковыми, и уникальный индекс не создаётся. Разбор с цифрами, скриптом поиска и правилом вместо списка символов.

13.08.2026    1925    nedomolkov.ivan    2    

3

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

Перенесли базу 1С на 276 ГБ с Windows и MS SQL на Ubuntu и PostgreSQL. Главная неприятность оказалась вообще не про Linux, а вот восемь встреченных по дороге ловушек про него ровно настолько, что каждая стоила отдельного часа. Флаг виртуализации, который врёт; процессы, умирающие вместе с сессией; кластер с английской локалью; автотюнер с work_mem 512 МБ. Ни одной из них нет в чек-листах, которые я читал перед началом.

13.08.2026    1952    nedomolkov.ivan    2    

1
Для отправки сообщения требуется регистрация/авторизация