Имя: Пароль:
1C
1C 7.7
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) Спасибо!
Основная теорема систематики: Новые системы плодят новые проблемы.