Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Корректировка проведения документа

Корректировка проведения документа
Я
   Sayan_mi
 
04.04.18 - 10:28
ЗУП 3.1 Потребовалось при проведении документа увольнение подкорректировать запись в регистр Плановые начисления.
Чтобы не влезать в документ напрямую делаю через подписку на событие при проведении.
Корректирую вот так:
Выборка = РезультатЗапроса.Выбрать();
        
        ткДвижения = Источник.Движения.ПлановыеНачисления.Выгрузить(); 
        
        Пока Выборка.Следующий() Цикл
            ткСтрока = ткДвижения.Найти(Выборка.Начисление, "Начисление");
            ткСтрока.ДействуетДо             = КонецМесяца(ДобавитьМесяц(Источник.ДатаУвольнения, 1));
            ткСтрока.Используется             = Истина;
            ткСтрока.УдалитьИспользуетсяПоОкончании = Истина;
        КонецЦикла;
        
        Источник.Движения.ПлановыеНачисления.Загрузить(ткДвижения);

Смотрю по отладчику - Источник.Движения.ПлановыеНачисления тот что надо те строки что надо подправлены. После проведения в регистре движения такие будто изменений и не вносил. почему так получается?
Пробовал через создание Набора записей - Создаются нужные но и старые остаются, а не хотелось бы тем паче что при просмотре срез последних по регистру добавленных записей не видно.
 
 
   AlexTim03
 
1 - 04.04.18 - 10:32
Источник.Движения.ПлановыеНачисления.Записывать = Истина
   Cyberhawk
 
2 - 04.04.18 - 10:43
Если в обработке проведения документа вызывается явная запись движений из коллекции движений регистратора, то признак необходимости записи в этом случае сбрасывается и в твоей подписке хоть заизменяйся, а без возобновления признака необходимости записи ничо не запишется
   Cyberhawk
 
3 - 04.04.18 - 10:43
(ну, это если записыватьвыбранные = истина у документа-объекта МД)
   rozer76
 
4 - 04.04.18 - 11:15
(0) явно запиши потом набор
   Serg_1960
 
5 - 04.04.18 - 11:41
(0) Скорее всего движения уже были записаны в регистр и не имеет смысла их изменять без повторной явной записи в регистр.

PS: а я бы сделал бы через подписку ПередЗаписьюРегистра... оно так надёжнее перехватить все пути к регистру.
   shuhard
 
6 - 04.04.18 - 11:42
(5)[ а я бы сделал бы через подписку ПередЗаписьюРегистра]
и обновлять куда как проще
   rozer76
 
7 - 04.04.18 - 11:47
(5) +1
   Serg_1960
 
8 - 04.04.18 - 11:48
(6) Ну... я вспомнил :) что есть ещё документ "УвольнениеСписком".
   Serg_1960
 
9 - 04.04.18 - 11:54
Посмотрел алгоритм, там
Вызов процедуры ПрекратитьВсеПлановыеНачисленияПоТаблицеСотрудников() с "Движения.ПлановыеНачисления.Записывать = Истина;" и далее в модуле менеджера - вызов ПроведениеРасширенныйСервер.ЗаписьДвиженийПоУчетам() с записью в регистры:

Для Каждого Движение Из Движения Цикл
   Если СтруктураВидовУчета.ПроведениеПоВсемУчетам Тогда
      Движение.Значение.Записать();    
   Иначе
      Если СтруктураВидовУчета.МассивРегистров.Найти(Движение.Значение.Метаданные()) <> Неопределено Тогда 
         Движение.Значение.Записать();            
      КонецЕсли;
   КонецЕсли;
КонецЦикла;

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует