gifts2017

Автоматическое перепроведение документов в Бухгалтерии 3.0

Опубликовал kholkin в раздел Обработки - Закрытие периода

Регламентное задание позволяет запускать перепроведение документов по расписанию. Разрабатывалось в Бухгалтерии КОРП 3.0.32.7

Как известно, перепроведение документов - достаточно долгая процедура, без которой невозможно закрыть месяц. Поэтому очень удобно использовать регламентное задание по перепроведению документов, особенно, при большом документообороте. Представляю вашему вниманию процедуру, которую можно запускать автоматически по регламентному заданию. Процедура запускает стандартную обработку Бухгалтерии 3.0 "Групповое перепроведение документов". Дата первого документа, нарушающего последовательность документов ищется автоматически. В параметрах можно задать дату, по которую перепроводить документы, и указать останавливать ли перепроведение после первой ошибки проведения или нет. Результаты перепроведения сохраняются в файл на жесткий диск.

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

	АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, ПараметрыПерепроведения.УникальныйИдентификаторФормы);
	Обработки.ГрупповоеПерепроведениеДокументов.ПерепроведениеДокументов(ПараметрыПерепроведения, АдресХранилища);
	
	Попытка 	
		РезультатыПерепроведения = ПолучитьИзВременногоХранилища(АдресХранилища);
		ТабДок = ПолучитьИзВременногоХранилища(РезультатыПерепроведения.АдресХранилищаСОшибками).ОтчетПоОшибкам;
		ТабДок.Записать(Путь + Формат(ТекущаяДата(), "ДЛФ=Д") + ".txt", ТипФайлаТабличногоДокумента.TXT);
	Исключение
		Текст = Новый ЗаписьТекста(Путь + Формат(ТекущаяДата(), "ДЛФ=Д") + ".txt", КодировкаТекста.ANSI);
		Текст.ЗаписатьСтроку("" + Организация);
		Текст.ЗаписатьСтроку("Выполнено перепроведение документов за период: " + МоментНарушения.Дата + " - " + ДатаОкончания);
		Текст.ЗаписатьСтроку("Ошибок при перепроведение не было.");
		Текст.Закрыть(); 
	КонецПопытки;
	
КонецПроцедуры


См. также

Подписаться Добавить вознаграждение

Комментарии

1. Алексей Алексеев (Aleksey_3) 06.09.14 19:26
А зачем жёсткая привязка в коде?

Организация = Справочники.Организации.НайтиПоКоду("00035");
ТабДок.Записать("\\canopus\1C-OBT\MV\Логи перепроведения КОРП ЛАС\" + Формат(ТекущаяДата(), "ДЛФ=Д") + ".txt", ТипФайлаТабличногоДокумента.TXT);


И второй вопрос, под кем это работает? Т..е если период закрыт, а программа хочет перепровести в закрытом периоде, то что будет?
2. kholkin 06.09.14 23:11
Организацию и место сохранения файла конечно можно вывести в параметры. Пользователь, под которым это будет работать указывается в настройках регламентного задания, документы закрытого периода перепроводиться не будут, если запрет действует для заданного пользователя.
3. Александр *** (a1ex4ndr) 07.09.14 00:56
перед тем как выкладывать сюда, надо конечно было доработать чуток функционал - там где под себя схалтурил, а так норм обработка, плюсанул )
white_sochi; IROKEZ91; kholkin; +3 Ответить
4. Den (Dvornik) 10.09.14 07:47
Спасибо что воспользовались :)
infostart.ru/public/279894/
5. kholkin 10.09.14 14:24
(4) Dvornik, делал сам, видно по коду, потом уже твою статью увидел, и скачал посмотрел, как ты сделал. Жаль, что раньше не увидел твою статью, часов 7 потратил на этот код, а нужно было срочно сделать...
6. Наталья Колодяжная (nataly_tka@mail.ru) 29.11.16 09:02
Зачем создается структура Результат?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа