Как отловить факт выполнения регламентного задания? #659636


#0 by suvolod
Клиент-сервер, есть несколько подписок на событие, запрещающие "обычным" юзерам изменять некоторые документы, служебные элементы справочников и т.д... Но хотелось бы добавить в исключения регламентное заданию, которое выполняет обмен со сторонней ИБ. Если бы обмен был по COM, я мог бы в подписке написать следующее: Но у регламентного задания нет параметровсеанса... тогда отловить тот факт, что объект изменяет именно мое РЗ?
#1 by Sammo
Например, регламентное выполняется на сервере. Например, какой пользователь ставится при работе данного регламентного задания? (в параметры сеанса)
#2 by suvolod
Твой комментарий непонятен. При выполнении на сервере РЗ запускается от имени USR1CV82, но в режиме 1С пользователь (и его параметры) не определены. В списке Активные пользователи колонка Пользователь при выполненении РЗ пустая.
#3 by Maxus43
в доп свойства засунь "Это РЗ, мне можно"
#4 by Maxus43
в подписке пиши Если Источник.ДопослнительныеСвойства.Свойство("Это РЗ, мне можно") Тогда ...
#5 by suvolod
сейчас попробую.. спасибо
#6 by suvolod
Что-то не получается.. непонятно как подсунуть РЗ параметр. У меня РЗ предопределенное, обработчик - фция ВыполнитьОбменSМаркет - без параметров.... куда/как зашить доп. свойство при вызове - не вижу...
#7 by Maxus43
в объект доп свойство пиши, а не в само РЗ.
#8 by Sammo
Раз пользователь не заполнен - отлавливай при подписке, что ПараметрыСеанса.Пользователь пустой. Но это не очень красиво, имхо. Через консоль заданий можно установвить - под каким пользователем 1с будет запускаться регламентное задание (т.е. пользователя под которым будет все его действия писаться в журнал регистрации)
#9 by suvolod
точно.. что-то я тупанул :).., РЗ как таковое здесь не при чем. Но тогда не очень кашерно получается. У меня РЗ за раз обрабатывает до 100.000 объектов. Писать в каждое доп. параметр, только чтобы отловить его в подписке на событие, не слишком оптимально. Возьму на заметку, но пока подожду с реализацией. Спасибо
#10 by Sammo
+ классика - делать записи докуметов, справочников в режиме ОбменДанными.Загрузка = Истина и в подписках проверять на это.
#11 by Maxus43
наоборот кошерно всё, подписка один фиг сработает на каждый твой док, на все 100000 объектов. Где преступление не пойму
#12 by Sammo
+10 важное замечание, в этом режиме невозжомжно проводить документы. Т.е. Док.записать(РежимЗаписи.Проведение) будет выпадать по ошибке. Для этого делают экпортные функции СформироватьДвиженияРегистров. запись в режиме 10 получается немного быстрее, в том числе засчет отказа от некоторых подписок и проверок уникальности.
#13 by suvolod
(8, 10) Спасибо за подсказки. Про режим обмена данными знаю, но не очень его люблю. Чуть не доглядел - у тебя справочники с задублированными кодами могут появиться. Чисть их потом
#14 by Maxus43
это хорошо, если не надо определять что именно рег задание делает это. возможно будет достаточно
#15 by suvolod
Мое имхо - что фция добавления параметра к 100000 объектов все равно по ресурсам затратная. Тогда уж лучше регистр сведений с флагом какой-нибудь сделать. РЗ перед выполнением взводит его и пишет данные.. после снимает. Хотя в этом решении тоже не все кашерно - юзеры в момент, когда флаг взведен,  тоже могут что-то записать
#16 by Maxus43
доп свойства работают очень быстро, и проверяются тоже. Они в базе не хранятся, живут только в процессе жизни самого объекта
#17 by suvolod
спасибо.. главное что узнал - напрямую факт изменения объекта РЗ не отследить, нужно писать костыть.. типа доп. параметра, который предложил предложил ув. Maxus43
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С