|
|
Корректировка проведения документа |
☑ |
|
0
Sayan_mi
04.04.18
✎
10:28
|
ЗУП 3.1 Потребовалось при проведении документа увольнение подкорректировать запись в регистр Плановые начисления.
Чтобы не влезать в документ напрямую делаю через подписку на событие при проведении.
Корректирую вот так:
Выборка = РезультатЗапроса.Выбрать();
ткДвижения = Источник.Движения.ПлановыеНачисления.Выгрузить();
Пока Выборка.Следующий() Цикл
ткСтрока = ткДвижения.Найти(Выборка.Начисление, "Начисление");
ткСтрока.ДействуетДо = КонецМесяца(ДобавитьМесяц(Источник.ДатаУвольнения, 1));
ткСтрока.Используется = Истина;
ткСтрока.УдалитьИспользуетсяПоОкончании = Истина;
КонецЦикла;
Источник.Движения.ПлановыеНачисления.Загрузить(ткДвижения);
Смотрю по отладчику - Источник.Движения.ПлановыеНачисления тот что надо те строки что надо подправлены. После проведения в регистре движения такие будто изменений и не вносил. почему так получается?
Пробовал через создание Набора записей - Создаются нужные но и старые остаются, а не хотелось бы тем паче что при просмотре срез последних по регистру добавленных записей не видно.
|
|
|
1
AlexTim03
04.04.18
✎
10:32
|
Источник.Движения.ПлановыеНачисления.Записывать = Истина
|
|
|
2
Cyberhawk
04.04.18
✎
10:43
|
Если в обработке проведения документа вызывается явная запись движений из коллекции движений регистратора, то признак необходимости записи в этом случае сбрасывается и в твоей подписке хоть заизменяйся, а без возобновления признака необходимости записи ничо не запишется
|
|
|
3
Cyberhawk
04.04.18
✎
10:43
|
(ну, это если записыватьвыбранные = истина у документа-объекта МД)
|
|
|
4
rozer76
04.04.18
✎
11:15
|
(0) явно запиши потом набор
|
|
|
5
Serg_1960
04.04.18
✎
11:41
|
(0) Скорее всего движения уже были записаны в регистр и не имеет смысла их изменять без повторной явной записи в регистр.
PS: а я бы сделал бы через подписку ПередЗаписьюРегистра... оно так надёжнее перехватить все пути к регистру.
|
|
|
6
shuhard
04.04.18
✎
11:42
|
(5)[ а я бы сделал бы через подписку ПередЗаписьюРегистра]
и обновлять куда как проще
|
|
|
7
rozer76
04.04.18
✎
11:47
|
(5) +1
|
|
|
8
Serg_1960
04.04.18
✎
11:48
|
(6) Ну... я вспомнил :) что есть ещё документ "УвольнениеСписком".
|
|
|
9
Serg_1960
04.04.18
✎
11:54
|
Посмотрел алгоритм, там
Вызов процедуры ПрекратитьВсеПлановыеНачисленияПоТаблицеСотрудников() с "Движения.ПлановыеНачисления.Записывать = Истина;" и далее в модуле менеджера - вызов ПроведениеРасширенныйСервер.ЗаписьДвиженийПоУчетам() с записью в регистры:
Для Каждого Движение Из Движения Цикл
Если СтруктураВидовУчета.ПроведениеПоВсемУчетам Тогда
Движение.Значение.Записать();
Иначе
Если СтруктураВидовУчета.МассивРегистров.Найти(Движение.Значение.Метаданные()) <> Неопределено Тогда
Движение.Значение.Записать();
КонецЕсли;
КонецЕсли;
КонецЦикла;
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший