| 
    
 | 
        v7: Отмена проведения другого документа в модуле проведения возможна?         | 
☑ | 
    
        | 
    0
    
        Chai Nic    
       
    
    31.05.24 
            ✎
    08:36 
 | 
         
        Нужно это для того, чтобы была возможность поменять дату подчиненного документа при проведении документа-основания. Поскольку дату уже проведенного система менять не дает с выдачей ошибки "Невозможно изменение даты проведенного документа!", нужно отменить проведение, поменять дату и реквизиты, и перепровести.
 
 Про лайфхак с открытием формы с передачей контекста документа и команды в качестве параметра, с проверкой параметра в ПриОткрытии документа и выполнении нужных действий там - знаю. С проведением это работает. А с отменой проведения - не. 
 
 Если делать в ПриОткрытии Конт.СделатьНеПроведенным() - то не выдает никаких ошибок, но документ так и остается проведенным. Если через Док=СоздатьОбъект("Документ") с поиском текущего документа контекста и потом делать Док.СделатьНеПроведенным() - выдает ошибку "Данная операция недоступна при проведении документа".
 
 Что посоветуете?     
         | 
 | 
    
    
        | 
    1
    
        ЯнСмит    
       
    
    31.05.24 
            ✎
    08:52 
 | 
         
        Через глобальную процедуру ОбработкаОжидания() - в ней крутится диспетчер, который в зависимости от полученных параметров (опять же через глобальную переменную-список значений) выполняет то или иное действо.     
         | 
 | 
    
    
        | 
    2
    
        Chai Nic    
       
    
    31.05.24 
            ✎
    08:55 
 | 
         
        (1) А это будет работать, если транзакция проведения существует и активна?     
         | 
 | 
    
    
        | 
    3
    
        vladmenleo    
       
    
    31.05.24 
            ✎
    08:56 
 | 
         
        (0) У меня сделано через Formex В журнале добавляешь процедуру
 Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
 Если Событие = "СделатьНепроведенным" Тогда
         Док = СоздатьОбъект("Документ");
         Док.НайтиДокумент(ТекущийДокумент);
         Док.СделатьНеПроведенным();
         Форма.Обновить();
     КонецЕсли;
 КонецПроцедуры // ОбработкаВнешнегоСобытия()
 а в модуле проведения вызываешь 
 Сервис = СоздатьОбъект("Сервис");
             Сервис.ВнешнееСобытие(Вид(),"СделатьНепроведенным","Форма");
             Возврат;     
         | 
 | 
    
    
        | 
    4
    
        ЯнСмит    
       
    
    31.05.24 
            ✎
    09:00 
 | 
         
        (2) должна сработать после завершения транзакции проведения     
         | 
 | 
    
    
        | 
    5
    
        Chai Nic    
       
    
    31.05.24 
            ✎
    08:58 
 | 
         
        Да, наверное, можно всё это будет сделать асинхронно, из обработки ожидания, куда передали нужные параметры через глобальную переменную, уже после того, как основная обработка проведения завершилась.     
         | 
 | 
    
    
        | 
    6
    
        Chai Nic    
       
    
    31.05.24 
            ✎
    08:59 
 | 
         
        (3) Спасибо!     
         | 
 |