За основу была взята обработка: //infostart.ru/public/401469/ автора: //infostart.ru/profile/225675/
Она была доработана мной в соответствии с задачей на предприятии следующим образом (что добавлено):
- В имени файла логово .txt теперь присутствует имя базы на SQL, чтобы при параллельном запуске фонового восстановления последовательности несколько баз не обращались к одному файлу для записи
- В лог пишутся причины по которым восстановление не началось (последовательность уже восстановлена, установлена дата запрета, ошибка в коде и т.д.)
- В некоторых случаях отправка лога выполняется только на почту программисту, чтобы не грузить пользователя техническими сообщениями.
- Код обработки опирается на Дополнительный реквизит (флаг) "ВосстановитьБлижайшейНочьюПоследовательностьЗаМесяц" в карточке Организации. Сделано это для того, чтобы фоновое задание запускалось каждую ночь, но восстановление последовательности происходило только если пользователь накануне взвел в карточке Организации этот флаг. При начале восстановления флаг снимается, чтобы следующей ночью обработка не пыталась снова восстанавливать последовательность (т.к. пользователь мог не успеть подготовить следующий месяц к закрытию).
- Чтобы пользователь мог оперативно понять на каком дне сейчас происходит перепроведение документов после каждого успешно проведенного дня (или после каждого десятого в зависимости от флага в карточке Организации "ОтправлятьПисьмоЧерезКаждыеДесятьДней") отправляется письмо на почту (возможность впринципе отправлять письма была до моей доработки).
Преимущества обработки перед типовым функционалом восстановления последовательности:
- Можно установить расписание восстановления последовательности, допустим на ночь.
- При восстановлении последовательности перепроведение документов выполняется не за весь месяц в одной транзакции а по дням рекурсивно, что позволяет, в случае допустим аварийного завершения сохранить границу последовательности на последнем удачно проведенном дне (типовой функционал в этом случае сбрасывает последовательность в начало).
- Пишется лог: в файл и на почту на случай аварийного завершения процесса восстановления последовательности.
- Не требует доработки конфигурации.
Ограничения обработки:
- Она была дописана под базу БП 3.0, в которой одна организация. Соответственно если вы хотите восстанавливать последовательность по нескольким организациям базы, нужно как вариант, дописать запуск процедуры восстановления в цикле по Организациям.
- Обкатана только на серверных базах (используется сейчас в 12 рабочих базах БП 3.0).
Версии:
25.07.2018 Версия 1.1 - Для БП начиная с версии 3.0.64.28 - Изменен механизм определения границы последовательности.