Установка/снятие блокировки регламентных заданий (клиент-серверный вариант)

13.03.18

База данных - Инструменты администратора БД

Небольшая обработка для программного изменения свойств текущей информационной базы (клиент-сервер), в частности свойства ScheduledJobsDenied - признака блокировки выполнения регламентных заданий информационной базы. Тестировал в 8.3.10.2667 (OS Windows, MS SQL 2008).

Файлы

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

Наименование Скачано Купить файл
Установка/снятие блокировки регламентных заданий (клиент-серверный вариант):
.epf 7,28Kb
61 2 500 руб. Купить

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

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

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

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

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

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

В общем, основная процедура из модуля обработки в тексте.

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

// Функция - Блокировка регламентных заданий в текущей информационной базе
//
// Параметры:
//  УстановитьБлокировку - Булево - Если задан, то производится попытка изменить состояние блокировки регламентных заданий
// 
// Возвращаемое значение:
// Булево - состояние блокировки после установки нового состояния.
// Неопределено - в случае, если невозможно изменить состояние блокировки регламетных заданий
//
Функция БлокировкаРегламентныхЗаданий(УстановитьБлокировку = Неопределено) Экспорт
	АдминистраторИБ = Новый Структура("Имя, Пароль", "username", "password");
	
	СтруктураСоединения = ПолучитьСтруктуруСоединенияИнформационнойБазы();
	
	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С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    78637    398    171    

338

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    27567    101    46    

107

Разработка Инструменты администратора БД Администрирование веб-серверов Администрирование Программист 1C:ERP Платные (руб)

Это специализированное решение для глубокого анализа и мониторинга серверов и баз данных 1С. Продукт позволяет выявлять причины замедлений, блокировок и ошибок, объединяя данные технологического журнала, СУБД и оборудования в единой интерактивной системе.

90000 руб.

13.05.2026    1827    2    0    

5

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14640 руб.

29.04.2020    51995    142    164    

96

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 1С 8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.04.2026, версия 1.4.1, работает в 1С:ФРЕШ!

23180 руб.

06.12.2023    24394    83    14    

116

Информационная безопасность Инструменты администратора БД Инструментарий разработчика Учет документов Системный администратор Программист Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С 8.5 Розничная и сетевая торговля (FMCG) Платные (руб)

Контроль ввода данных в 1С: проверка заполнения реквизитов, обязательные поля, контроль перед записью и проведением, запрет проведения документа. Позволяет настраивать любые проверки данных в 1С 8.3/8.5 от обязательных полей до сложных условий – без открытия конфигуратора и написания кода. Готовое расширение, которое подключается и работает сразу.

6000 руб.

15.04.2026    3407    8    0    

22
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. aspirator23 342 17.03.18 14:30 Сейчас в теме
Консоль не понравилась?
2. jwslavin 26 19.03.18 07:52 Сейчас в теме
(1) Чай не девушка, чтобы нравиться :) А если серьезно, то и консолью пользуюсь. Но специфика работы моей главной базы в том, что фоновые задания обращаются к внешним компонентам и при принудительной остановке сеанса эти компоненты иногда чудят. Проще запретить регламентные задания, а пользователям дать минут 5-10 на аккуратное завершение. И все это из одного окна (клиент-то уже как правило запущен), ибо лень. Короче, частный случай.
3. aspirator23 342 19.03.18 11:13 Сейчас в теме
В консоли не пробовал регламентные задания выключать?
4. jwslavin 26 19.03.18 14:06 Сейчас в теме
(3) Выключал. Надоело запускать еще одно окно. Чего ж непонятного-то?
5. Yashazz 4933 07.07.21 10:59 Сейчас в теме
Спасибо за подтверждение гипотезы насчёт UpdateInfoBase, а то в СП ерунда написана, что, мол, "только descr меняет", ага щаз.
6. Prog01 1 02.06.22 19:29 Сейчас в теме
В управляемых формах сие не работает.
7. evpe75 24.10.22 14:43 Сейчас в теме
Отличная обработка, очень пригодилась, респект автору.
8. lastpioneer 245 24.05.23 10:07 Сейчас в теме
К сожалению не всегда имя сервера (srv) и имя кластера одно и то же :(
и вот эта строка не работает:

Если Нрег(Кластер.HostName) = Нрег(СтруктураСоединения.Srvr) Тогда


В связи с тем, что у меня один кластер, сделал так:

	МассивКластеров = МассивКластеровКОМ.Выгрузить();
	
	КоличествоКластеров = МассивКластеров.Количество();
	
	Если КоличествоКластеров = 1 Тогда  
		КластерТекущий = МассивКластеров[0];
	Иначе
		Для Каждого Кластер Из МассивКластеров Цикл
			Если Нрег(Кластер.HostName) = Нрег(СтруктураСоединения.Srvr) тогда
				КластерТекущий = Кластер;
				Прервать;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
Показать


Для количества Кластеров более одного требуется в строку параметров, ещё добавлять имя Кластера.

Или можно по порту определять нужный кластер?
9. frkbvfnjh 825 02.06.26 08:36 Сейчас в теме
Не работает на 8.3.25. В свойстве РабочийПроцесс.HostName у меня строка "lic300", а в РабочийПроцесс.MainPort всегда 0. Ходят слухи, что теперь как то по другому нужно делать, без ConnectWorkingProcess и вообще без WorkingProcess
Для отправки сообщения требуется регистрация/авторизация