ВыгрузитьВсеСобытияЖурналаРегистрации (БСП)

Автор: 1С
ОбщийМодуль.ИнтернетПоддержкаПользователей
БСП

Выгрузить все события журнала регистрации. Выгружает журнал регистрации по событиям во временное хранилище.

// Выгружает журнал регистрации по событиям во временное хранилище.
//
// Параметры:
//  ПараметрыОтбора - Структура - структура с ключами:
//   * ДатаНачала    - Дата - начало периода журнала;
//   * ДатаОкончания - Дата - конец периода журнала;
//   * Событие       - Массив - массив событий (см. [МодульПодсистемыКлиентСервер].ПолучитьСписокВсехСобытийЖурналаРегистрации).
//  ПараметрыФайлаВыгрузки - Структура, Неопределено - структура с ключами:
//   * Архивировать - Булево - Истина, если необходимо архивировать выгрузку.
//
// Возвращаемое значение:
//   Структура с ключами:
//    * АдресВременногоХранилищаФайла - Строка - Адрес выгруженных данных в хранилище;
//    * ТекстОшибки - Строка - Текст ошибки или пустая строка.
//
Функция ВыгрузитьВсеСобытияЖурналаРегистрации(ПараметрыОтбора, ПараметрыФайлаВыгрузки = Неопределено) Экспорт

	Результат = Новый Структура("АдресВременногоХранилищаФайла, ТекстОшибки", "", "");

	ТипСтруктура = Тип("Структура");

	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
	ИмяФайлаАрхива     = ПолучитьИмяВременногоФайла("zip");

	// Если действие - длительное (журнал регистрации очень большой), то возможна ситуация,
	//  когда управление будет передано другому рабочему процессу,
	//  находящемуся на другом сервере и тогда временный каталог может стать недоступен.
	// В этом случае у пользователя выскочит ошибка и надо будет снова попробовать выгрузить данные.

	Попытка

		УстановитьПривилегированныйРежим(Истина);

			Если ТипЗнч(ПараметрыОтбора) = ТипСтруктура Тогда
				ПараметрыОтбораПравильный = Новый Структура("ДатаНачала, ДатаОкончания, Событие");
				ЗаполнитьЗначенияСвойств(ПараметрыОтбораПравильный, ПараметрыОтбора);
				Если ПараметрыОтбораПравильный.ДатаНачала = Неопределено Тогда
					ПараметрыОтбораПравильный.Вставить("ДатаНачала", НачалоДня(ТекущаяДатаСеанса()));
				КонецЕсли;
				Если ПараметрыОтбораПравильный.ДатаОкончания = Неопределено Тогда
					ПараметрыОтбораПравильный.Вставить("ДатаОкончания", КонецДня(ТекущаяДатаСеанса()));
				КонецЕсли;
			КонецЕсли;

			ВыгрузитьЖурналРегистрации(
				ИмяВременногоФайла,
				ПараметрыОтбораПравильный);

			ФайлВременный = Новый Файл(ИмяВременногоФайла);
			Если ФайлВременный.Существует() Тогда
				Если ТипЗнч(ПараметрыФайлаВыгрузки) = ТипСтруктура Тогда
					Если (ПараметрыФайлаВыгрузки.Свойство("Архивировать"))
							И (ПараметрыФайлаВыгрузки.Архивировать = Истина) Тогда
						Архив = Новый ЗаписьZipФайла(
							ИмяФайлаАрхива,
							, // Без пароля
							СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
								НСтр("ru='Выгрузка журнала регистраций библиотеки БИП за период %1...%2'"),
								Формат(ПараметрыОтбораПравильный.ДатаНачала, "ДЛФ=DT"),
								Формат(ПараметрыОтбораПравильный.ДатаОкончания, "ДЛФ=DT")),
							МетодСжатияZIP.Сжатие,
							УровеньСжатияZIP.Максимальный);
						Архив.Добавить(ИмяВременногоФайла, РежимСохраненияПутейZIP.НеСохранятьПути, РежимОбработкиПодкаталоговZIP.НеОбрабатывать);
						Архив.Записать();
						Результат.Вставить("АдресВременногоХранилищаФайла", ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайлаАрхива)));
					Иначе
						Результат.Вставить("АдресВременногоХранилищаФайла", ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяВременногоФайла)));
					КонецЕсли;
				КонецЕсли;
			Иначе
				Результат.Вставить("ТекстОшибки",
					СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
						НСтр("ru='Файл с выгрузкой событий журнала регистрации не существует.
							|Возможно, отсутствуют события за указанный период (%1...%2).'"),
						Формат(ПараметрыОтбораПравильный.ДатаНачала, "ДЛФ=DT"),
						Формат(ПараметрыОтбораПравильный.ДатаОкончания, "ДЛФ=DT")));
			КонецЕсли;

		УстановитьПривилегированныйРежим(Ложь);

	Исключение

		ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru='Не удалось экспортировать события журнала регистрации в файл по причине:
				|%1'"),
			ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));

		Результат.Вставить("ТекстОшибки", ТекстСообщения);

		ЗаписатьСообщениеВЖурналРегистрации(
			НСтр("ru='БИП:БазовыйФункционал.Отладка'"), // ИмяСобытия
			НСтр("ru='БазовыйФункционал. Отладка. Экспорт журнала регистрации'"), // ИдентификаторШага
			УровеньЖурналаРегистрации.Ошибка, // УровеньЖурналаРегистрации.*
			, // ОбъектМетаданных
			, // Данные
			ТекстСообщения); // Комментарий

	КонецПопытки;

	Попытка
		УдалитьФайлы(ИмяВременногоФайла);
	Исключение
		ЗаписатьСообщениеВЖурналРегистрации(
			НСтр("ru='БИП:БазовыйФункционал.Отладка'"), // ИмяСобытия
			НСтр("ru='БазовыйФункционал. Отладка. Экспорт журнала регистрации'"), // ИдентификаторШага
			УровеньЖурналаРегистрации.Ошибка, // УровеньЖурналаРегистрации.*
			, // ОбъектМетаданных
			, // Данные
			ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); // Комментарий
	КонецПопытки; 

	Попытка
		УдалитьФайлы(ИмяФайлаАрхива);
	Исключение
		ЗаписатьСообщениеВЖурналРегистрации(
			НСтр("ru='БИП:БазовыйФункционал.Отладка'"), // ИмяСобытия
			НСтр("ru='БазовыйФункционал. Отладка. Экспорт журнала регистрации'"), // ИдентификаторШага
			УровеньЖурналаРегистрации.Ошибка, // УровеньЖурналаРегистрации.*
			, // ОбъектМетаданных
			, // Данные
			ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); // Комментарий
	КонецПопытки;

	Возврат Результат;

КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

СобытиеЖурналаРегистрации (БСП)

ИмяСобытияЖурналаРегистрации (БСП)

СобытиеЖурналаРегистрацииОбменДанными (БСП)

ЗаписатьСобытияВЖурналРегистрации (БСП)

ПолучитьИмяСобытияДляЖурналаРегистрации (БСП)

СобытиеЖурналаРегистрацииСинхронизацииДанных (БСП)

TurboConf 6 - расширение Конфигуратора 1С