(С) Код не мой, где взял не помню :) Полежит тут на память.
///////////////////////////////////////////////////////////////////////
Функция вед0(ч)
Если ч<10 Тогда
Возврат "0"+ч;
Иначе
Возврат ""+ч;
КонецЕсли;
КонецФункции
///////////////////////////////////////////////////////////////////////
Функция ДатаВСтроку(прм_Дата)
Возврат ""+ДатаГод(прм_Дата)+вед0(ДатаМесяц(прм_Дата))+ вед0(ДатаЧисло(прм_Дата));
КонецФункции
///////////////////////////////////////////////////////////////////////
Функция СтрокаВДату(прм_стр)
гг=0+Лев(прм_стр,4);
мм=0+Сред(прм_стр,5,2);
дд=0+Сред(прм_стр,7,2);
Возврат Дата(гг,мм,дд);
КонецФункции
///////////////////////////////////////////////////////////////////////
Функция ОбъектПоСтроке(прм_стр)
//Возвращает ссылку на объект (например, документ или справочник)
//по строке вида O/7549/2093806
стр=""""+СтрЗаменить(прм_стр,"/", """,""")+"""";
сп=СоздатьОбъект("СписокЗначений");
сп.ИзСтрокиСРазделителями(стр);
Вид=сп.ПолучитьЗначение(1);
Тип=сп.ПолучитьЗначение(2);
Код=сп.ПолучитьЗначение(3);
стр="{"""+Вид+""",""0"",""0"","""+тип+""",""0"",""0"","""+Код+"""}";
Возврат ЗначениеИзСтрокиВнутр(стр);
КонецФункции
//*******************************************
Процедура Сформировать()
ф_тз.Очистить();
ф_тз.НоваяКолонка("Дата","Дата");
ф_тз.НоваяКолонка("Время","Строка",8);
ф_тз.НоваяКолонка("Пользователь","Строка");
ф_тз.НоваяКолонка("Где","Строка",1);
ф_тз.НоваяКолонка("Действие","Строка",8);
ф_тз.НоваяКолонка("Событие","Строка",20);
ф_тз.НоваяКолонка("ДопКод","Число",5);
ф_тз.НоваяКолонка("Описание","Строка");
ф_тз.НоваяКолонка("ИД","Строка");
ф_тз.НоваяКолонка("Представление","Строка");
ф_тз.НоваяКолонка("Объект");
Если ПустоеЗначение(НачДата)=1 Тогда
Предупреждение("Укажите начальную дату.");
Возврат;
КонецЕсли;
Если ПустоеЗначение(КонДата)=1 Тогда
Предупреждение("Укажите конечную дату.");
Возврат;
КонецЕсли;
сч=0;
fso=СоздатьОбъект("Scripting.FileSystemObject");
ИмяФайла=КаталогИБ()+"SYSLOG\1cv7.mlg";
file=fso.OpenTextFile(ИмяФайла, 1, 0, 0); //Открываем файл в режиме "только чтение"
стрНачДата=ДатаВСтроку(НачДата);
стрКонДата=ДатаВСтроку(КонДата);
Пока file.AtEndOfStream=0 Цикл //Читаем следующую строку файла
сч=сч+1;
стр=file.ReadLine();
стрДата1=Лев(стр,17);
стрДата=Лев(стр,8);
Если сч%10=0 Тогда
Состояние(стрДата1);
КонецЕсли;
//Пропускаем события вне указанного диапазона
Если стрДата<стрНачДата Тогда
Продолжить;
КонецЕсли;
Если стрДата>стрКонДата Тогда
Продолжить;
КонецЕсли;
стр=СтрЗаменить(стр,";",""",""");
стр=""""+стр+"""";
сп=СоздатьОбъект("СписокЗначений");
сп.ИзСтрокиСРазделителями(стр);
пДата=СтрокаВДату(сп.ПолучитьЗначение(1));
пВремя=сп.ПолучитьЗначение(2);
пПользователь=сп.ПолучитьЗначение(3);
пГде=сп.ПолучитьЗначение(4);
пДействие=сп.ПолучитьЗначение(5);
пСобытие=СокрЛП(сп.ПолучитьЗначение(6));
пДопКод=сп.ПолучитьЗначение(7);
пОписание=сп.ПолучитьЗначение(8);
Если сп.РазмерСписка()>=9 Тогда
пИД=сп.ПолучитьЗначение(9);
КонецЕсли;
Если сп.РазмерСписка()>=10 Тогда
пПредставление=сп.ПолучитьЗначение(10);
КонецЕсли;
ф_тз.НоваяСтрока();
ф_тз.Дата=пДата;
ф_тз.Время=пВремя;
ф_тз.Пользователь=пПользователь;
ф_тз.Где=пГде;
ф_тз.Действие=пДействие;
ф_тз.Событие=пСобытие;
ф_тз.ДопКод=пДопКод;
ф_тз.Описание=пОписание;
ф_тз.ИД=пИД;
ф_тз.Представление=пПредставление;
ф_тз.Объект=ОбъектПоСтроке(пИД);
КонецЦикла;
КонецПроцедуры
Комментариев нет:
Отправить комментарий