Регламентные задания: при поднятии BackUp в тестовую базу начинают выполняться, хотя это не нужно и бывает недопустимо

28.01.13

Разработка - Универсальные функции

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

В этом коде просто выполняется проверка, в какой базе выполняется это регламентное задание, если это ненужная мне база, я прерываю выполнение. Собственно, сам код для клиент-серверной архитектуры:
 


    СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();

   
ПолучитьИмяСервера = Сред(СтрокаСоединения, Найти(СтрокаСоединения, "Srvr")+6);

   
ПолучитьИмяСервера = Сред(ПолучитьИмяСервера, 1, Найти(ПолучитьИмяСервера, ";")-2);

   
ПолучитьИмяБазы = Сред(СтрокаСоединения, Найти(СтрокаСоединения, "Ref")+5);

   
ПолучитьИмяБазы = Сред(ПолучитьИмяБазы, 1, Найти(ПолучитьИмяБазы, ";")-2);



    Если
ВРег(ПолучитьИмяСервера) <> "SERVER" Или ВРег(ПолучитьИмяБазы) <> "BASE" Тогда

        Возврат;

    КонецЕсли;

 

где "SERVER" и "BASE" - это имя сервера 1с Предприятия и имя базы соответственно, должны указываться в верхнем регистре.

Код для файловой базы:


    СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();

   
ПолучитьПутьКБазе = Сред(СтрокаСоединения, Найти(СтрокаСоединения, "File")+6);

   
ПолучитьПутьКБазе = Сред(ПолучитьПутьКБазе, 1, Найти(ПолучитьИмяБазы, ";")-2);



    Если
ВРег(ПолучитьПутьКБазе) <> "C:\1CV8\BASE" Тогда

        Возврат;

    КонецЕсли;

 

Где "C:\1CV8\BASE" - путь к каталогу файловой базы, необходимо указать в верхнем регистре.

Понимаю, что есть еще множество разных решений, но вдруг кому пригодится.

См. также

Вставляем картинку из буфера обмена (платформа 1С 8.3.24)

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    2670    0    John_d    8    

54

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    4608    atdonya    22    

45

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

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

30.11.2023    3961    ke.92@mail.ru    16    

61

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8822    YA_418728146    6    

141

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2071    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

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

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16144    133    sapervodichka    112    

129

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7243    quazare    8    

109
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. SpartakM 71 29.01.13 00:35 Сейчас в теме
для серверной этот вариант не подойдет?
Прикрепленные файлы:
3. sazol 84 29.01.13 10:15 Сейчас в теме
(1) SpartakM, Ну конечно подойдет. Ну, а когда создали новую базу и туда подняли бэкап и забыли поставить, либо не знающий админ без программиста забыл поставить. А в коде если прописать то решается проблема забыть поставить флаг, либо если поднимет кто нибудь другой.

На личном опыте знаю)) У меня фин. дир. периодически на выходных поднимает себе бэкап для своих целей, и соответственно никто флаг не ставит.
10. theshadowco 238 30.01.13 05:22 Сейчас в теме
(1)у меня реализована подобная вещь, только через константу :), т.к. иногда в тестовых версия регламентные нужны, просто с другими настройками + хардкодить не люблю
(2)активно пользуюсь именно регламентными 1С, да, описанная вами проблема в 8.1 существует, но в сети есть варианты решений, а вот запускать клиентские сессии для выполнения некоторых регламентных процедур считаю не верным, по многим причинам.
2. Angeros 29.01.13 07:03 Сейчас в теме
Вообще с точки зрения надежности и администрирования регламентные задания 1с лучше вообще не использовать. бывало что одно из заданий по разным причинам валило весь кластер либо все предприятие все вылетали. прервать штатными средствами невозможно, можно только перезапустить службу 1с. Для себя выбрал назначенные задачи windows.
4. sazol 84 29.01.13 10:19 Сейчас в теме
(2) Angeros, Хм интересно, учту. У меня пока такого не случалось.. И сеанс фонового задания даже не завершался? А через задачи Windows запускаешь 1ску и в ней написанную отдельно обработку?
5. Angeros 29.01.13 10:26 Сейчас в теме
(4) запускается батник, в нем прописана 1с и через /С прописано уид команды. 1с запускается и все понимает что был передан уид команды и там все далее прописано что делать. т.к. это на серваке никого не парят открытые окна, в случае коллапса видно что где как выполняется(оконный интерфейс, прогресс бары). можно тутже все срубить если что не так... Работает стабильно без нареканий...
7. Hany 29.01.13 18:21 Сейчас в теме
(2) Angeros, странно, до сих пор все регламентные работали как надо и когда надо. Неужели у всех такой негатив? Я наборот считаю их удобными.
9. sazol 84 29.01.13 20:13 Сейчас в теме
(7) Hany, У меня тоже всегда все отрабатывает на ура, не разу не замечал описанное в (2). тьфу тьфу тьфу, чтоб не сглазить))
11. gaglo 30.01.13 07:46 Сейчас в теме
(2) И не согласен, что
прервать штатными средствами невозможно

