| 
    
            
         
         | 
    
  | 
Как отловить факт выполнения регламентного задания? | ☑ | ||
|---|---|---|---|---|
| 
    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     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |