|   |   | 
| 
 | Обработка ошибки проведения | ☑ | ||
|---|---|---|---|---|
| 0
    
        Родом из детства 11.10.21✎ 16:26 | 
        Добрый день, товарищи. Столкнулся с одной неприятной задачей. В общем, имеется документ. В нем - тч "История изменения реквизитов", в которой, соответствено регистрируется история изменения некоторых его реквизитов. Регистрируется она следующим образом - в модуле объекта, в обработчике события "ПередЗаписью" запросом берутся реквизиты объекта, они перебираются, сравниваются с текущими значениями. И, в случае несоответствия, в эту ТЧ добавляются строки. 
 Проблема в следующем: "Попытка документ.Записать(РежимЗаписи.Проведение) Исключение Документ.Записать(РежимЗаписи.Запись) КонецПопытки" - это код обработки, который вызывает запись нашего документа. В случае, когда у нас возникает проблема, и документ не проводится(то есть падаем в блок исключения) мы получаем дублирование строк в ТЧ документа история изменения реквизитов( Мб есть какие-нибудь идеи, как этого избежать? | |||
| 1
    
        ДенисЧ 11.10.21✎ 16:28 | 
        делай в ПриЗаписи, там транзакция ужо.     | |||
| 2
    
        Родом из детства 11.10.21✎ 16:29 | 
        (1) А в ПриЗаписи ещё не регистрируются данные в бд? Я смогу получить старые значения реквизитов запросом?     | |||
| 3
    
        Pro-tone 11.10.21✎ 16:35 | 
        (2) ПриЗаписи - это фактически ПослеЗаписи, для сравнения реквизитов - выгружай нужные реквизиты (до записи) в таблицу значений или любую другую коллекцию какая нравится. В типовых конфах есть механизм версионирования, он сохраняет значения всех реквизитов по объекту, если это не самописка то лучше использовать его     | |||
| 4
    
        Has 11.10.21✎ 16:37 | 
        (0) а реквизиты документа влияют на его движения?     | |||
| 5
    
        Родом из детства 11.10.21✎ 16:37 | 
        (4) да     | |||
| 6
    
        fisher 11.10.21✎ 16:38 | 
        (0) > В нем - тч "История изменения реквизитов"
 Рука-лицо. Так делать нельзя. При любом использовании объекта у тебя всегда будет вычитываться эта табличная часть. То есть тормоза будут расти с ростом истории. > есть какие-нибудь идеи, как этого избежать Можно в доп-свойства объекта писать массив строк ТЧ истории, которые добавляются для записи. И перед записью сначала удалять строки из массива, если массив не пуст. | |||
| 7
    
        Has 11.10.21✎ 16:39 | 
        (5) тогда при исключении - реквизиты поменяются, а движения - нет     | |||
| 8
    
        Родом из детства 11.10.21✎ 16:40 | 
        (6) Да, насчет ТЧ думали. Но заказчик почему-то захотел так. Насчет доп-свойств - попробую, спасибо)     | |||
| 9
    
        Дык ё 11.10.21✎ 17:23 | 
        (0) (2) перед записью в модуле объекта тоже в транзакции, дубли могут быть из-за ошибки в реализации
 (8) заказчик не может определять технические детали. используй платформенную историю данных | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |