Выгрузить все события журнала регистрации. Выгружает журнал регистрации по событиям во временное хранилище.
// Выгружает журнал регистрации по событиям во временное хранилище.
//
// Параметры:
// ПараметрыОтбора - Структура - структура с ключами:
// * ДатаНачала - Дата - начало периода журнала;
// * ДатаОкончания - Дата - конец периода журнала;
// * Событие - Массив - массив событий (см. [МодульПодсистемыКлиентСервер].ПолучитьСписокВсехСобытийЖурналаРегистрации).
// ПараметрыФайлаВыгрузки - Структура, Неопределено - структура с ключами:
// * Архивировать - Булево - Истина, если необходимо архивировать выгрузку.
//
// Возвращаемое значение:
// Структура с ключами:
// * АдресВременногоХранилищаФайла - Строка - Адрес выгруженных данных в хранилище;
// * ТекстОшибки - Строка - Текст ошибки или пустая строка.
//
Функция ВыгрузитьВсеСобытияЖурналаРегистрации(ПараметрыОтбора, ПараметрыФайлаВыгрузки = Неопределено) Экспорт
Результат = Новый Структура("АдресВременногоХранилищаФайла, ТекстОшибки", "", "");
ТипСтруктура = Тип("Структура");
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("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
///////////////////////////////////////////////////////////////////////////////////////////////////////
СобытиеЖурналаРегистрации (БСП)
ИмяСобытияЖурналаРегистрации (БСП)
СобытиеЖурналаРегистрацииОбменДанными (БСП)
ЗаписатьСобытияВЖурналРегистрации (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)