Имя: Пароль:
1C
 
Получение значение блокировки регл заданий
0 xteam777
 
12.12.25
11:25
Есть функция установки/получения/просмотра галки блокировки регл заданий. Но тут ИнформационнаяБазаТекущая.ScheduledJobsDenied всегда Ложь. Что не так?

Функция ПолучитьСтруктуруСоединенияИнформационнойБазы(Знач СтрокаСоединения = Неопределено) Экспорт
    Если СтрокаСоединения = Неопределено тогда
        СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
    КонецЕсли;
    
    Результат = Новый Структура;
    
    МассивПараметров = СтрРазделить(СтрокаСоединения, ";", Ложь);
    Для Каждого ПараметрМассива Из МассивПараметров Цикл
        Поз = СтрНайти(ПараметрМассива, "=");
        Ключ = ТРег(СокрЛП(Лев(ПараметрМассива,Поз-1)));
        Значение = СокрЛП(Сред(ПараметрМассива, Поз+1));
        Если Лев(Значение,1) = """" И Прав(Значение,1) = """" тогда
            Значение = Сред(Значение, 2, СтрДлина(Значение)-2);
        КонецЕсли;
        Попытка
        Результат.Вставить(Ключ, Значение);    
        Исключение
        КонецПопытки;
    КонецЦикла;
    
    Возврат Результат;
КонецФункции

// Функция - Блокировка регламентных заданий в текущей информационной базе
//
// Параметры:
//  УстановитьБлокировку - Булево - Если задан, то производится попытка изменить состояние блокировки регламентных заданий
//
// Возвращаемое значение:
// Булево - состояние блокировки после установки нового состояния.
// Неопределено - в случае, если невозможно изменить состояние блокировки регламетных заданий
//
Функция БлокировкаРегламентныхЗаданий(УстановитьБлокировку = Неопределено) Экспорт
    АдминистраторИБ = Новый Структура("Имя, Пароль", "Администратор", "ххх");
    
    СтруктураСоединения = ПолучитьСтруктуруСоединенияИнформационнойБазы();
    
    COMСоединитель = Новый COMОбъект("V83.COMConnector");
    Попытка
        СоединениеСАгентомСервера = COMСоединитель.ConnectAgent(СтруктураСоединения.Srvr);
    Исключение
        СоединениеСАгентомСервера = Неопределено;
    КонецПопытки;
    Если СоединениеСАгентомСервера = Неопределено тогда
        Возврат Неопределено;
    КонецЕсли;
    
    МассивКластеров = СоединениеСАгентомСервера.GetClusters();
    КластерТекущий = Неопределено;
    Для Каждого Кластер Из МассивКластеров Цикл
        Если Нрег(Кластер.HostName) = Нрег(СтруктураСоединения.Srvr) тогда
            КластерТекущий = Кластер;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Если КластерТекущий = Неопределено тогда
        Возврат Неопределено;
    КонецЕсли;
    СоединениеСАгентомСервера.Authenticate(КластерТекущий, "", "");
    
    МассивРабочихПроцессов = СоединениеСАгентомСервера.GetWorkingProcesses(КластерТекущий);
    ИнформационнаяБазаТекущая = Неопределено;
    Для Каждого РабочийПроцесс Из МассивРабочихПроцессов Цикл
        СоединениеСРабочимПроцессом = COMСоединитель.ConnectWorkingProcess("tcp://"+РабочийПроцесс.HostName+":"+Формат(РабочийПроцесс.MainPort,"ЧГ=0"));
        СоединениеСРабочимПроцессом.AddAuthentication(АдминистраторИБ.Имя, АдминистраторИБ.Пароль);
        МассивИнформационныхБаз = СоединениеСРабочимПроцессом.GetInfoBases();
        Для Каждого ИнформационнаяБаза Из МассивИнформационныхБаз Цикл
            Если Нрег(ИнформационнаяБаза.Name) = Нрег(СтруктураСоединения.Ref) тогда
                ИнформационнаяБазаТекущая = ИнформационнаяБаза;
                Прервать;
            КонецЕсли;
        КонецЦикла;
        Если НЕ ИнформационнаяБазаТекущая = Неопределено тогда
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Если ИнформационнаяБазаТекущая = Неопределено тогда
        Возврат Неопределено;
    КонецЕсли;
    
    Результат = Неопределено;
    Если ТипЗнч(УстановитьБлокировку) = Тип("Булево") тогда
        Попытка
            ИнформационнаяБазаТекущая.ScheduledJobsDenied = УстановитьБлокировку;
            СоединениеСРабочимПроцессом.UpdateInfoBase(ИнформационнаяБазаТекущая);
            Результат = ИнформационнаяБазаТекущая.ScheduledJobsDenied;
        Исключение
        КонецПопытки;
    Иначе
        Результат = ИнформационнаяБазаТекущая.ScheduledJobsDenied;
    КонецЕсли;
    
    Возврат Результат;
КонецФункции
1 Волшебник
 
12.12.25
11:28
Если Вы глотаете ошибки через Исключение КонецПопытки, то сами себе злобный Буратино
2 xteam777
 
12.12.25
11:31
Убрал попытки. но ошибок не возникает, просто всегда на выходе ложь
3 Волшебник
 
12.12.25
11:36
(2) Мы, джентльмены, верим друг другу на слово.