В консоли заданий кнопка "Отменить выполнение" - сколько ни пробовал, всегда срабатывает.
12. AndrewKiev 30.01.13 08:30 Сейчас в теме
(11) gaglo,
у меня бывало такое. Сейчас Роботы (рег.задания) каждый день обрабатывают по несколько файлов (1-20 шт) от 70 подразделений каждый день и на многие сами пишут ответы (после загрузки или не загрузки в базу). Все работает корректно, но пока система ставилась - бывали проблемы и помогала только перезагрузка сервера. Для себя понял, что если при отработке задания возникло модальное окно - то "В консоли заданий кнопка "Отменить выполнение"" не помогает
14. gaglo 30.01.13 16:01 Сейчас в теме
(12) - Откуда возьмется модальное окно в фоновом задании?
15. AndrewKiev 30.01.13 22:20 Сейчас в теме
(14) gaglo,

1С взаимодействует с другим приложением - приложение выдавало свое окно (в этом окне на сервере некому нажать на какую либо кнопку). Может я неверно выразился, написав "модальное окно".
6. ShantinTD 91 29.01.13 18:19 Сейчас в теме
Вот тут ms200999 разместил по этому поводу вот такую картинку
Прикрепленные файлы:
8. sazol 84 29.01.13 20:11 Сейчас в теме
(6) ShantinTD, я то поэтому и написал для двух различных вариантов работы разный код.
13. asved.ru 36 30.01.13 12:00 Сейчас в теме
Минус в том, что проверка жестко закреплена программным кодом. А идея хороша для забывчивых.

Лучше при запуске РЗ проверять, совпадает ли строка подключения с сохраненной в константе, и если не совпадает - программно отключать все разрешенные к выполнению РЗ.
lsp71; sazol; +2 Ответить
16. ArtemiFD 42 03.02.13 01:01 Сейчас в теме
Так же пользуюсь блокировкой регламентных заданий, очень нужная в отладке вещь.
Использую справочник с предопределенными данными (регламентными заданиями). В справочник можно запихнуть куча параметров, такие как: использовать или не использовать рег задание в тестовой базе, оповещать о завершении,...
Все базы серверные и имена у них уникальны, поэтому проверяем только на имя БД.

//+++Блокировка/проверка на ИБ+++
//САА
Функция БлокироватьРегламентноеЗадание(ИмяРегламентногоЗадания)Экспорт
	
	Блокировать = Ложь;
	Если Найти(НРег(СокрЛП(СтрокаСоединенияИнформационнойБазы())), (НРег(СокрЛП("Ref=""ГЛАВНАЯ_БАЗА"";")))) = 0 Тогда 
		Блокировать = НЕ Справочники.РегламентныеЗаданияВыполняемыеНаСервере[ИмяРегламентногоЗадания].ВыполнятьВТестовойБазе;
	КонецЕсли;
	Возврат Блокировать;
	
КонецФункции
//---Блокировка/проверка на ИБ---
Показать


Так же блокировку можно использовать при отправке сообщений из базы.
//Блокировка отправки сообщений из тестовых баз,
//все такие сообщения должны отправляться на "ГруппаТехПоддержки1С@домен.ru"
//
//САА
Процедура ПроверкаНаТестовуюБазу(Получатели, Отказ = Ложь)
	
	Если Найти(НРег(СокрЛП(СтрокаСоединенияИнформационнойБазы())), (НРег(СокрЛП("Ref=""ГЛАВНАЯ_БАЗА"";")))) <> 0 Тогда 
		Возврат;
	КонецЕсли;
	
	ИсключительныеПолучатели = Новый Массив();
	ИсключительныеПолучатели.Добавить(НРег(ГруппаТехПоддержки1С()));
	ИсключительныеПолучатели.Добавить(НРег("почта1@домен.ru"));	
	ИсключительныеПолучатели.Добавить(НРег("почта2@домен.ru"));	
   ИсключительныеПолучатели.Добавить(НРег("почта2@домен.ru"));	
	
	ДобавитьОбщуюРассылку = Ложь;
	Сч = Получатели.Количество()-1;
	Пока Сч >=0 Цикл 
		Если ИсключительныеПолучатели.Найти(НРег(Получатели[Сч])) = Неопределено Тогда 
			ОбщегоНазначения.СообщитьИнформацию("Получатель " + СокрЛП(Получатели[Сч]) 
                  + " не входит в доверительный круг тестовой базы, удаляем его.");
			Получатели.Удалить(Сч);	
			ДобавитьОбщуюРассылку = Истина;
		КонецЕсли;
		Сч = Сч - 1;
			
		Если Получатели.Количество() = 0 Тогда 
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	Если ДобавитьОбщуюРассылку И Получатели.Найти(ГруппаТехПоддержки1С()) = Неопределено Тогда 
		Получатели.Добавить(ГруппаТехПоддержки1С());
	КонецЕсли;
	
Конецпроцедуры

Функция ГруппаТехПоддержки1С() Экспорт 
	
	Возврат "ГруппаТехПоддержки1С@домен.ru";
	
КонецФункции
Показать


Но лучше вынести проверку в отдельную экспортную функцию.
Прикрепленные файлы:
sazol; N_aix; kastortroy2006; +3 Ответить
Оставьте свое сообщение