Имя: Пароль:
1C
1С v8
Как отловить факт выполнения регламентного задания?
0 suvolod
 
05.04.13
09:41
Клиент-сервер, есть несколько подписок на событие, запрещающие "обычным" юзерам изменять некоторые документы, служебные элементы справочников и т.д... Но хотелось бы добавить в исключения регламентное заданию, которое выполняет обмен со сторонней ИБ.

Если бы обмен был по COM, я мог бы в подписке написать следующее:
Если ПараметрыСеанса.ТекущийПользователь.Код <> "COM" ТОгда
Отказ = Истина;
КонецЕсли;

Но у регламентного задания нет параметровсеанса... тогда отловить тот факт, что объект изменяет именно мое РЗ?
1 Sammo
 
05.04.13
09:44
Например, регламентное выполняется на сервере.
Например, какой пользователь ставится при работе данного регламентного задания? (в параметры сеанса)
2 suvolod
 
05.04.13
09:49
(1) Твой комментарий непонятен.

При выполнении на сервере РЗ запускается от имени USR1CV82, но в режиме 1С пользователь (и его параметры) не определены. В списке Активные пользователи колонка Пользователь при выполненении РЗ пустая.
3 Maxus43
 
05.04.13
09:54
в доп свойства засунь "Это РЗ, мне можно"
4 Maxus43
 
05.04.13
09:56
в подписке пиши Если Источник.ДопослнительныеСвойства.Свойство("Это РЗ, мне можно") Тогда ...
5 suvolod
 
05.04.13
09:57
сейчас попробую.. спасибо
6 suvolod
 
05.04.13
10:09
Что-то не получается.. непонятно как подсунуть РЗ параметр. У меня РЗ предопределенное, обработчик - фция ВыполнитьОбменSМаркет() - без параметров.... куда/как зашить доп. свойство при вызове - не вижу...
7 Maxus43
 
05.04.13
10:10
(6) в объект доп свойство пиши, а не в само РЗ.
Объект.ДополнительныеСвойства.Вставить(...);
Объект.Записать()
8 Sammo
 
05.04.13
10:16
(2) Раз пользователь не заполнен - отлавливай при подписке, что ПараметрыСеанса.Пользователь пустой.
Но это не очень красиво, имхо.
Через консоль заданий можно установвить - под каким пользователем 1с будет запускаться регламентное задание (т.е. пользователя под которым будет все его действия писаться в журнал регистрации)
9 suvolod
 
05.04.13
10:17
(7) точно.. что-то я тупанул :).., РЗ как таковое здесь не при чем.
Но тогда не очень кашерно получается. У меня РЗ за раз обрабатывает до 100.000 объектов. Писать в каждое доп. параметр, только чтобы отловить его в подписке на событие, не слишком оптимально. Возьму на заметку, но пока подожду с реализацией. Спасибо
10 Sammo
 
05.04.13
10:18
+ классика - делать записи докуметов, справочников в режиме ОбменДанными.Загрузка = Истина и в подписках проверять на это.
11 Maxus43
 
05.04.13
10:19
(9) наоборот кошерно всё, подписка один фиг сработает на каждый твой док, на все 100000 объектов. Где преступление не пойму
12 Sammo
 
05.04.13
10:20
+10 важное замечание, в этом режиме невозжомжно проводить документы. Т.е. Док.записать(РежимЗаписи.Проведение) будет выпадать по ошибке.
Для этого делают экпортные функции СформироватьДвиженияРегистров.

(9) запись в режиме 10 получается немного быстрее, в том числе засчет отказа от некоторых подписок и проверок уникальности.
13 suvolod
 
05.04.13
10:21
(8, 10) Спасибо за подсказки. Про режим обмена данными знаю, но не очень его люблю. Чуть не доглядел - у тебя справочники с задублированными кодами могут появиться. Чисть их потом
14 Maxus43
 
05.04.13
10:21
(10) это хорошо, если не надо определять что именно рег задание делает это. возможно будет достаточно
15 suvolod
 
05.04.13
10:24
(11) Мое имхо - что фция добавления параметра к 100000 объектов все равно по ресурсам затратная. Тогда уж лучше регистр сведений с флагом какой-нибудь сделать. РЗ перед выполнением взводит его и пишет данные.. после снимает. Хотя в этом решении тоже не все кашерно - юзеры в момент, когда флаг взведен,  тоже могут что-то записать
16 Maxus43
 
05.04.13
10:25
(15) доп свойства работают очень быстро, и проверяются тоже. Они в базе не хранятся, живут только в процессе жизни самого объекта
17 suvolod
 
05.04.13
10:27
спасибо.. главное что узнал - напрямую факт изменения объекта РЗ не отследить, нужно писать костыть.. типа доп. параметра, который предложил предложил ув. Maxus43
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан