При первичной постановке задачи было требование «упростить перезаполненные регистра(ов) за прошлые периоды при его(их) расширении», но при реализации удалось получить гораздо больше плюсов, чем изначально ставилось, а именно:
Профит:
- Быстрое перепроведение документов по одному или нескольким определенным регистрам, не трогая все остальные регистры.
- Избежание взаимоблокировок из-за перекрестного захвата ресурсов.
- Всегда четкое понимание, где располагаются алгоритмы, формирующий движения в регистре.
-
Возможность «плавного» перехода на способ проведения описанный в данной статье.
Допущения:
- Предполагается использовать данную методику только для новых регистров добавляемых или добавленных ранее в конфигурацию – типовые регистры не трогаем.
Реализация:
Комментарии:
Для тех кому "лень" вникать в код. Основная суть реализации в том, что алгоритм записи в регистр переносится в модуль менеджера самого регистра. Проведение любого документа можно осуществить с помощью команды
ОбщегоНазначенияПоРегистрам.СформироватьДвижения(Отказ, РежимПроведения, Ссылка);
Напоследок:
Представленный алгоритм рабочий, но тут еще есть что оптимизировать, например, можно подумать над способом сохранения результатов структуры регистров для вида документа при массовом перепроведении, что позволит не рассчитывать ее для каждой ссылки.
Реклама:
Используя Многопоточность. Универсальный «Менеджер потоков» 2.1 - можно дополнительно ускорить перепроведение документов с помощью данной методики.