Имя: Пароль:
1C
1С v8
Как запретить выполнение регламентных заданий для тестовых баз
0 yabes
 
03.04.18
11:31
Добрый день. Для всех тестовых баз в кластере у нас стаяла галочка о блокировке регламентных заданий. А потом для одной из баз кто-то эту галочку снял и произошла неприятность. Поставлена задача учесть такой момент и предусмотреть, чтобы запрет выполнения регламентных заданий был прописан в коде. Как это лучше сделать?
1 Cool_Profi
 
03.04.18
11:33
Есть очень хороший метод. Называется "иппатьевский".

есть другой - отдельный сервер для тестовых баз.

Есть третий - поручить создание тестовых баз специально обученному человеку.
2 Быдло замкадное
 
03.04.18
11:34
программно можно получить путь к базе? ВОт и сравнить его с "1C_WORK" или как база у вас называется
3 Быдло замкадное
 
03.04.18
11:36
Что-то вроде
СтрокаСоединенияИнформационнойБазы.Содержит "1C_WORK" иначе Отказ = Истина.

ПО синтаксису уже сам
4 Адинэснег
 
03.04.18
11:37
сделайтие всем тестовым префикс/постфикс,  в каждом РЗ сделайте
Если ЭтоТестовая() Тогда
  Возврат;
КОнецесли;
5 mehfk
 
03.04.18
11:37
(0) Сделай так, как сделала 1С в типовых.
6 Cool_Profi
 
03.04.18
11:37
(4) И потом кто-нибудь забудет поставить этот префикс в новой тестовой базе...
7 Адинэснег
 
03.04.18
11:38
тут уже ипатьевский метод, к человеку ответственному за создание баз
8 Адинэснег
 
03.04.18
11:39
(5) типа спрашивать - перемещена ли база или это копия - тоже норм
9 Cool_Profi
 
03.04.18
11:40
(7) Так я сразу его и предложил. Самый действенный...
10 tesseract
 
03.04.18
11:43
(1) В последнем БСП база сама чует, что ее перенесли и спрашивает при старте включать регл задания или нет.
11 Быдло замкадное
 
03.04.18
11:44
НазваниеРабочейБазыНаСервере = "WORK";
СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();    Если Найти(СтрокаСоединения, НазваниеРабочейБазыНаСервере) = 0 Тогда
    Возврат;
КонецЕсли;
12 unregistered
 
03.04.18
11:46
(5) +1
https://its.1c.ru/db/bsp244doc#content:65:1:issogl2_настройка_зависимостей_регламентных_заданий_от_функциональных_опций

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

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

1. В состав определяемого типа МестоХраненияФункциональныхОпций добавить константы, соответствующие функциональным опциям, используемым для управления регламентными заданиями.

2. Добавить вставку в процедуре ПриОпределенииЗависимостейРегламентныхЗаданий общего модуля РегламентныеЗаданияПереопределяемый. Например:

Зависимость = Зависимости.Добавить();
Зависимость.РегламентноеЗадание = Метаданные.РегламентныеЗадания.ОбновлениеСтатусовДоставкиSMS;
Зависимость.ФункциональнаяОпция = Метаданные.ФункциональныеОпции.ИспользоватьПочтовыйКлиент;
Также можно настроить доступность регламентного задания в подчиненном узле РИБ, модели сервиса и необходимость отключения задания при перемещении информационной базы (подробнее см. комментарий к процедуре).

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

ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();
13 Вафель
 
03.04.18
11:58
(12) так это все равно нужно галочку ставить
14 unregistered
 
03.04.18
12:02
(13) Согласен. Решение не идеальное.
Но мы придерживаемся такого правила: в конфах-самописках рисуем любую пургу, какая нам нравится (хоть на строку подключения затачивайся). В типовых конфигурациях с БСП - используем типовые механизмы БСП (описанные в (12)).
15 tesseract
 
03.04.18
12:12
(13) Добавить константу "ТекущееМестоположение".

В "ПриЗавершенииРаботыСистемы" писать туда
СтрокаСоединенияИнформационнойБазы

В "ПередНачаломРаботыСистемы" сравнивать с текущей СтрокаСоединенияИнформационнойБазы.  Если она изменилась или просто блокировать Риг задания или выдавать запрос. Дальше - см (12)

Теперь главное не забывать после загрузки базы как можно быстрее заходить в режим предприятия.
16 Lama12
 
03.04.18
12:20
(0) У нас сделано так. При старте базы проверяется имя базы на сервере приложений. Если имя не такое как у рабочей то проверяется с полными правами запуск произведен или нет. Если нет, то идите лесом. Если с полными то делается следующее:
1. Делаются не активными все регламентные задания.
2. Во всех адресах электронной почты в базе подменяется домен на специальный тестовый.
3. Раньше обнулялись механизмы обмена РИБ (сейчас не используем)
4. Устанавливаются в истину блокирующие константы, которые блокируют выполнение тех или иных наших доработок по интеграции с другими системами.

Естественно это делается один раз. В дальнейшем за включение и отключение разного функционала отвечает тот кто владеет базой.
17 Sam1C
 
03.04.18
14:39
(0) Я как-то  делал как описано в (3) через проверку строки соединения Боевая база или тестовая. И самое интересное когда запускал в клиенте для теста все отрабатывало на ура. Когда стартовало в фоне всегда возвращало, что это тестовая. Но тогда времени не было разобраться забил. Хотя интересно почему в фоне не отрабатывало........
Основная теорема систематики: Новые системы плодят новые проблемы.