|
|
Создать свой Журнала Регистрации mlg для обмена |
☑ |
|
0
dzksoft
13.02.08
✎
15:27
|
Нужна такая вещь как журнал регистрации обмена чтобы можно было видеть загрузилась ли база, с ошибкой ли, и так далее. Дело в том что стандарный МЛГ можно бы использовать, но он много ресурсов системы "ЖРЕД"
|
|
|
1
dzksoft
13.02.08
✎
15:32
|
Наверное с такой ф....й ни кто не стричался, жаль
|
|
|
2
dk
13.02.08
✎
15:33
|
//******************************************************************************
// глСохранитьЛогВФайл()
//
// Параметры:
//
//
// Возвращаемое значение:
// Нет
//
// Описание:
// ТекстОписания
//
Процедура глСохранитьЛогВФайл()
Перем Сч, ИмяФайлаЛога;
Если гл_ТЗ_Лог.КоличествоСтрок() > 0 Тогда
ИмяФайлаЛога = КаталогИБ() + "Syslog\test.mlg";
Попытка
fso = CreateObject("Scripting.FileSystemObject");
f = fso.OpenTextFile(ИмяФайлаЛога, 8, 1);
Исключение
Возврат;
КонецПопытки;
///--------------------------------------------------------------------------------
// ВремНач = _GetPerformanceCounter();
///--------------------------------------------------------------------------------
гл_ТЗ_Лог.ВыбратьСтроки();
Пока гл_ТЗ_Лог.ПолучитьСтроку() > 0 Цикл
ПечПарам1 = Формат(гл_ТЗ_Лог.Дата, "дГГГГММДД");
ПечПарам2 = СокрЛП(гл_ТЗ_Лог.Время);
ПечПарам3 = СокрЛП(гл_ТЗ_Лог.Пользователь);
ПечПарам4 = "E";
Если гл_ТЗ_Лог.ТипОбъекта = "Справочник" Тогда
ПечПарам5 = "Refs";
ПечПарам6 = "RefWrite";
ПечПарам7 = "2";
ПечПарам8 = СокрЛП(гл_ТЗ_Лог.Сотрудник) + " *** " + СокрЛП(гл_ТЗ_Лог.Реквизит) + " : " +
"Было:" + глПолучитьПредставлениеОбъектаДляЛога(гл_ТЗ_Лог.Было) + " *** " +
"Стало:" + глПолучитьПредставлениеОбъектаДляЛога(гл_ТЗ_Лог.Стало);
ПечПарам9 = глПолучитьИдентификаторОбъектаДляЛога(гл_ТЗ_Лог.Объект);
ПечПарам10 = Метаданные.Справочник(гл_ТЗ_Лог.Объект.Вид()).Синоним;
Если ПустоеЗначение(ПечПарам10) = 1 Тогда
ПечПарам10 = гл_ТЗ_Лог.Объект.Вид();
КонецЕсли; //"Если ПустоеЗначение(ПечПарам10) = 1 Тогда
ПечПарам10 = ПечПарам10 + " " + СокрЛП(гл_ТЗ_Лог.Объект.Код) + " " + СокрЛП(гл_ТЗ_Лог.Объект.Наименование) + ";";
ИначеЕсли гл_ТЗ_Лог.ТипОбъекта = "Документ" Тогда
ПечПарам5 = "Docs";
ПечПарам6 = "DocWrite";
ПечПарам7 = "2";
ПечПарам8 = СокрЛП(гл_ТЗ_Лог.Сотрудник) + " *** " + СокрЛП(гл_ТЗ_Лог.Реквизит) + " : " +
"Было: " + глПолучитьПредставлениеОбъектаДляЛога(гл_ТЗ_Лог.Было) +
" *** Стало:" + глПолучитьПредставлениеОбъектаДляЛога(гл_ТЗ_Лог.Стало);
ПечПарам9 = глПолучитьИдентификаторОбъектаДляЛога(гл_ТЗ_Лог.Объект);
ПечПарам10 = Метаданные.Документ(гл_ТЗ_Лог.Объект.Вид()).Синоним;
Если ПустоеЗначение(ПечПарам10) = 1 Тогда
ПечПарам10 = гл_ТЗ_Лог.Объект.Вид();
КонецЕсли; //"Если ПустоеЗначение(ПечПарам10) = 1 Тогда
ПечПарам10 = ПечПарам10 + " " + гл_ТЗ_Лог.Объект.НомерДок + " " + гл_ТЗ_Лог.Объект.ДатаДок + " " + гл_ТЗ_Лог.Объект.ПолучитьВремя() + ";";
ИначеЕсли гл_ТЗ_Лог.ТипОбъекта = "Константа" Тогда
ПечПарам5 = "Consts";
ПечПарам6 = "ConstWrite";
ПечПарам7 = "2";
ПечПарам8 = СокрЛП(гл_ТЗ_Лог.Сотрудник) + " *** " + СокрЛП(гл_ТЗ_Лог.Реквизит) + " : " +
"Было:" + глПолучитьПредставлениеОбъектаДляЛога(гл_ТЗ_Лог.Было) + " *** " +
"Стало:" + глПолучитьПредставлениеОбъектаДляЛога(гл_ТЗ_Лог.Стало);
ПечПарам9 = СокрЛП(гл_ТЗ_Лог.Реквизит);
ПечПарам10 = "";
Иначе
ПечПарам5 = "";
ПечПарам6 = "";
ПечПарам7 = "";
ПечПарам8 = "";
ПечПарам9 = "";
ПечПарам10 = ";";
КонецЕсли; //"Если гл_ТЗ_Лог.ТипОбъекта = "Справочник" Тогда
ВремСтр = ПечПарам1 + ";" + ПечПарам2 + ";" + ПечПарам3 + ";" + ПечПарам4 + ";" + ПечПарам5 + ";" +
ПечПарам6 + ";" + ПечПарам7 + ";" + ПечПарам8 + ";" + ПечПарам9 + ";" + ПечПарам10;
f.WriteLine(ВремСтр);
КонецЦикла; //@Пока гл_ТЗ_Лог.ПолучитьСтроку() > 0 Цикл
f.Close();
гл_ТЗ_Лог.УдалитьСтроки();
///--------------------------------------------------------------------------------
// ВремКон = _GetPerformanceCounter();
//
// Сообщить("--------------------------------------------------------------------------------");
// Сообщить("Время записи в файл лога:" + СокрЛП(Формат((ВремКон - ВремНач) / 1000, "Ч15.3")));
// Сообщить("Количество строк в файле лога:" + СокрЛП(КолСтр));
///--------------------------------------------------------------------------------
КонецЕсли; //@Если гл_ТЗ_Лог.КоличествоСтрок() > 0 Тогда
КонецПроцедуры // глСохранитьЛогВФайл()
|
|
|
3
savaB
13.02.08
✎
15:35
|
Вот это мне встречалось
Цель проэкта. Передо мной была поставлена задача :
за любой интервал дат получить успешные подгрузки в УРБД.
У нас подгрузки могут осуществляться как автоматически так
и в ручном режиме ( по срочной необходимости).
Проанализировав ситуацию оказалось, что информация об успешных подгрузках
храниться только в mlg файле. Средствами 1с анализировать mlg файл нереально -
поэтому был написан com server для обработки mlg файла. Две другие обработки
были написаны в дополнение к отчету по успешные подгрузки
Основная идея com servera : выбирать из всего mlg файла только те строки,
которые отвечают заданным критериям, передавать эти строки 1с программе,
и там их отображать.
В поставку входит com server так и три работающих отчета.
Разработку можно использовать двояко :
1. использовать имеющиеся три отчета ( настроив в них параметры)
2. написать свои отчеты, решающие Ваши задачи.
|
|
|
4
romix
модератор
13.02.08
✎
15:37
|
|
|
|
5
romix
модератор
13.02.08
✎
15:42
|
(+4) На больших файлах не тормозит, т.к. читает построчно.
|
|
|
6
dzksoft
13.02.08
✎
15:47
|
глПолучитьПредставлениеОбъектаДляЛога ???? а Здеся что ???
|
|
|
7
dk
13.02.08
✎
15:51
|
//******************************************************************************
// глПолучитьИдентификаторОбъектаДляЛога(Объект)
//
// Параметры:
// Объект
//
// Возвращаемое значение:
// Нет
//
// Описание:
// ТекстОписания
//
Функция глПолучитьИдентификаторОбъектаДляЛога(Объект)
Перем Результат, Стр_, Стр, Стр1, Стр2, Стр3;
Результат = "";
Стр_ = СтрЗаменить(ЗначениеВСтрокуВнутр(Объект), """", РазделительСтрок);
Если СтрКоличествоСтрок(Стр_) = 15 Тогда
Стр = СтрПолучитьСтроку(Стр_, 14);
Стр1 = СтрПолучитьСтроку(Стр_, 8);
Стр2 = СокрЛП(Лев(Стр, 10));
Стр3 = СокрЛП(Прав(Стр, 3));
Если ПустоеЗначение(Стр3) <> 1 Тогда
Стр3 = "/(" + Стр3 + ")";
Иначе
Стр3 = "/";
КонецЕсли;
Если ТипЗначенияСтр(Объект) = "Справочник" Тогда
Результат = "B/";
ИначеЕсли ТипЗначенияСтр(Объект) = "Документ" Тогда
Результат = "O/";
КонецЕсли;
Результат = Результат + Стр1 + Стр3 + Стр2;
КонецЕсли; //"Если СтрКоличествоСтрок(Стр_) = 15 Тогда
Возврат Результат;
КонецФункции // глПолучитьИдентификаторОбъектаДляЛога()
---
//******************************************************************************
// глПолучитьПредставлениеОбъектаДляЛога(Объект)
//
// Параметры:
// Объект
//
// Возвращаемое значение:
// Нет
//
// Описание:
// ТекстОписания
//
Функция глПолучитьПредставлениеОбъектаДляЛога(Объект)
Перем Результат, Стр1, Стр2;
Результат = "";
Стр1 = ЗначениеВСтроку(Объект);
Стр2 = СтрЗаменить(Стр1, ";", ":");
Результат = СтрЗаменить(Стр2, """", "'");
Возврат Результат;
КонецФункции // глПолучитьПредставлениеОбъектаДляЛога()
|
|
|
8
dzksoft
13.02.08
✎
16:03
|
dk (2),(7), плиз не много расшифруй, я так понял этот файл ставится в конфиг который пишет отдельный лог... !!! так иль нет
|
|
|
9
dk
13.02.08
✎
16:05
|
угу, это отдельный лог по интерактивным (пользователями) изменениям объектов (доки, справочники, константы) в базе. С описание как было и как стало.
|
|
|
10
dk
13.02.08
✎
16:05
|
потом удобно открывать в 1с и делать фильмтрацию по объектам измененным
|
|
|
11
Mikeware
13.02.08
✎
16:21
|
(4,5) все равно долго - пробовал.
выделяй сегодняшний кусок, и его уже разбирай. Обычно хватает 5 секунд
Процедура ОбновитьТЗОбмена()
ТЗОбмена.УдалитьСтроки();
Фильтр=Строка(Строка(ДатаГод(ТекущаяДата()))+Прав("00"+Строка(ДатаМесяц(ТекущаяДата())),2)+Прав("00"+Строка(ДатаЧисло(ТекущаяДата())),2));
ДатаЛог=СокрЛП(Фильтр);
ЧасЛог=Лев(ТекущееВремя(),3);
ВремяНачалаПарсинга=ТекущееВремя();
Форма.текстСостояниеОбмена.Цвет(255,0,0);
Форма.текстСостояниеОбмена.Заголовок("Идет выполнение запроса");
Если ПустоеЗначение(Фильтр)=1 Тогда
Стр=Шаблон("[ДатаЛог];[ЧасЛог]");
Иначе
Стр=СокрЛП(Фильтр);
КонецЕсли;
ФайлЛог=СокрЛП(КаталогВременныхФайлов()+_GetPerformanceCounter()+".txt");
ЗапуститьПриложение(Шаблон("cmd /c start /MIN cmd /c ""findstr /b /c:""""[Стр]"""" """"[КаталогИБ()]syslog\1cv7.mlg"""">""""[ФайлЛог]"""""));
Форма.ОбработкаОжидания("ПроверкаФайлаЛога",15);
КонецПроцедуры
|
|
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой