Monday, September 23, 2013

Программно установить в 1С 8.2 блокировку регламентных заданий

Возникла проблема с УТ11, при установке блокировки пользователей, надо не забывать устанавливать вручную в консоли администрирования серверов в определенной базе «галку» по блокировке регламентных задач.
Порывшись с нете однозначного решения как это сделать не нашел, поэтому предлагаю свой версию доработки:




Exported from Notepad++



// Установить или снять блокировку информационной базы,
// исходя из значений реквизитов обработки.
//
Процедура ВыполнитьУстановку() Экспорт

Блокировка = Новый БлокировкаСеансов;
Блокировка.Начало = НачалоДействияБлокировки;
Блокировка.Конец = ОкончаниеДействияБлокировки;
Блокировка.Сообщение = СоединенияИБ.СформироватьСообщениеБлокировки(Сообщение, КодРазрешения);
Блокировка.Установлена = БлокировкаУстановкиСоединенийВключена;
Блокировка.КодРазрешения = КодРазрешения;


УстановитьБлокировкуСеансов(Блокировка);

ТекСтруктураИмен = МастерПроцедурыСервера.ВозвратСтруктурыИменСервераИБазы();

ИмяСервера = ТекСтруктураИмен.ИмяСервера;
ИмяБазы = ТекСтруктураИмен.ИмяБазы;

Коннектор = Новый COMОбъект("v82.COMConnector");
Агент = Коннектор.ConnectAgent(ИмяСервера);
Кластеры = Агент.GetClusters();

Для каждого Кластер из Кластеры Цикл
АдминистраторКластера = "COMConnector";
ПарольКластера = "COMConnector";
Агент.Authenticate(Кластер, , );
Процессы = Агент.GetWorkingProcesses(Кластер);
Для каждого Процесс из Процессы Цикл

Порт = Процесс.MainPort;
// теперь есть адрес и порт для подключения к рабочему процессу
РабПроц = Коннектор.ConnectWorkingProcess(ИмяСервера + ":" + СтрЗаменить(Порт, Символы.НПП, ""));
РабПроц.AddAuthentication("ИмяПользователя", "ПарольПользователя");

ИнформационнаяБаза = "";

Базы = РабПроц.GetInfoBases();
Для каждого База из Базы Цикл
Если НРег(База.Name) = НРег(ИмяБазы) Тогда
База.ScheduledJobsDenied = БлокировкаУстановкиСоединенийВключена;
РабПроц.UpdateInfoBase(База);
ИнформационнаяБаза = База;
Прервать;
КонецЕсли;
КонецЦикла;

КонецЦикла;
КонецЦикла;

Коннектор = Неопределено;
Агент = Неопределено;
Кластеры = Неопределено;


КонецПроцедуры


No comments:

Post a Comment