Имя: Пароль:
1C
1С v8
Подписка на событие перед записью регистра накопления
0 Быдло замкадное
 
14.06.19
09:49
Привет, хочу отредактировать движения.

Если пишу

Для Каждого Стр Из Источник Цикл
        
    Стр.Количество = 333;
        
КонецЦикла;

Ничего не меняется.

Если пишу

Источник.Прочитать();
    
Для Каждого Стр Из Источник Цикл
        
    Стр.Количество = 333;
        
КонецЦикла;

Движения каждый раз при проведении или отмене проведения дублируются! Вместо 4 движений будет 8, 16, 32 и т.д.

Как сделать то?!
1 vicof
 
14.06.19
09:50
Почему перед записью?
2 Быдло замкадное
 
14.06.19
09:50
(1) при записи они вроде как уже записаны
3 ptiz
 
14.06.19
10:13
(0) "Если пишу

Для Каждого Стр Из Источник Цикл
        
    Стр.Количество = 333;
        
КонецЦикла;

Ничего не меняется. "

Всё меняется.
4 Быдло замкадное
 
14.06.19
10:16
(3) у меня не меняется..
5 hhhh
 
14.06.19
10:19
(4) ну может не там смотришь. На первом или втором проходе?
6 Вафель
 
14.06.19
10:19
(4) значит кто-то еще меняет
7 Вафель
 
14.06.19
10:20
сделай замер от места после твоего кода до конца
8 Cyberhawk
 
14.06.19
10:21
(5) На первом проходе оно в цикл вроде вообще не должно заходить, ведь там количество записей ноль
9 Быдло замкадное
 
14.06.19
11:14
(7) отладка выключена.
Я даже в модуле объекта поменять не могу..
В выходные включу отладку, тогда разберусь.
10 Быдло замкадное
 
17.06.19
10:35
нужно было добавить Источник.Записывать = Истина;

Процедура ПередЗаписьюРНУчетЗатратПередЗаписью(Источник, Отказ, Замещение) Экспорт
        
    Если Источник.Количество() > 0 Тогда
        
        РегистраторСсылка = Источник.Отбор.Регистратор.Значение;
        
        Источник.Записывать = Истина;
        
        Если ТипЗнч(РегистраторСсылка) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
            
            Если ЗначениеЗаполнено(РегистраторСсылка.ДатаЗатрат) Тогда
            
                Для Каждого Стр Из Источник Цикл
                
                    Стр.Период = РегистраторСсылка.ДатаЗатрат;
                
                КонецЦикла;
                
            КонецЕсли;
            
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры
11 Cyberhawk
 
17.06.19
11:14
(10) Ну тогда уж флаг взводи только если запись действительно нужна
12 Быдло замкадное
 
17.06.19
11:56
(11) эм ну да, немного не туда сунул строчку)
13 Cyberhawk
 
17.06.19
12:00
Ну и вообще писать набор дважды (сначала штатно-типово до нашей инъекции, потом после) и в плане производительности, и в плане надежности решение не самое лучшее. В плане доработки / последующего обновления конечно же удобнее, и даже если не брать в расчет производительность, то всегда может оказаться чей-нибудь *овнокод при записи набора, который не будет рассчитывать, что в текущей транзакции этот набор уже записан.
14 Быдло замкадное
 
17.06.19
12:02
(13) в типовой обработке проведения кстати этот набор пустой! Учет затрат видимо в подписке пишется, можно и ее найти конечно
15 Cyberhawk
 
17.06.19
12:04
(14) Бывает еще что движения регистратора попадают в регистр не путем наполнения коллекции движений этого регистратора, а путем создания и записи независимого НЗ, "подложенного" под этот регистратор.
AdBlock убивает бесплатный контент. 1Сергей