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

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
Посмотрел алгоритм, там
Вызов процедуры ПрекратитьВсеПлановыеНачисленияПоТаблицеСотрудников() с "Движения.ПлановыеНачисления.Записывать = Истина;" и далее в модуле менеджера - вызов ПроведениеРасширенныйСервер.ЗаписьДвиженийПоУчетам() с записью в регистры:

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

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