Имя: Пароль:
1C
1С v8
Отловить событие ПослеПроведения
0 Juliette_
Juliette
 
03.10.20
08:23
Задача немного нетривиальная. Общепит, производство.
Надо в момент проведения поступления товаров часть товара переводить в другой товар. Для этого используем документ Пересортица.
Как я поняла, ни в модуле документа, ни в подписке проведения нет смысла это писать, т.к. движения документа поступления еще отсутствуют.
Тем не менее код автоматического создания документа пересортица реализован в подписке пока в режиме проведения = Записать. Провести не дает.
Создать регистр отложенного проведения, куда писать ссылки документов пересортица? Пока так думаю. Может проще можно?
1 Timon1405
 
03.10.20
09:08
можно заранее рассчитать итоговые таблицы движений по регистрам, положить их в Объект.ДополнительныеСвойства и достать в подписке в Источник.ДополнительныеСвойства.Получить(). покурите типовые конфигурации
2 Cyberhawk
 
03.10.20
09:36
Только через очередь
3 Juliette_
Juliette
 
03.10.20
10:49
так?
создала регистр отложенных, куда добавляю ссылки в подписке проведения, регламентное задание, код такой
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ОчередьОтложенныхОперацийПересортицыДляПроведения.Документ КАК Документ
        |ИЗ
        |    РегистрСведений.ОчередьОтложенныхОперацийПересортицыДляПроведения КАК ОчередьОтложенныхОперацийПересортицыДляПроведения";
    
    РезультатЗапросаВыборка = Запрос.Выполнить().Выбрать();
    Пока РезультатЗапросаВыборка.Следующий() Цикл
        Попытка
            ДокОбъект = РезультатЗапросаВыборка.Документ.ПолучитьОбъект();
            ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
            
            НаборЗаписей = РегистрыСведений.ОчередьОтложенныхОперацийПересортицыДляПроведения.СоздатьНаборЗаписей();
            НаборЗаписей.Отбор.Документ.Установить(РезультатЗапросаВыборка.Документ);
            НаборЗаписей.Записать();         
        Исключение
        КонецПопытки;    
    КонецЦикла;
4 Juliette_
Juliette
 
03.10.20
11:02
вроде работает
спасибо ;)
5 PR
 
03.10.20
11:05
(2) Ну да, только через очередь, ага, других вариантов даже теоретически нет С — сарказм
6 PR
 
03.10.20
11:07
(0) Если нужна транзакционная целостность, то делай документ-контейнер
То есть новый документ, при его проведении создавай оба документа
Если один из них не создастся, то в итоге не создавай оба
Если делаешь его непроведенным, то распроводи оба
И т. д.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс