Как известно, перепроведение документов - достаточно долгая процедура, без которой невозможно закрыть месяц. Поэтому очень удобно использовать регламентное задание по перепроведению документов, особенно, при большом документообороте. Представляю вашему вниманию процедуру, которую можно запускать автоматически по регламентному заданию. Процедура запускает стандартную обработку Бухгалтерии 3.0 "Групповое перепроведение документов". Дата первого документа, нарушающего последовательность документов ищется автоматически. В параметрах можно задать дату, по которую перепроводить документы, и указать останавливать ли перепроведение после первой ошибки проведения или нет. Результаты перепроведения сохраняются в файл на жесткий диск.
Процедура доп_ПроведениеДокументов(ОстанавливатьсяПоОшибке = Неопределено, ДатаОкончания = Неопределено) Экспорт Если ОстанавливатьсяПоОшибке = Неопределено Тогда ОстанавливатьсяПоОшибке = Истина; КонецЕсли; Организация = Справочники.Организации.НайтиПоКоду("00035"); ПериодРегистрации = ТекущаяДата(); Результат = Новый Структура(); Результат.Вставить("Ссылка", Неопределено); Результат.Вставить("Дата", Неопределено); Результат.Вставить("МесяцИсключенИзПерепроведения", Ложь); Результат.Вставить("КоличествоДокументовДляПерепроведения", 0); МесяцИсключенИзПерепроведения = РегистрыСведений.ИсключенныеИзПерепроведенияМесяцы.МесяцИсключенИзПерепроведения( Организация, ПериодРегистрации); Результат.МесяцИсключенИзПерепроведения = МесяцИсключенИзПерепроведения; // Если текущий месяц исключен из перепроведения, то получим дату нарушения // как если бы по состоянию на конец прошлого месяца, чтобы если пользователь // решит все-таки за текущий месяц выполнить перепроведение, то мы могли бы // указать, с какой даты требуется перепроводить. Если МесяцИсключенИзПерепроведения Тогда МоментНарушения = РаботаСПоследовательностями.МоментНачалаПерепроведенияСУчетомИсключенныхМесяцев( Организация, НачалоМесяца(ПериодРегистрации) - 1); Иначе МоментНарушения = РаботаСПоследовательностями.МоментНачалаПерепроведенияСУчетомИсключенныхМесяцев( Организация, КонецМесяца(ПериодРегистрации)); КонецЕсли; Путь = "\\canopus\1C-OBT\MV\Логи перепроведения КОРП ЛАС\"; Если МоментНарушения = Неопределено Тогда Текст = Новый ЗаписьТекста(Путь + Формат(ТекущаяДата(), "ДЛФ=Д") + ".txt", КодировкаТекста.ANSI); Текст.ЗаписатьСтроку("" + Организация); Текст.ЗаписатьСтроку("Перепроведение не требуется!"); Текст.Закрыть(); Возврат; КонецЕсли; Если ДатаОкончания = Неопределено ИЛИ ДатаОкончания = '00010101000000' Тогда ДатаОкончания = ТекущаяДата(); КонецЕсли; // Подготовка параметров для группового перепроведения ПараметрыПерепроведения = Обработки.ГрупповоеПерепроведениеДокументов.ПараметрыПерепроведения(); ПараметрыПерепроведения.Организация = Организация; ПараметрыПерепроведения.УникальныйИдентификаторФормы = Новый УникальныйИдентификатор; ПараметрыПерепроведения.МоментНачала = МоментНарушения; ПараметрыПерепроведения.ДатаОкончания = ДатаОкончания; ПараметрыПерепроведения.ОстанавливатьсяПоОшибке = ОстанавливатьсяПоОшибке; ПараметрыПерепроведения.ЭтоЗакрытиеМесяца = Ложь; Если НЕ ЗначениеЗаполнено(ПараметрыПерепроведения.АдресХранилищаСОшибками) Тогда ПараметрыПерепроведения.Вставить("АдресХранилищаСОшибками", ПоместитьВоВременноеХранилище(Неопределено, Новый УникальныйИдентификатор())); КонецЕсли; АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, ПараметрыПерепроведения.УникальныйИдентификаторФормы); Обработки.ГрупповоеПерепроведениеДокументов.ПерепроведениеДокументов(ПараметрыПерепроведения, АдресХранилища); Попытка РезультатыПерепроведения = ПолучитьИзВременногоХранилища(АдресХранилища); ТабДок = ПолучитьИзВременногоХранилища(РезультатыПерепроведения.АдресХранилищаСОшибками).ОтчетПоОшибкам; ТабДок.Записать(Путь + Формат(ТекущаяДата(), "ДЛФ=Д") + ".txt", ТипФайлаТабличногоДокумента.TXT); Исключение Текст = Новый ЗаписьТекста(Путь + Формат(ТекущаяДата(), "ДЛФ=Д") + ".txt", КодировкаТекста.ANSI); Текст.ЗаписатьСтроку("" + Организация); Текст.ЗаписатьСтроку("Выполнено перепроведение документов за период: " + МоментНарушения.Дата + " - " + ДатаОкончания); Текст.ЗаписатьСтроку("Ошибок при перепроведение не было."); Текст.Закрыть(); КонецПопытки; КонецПроцедуры