gifts2017

Простейший лог-файл

Опубликовал Дмитрий Никс (aximo) в раздел Программирование - Практика программирования

Представляю вам процедуру, которая помимо того как выводит сообщение, пишет это сообщение в настраиваемый лог-файл.

Представляю вам процедуру, которая помимо того как выводит сообщение, пишет это сообщение в настраиваемый лог-файл.

"Зубрам 1С" процедура будет малоинтересна, новичкам - поможет отследить "деяния" юзеров с вашей обработкой.

Привожу пример данной процедуры (она помещается в модуль обработки как экспортная:

 

Процедура ЛогСообщить(М) Экспорт

	Сообщить(Формат(ТекущаяДата(),"ДЛФ=DT")+": "+М);
	
	ИмяФайла = "LogFile.txt";
	OShell = Новый COMОбъект("WScript.Shell");
 	ТекДирек = OShell.CurrentDirectory+"\";
	ЛогФайл = Новый ЗаписьТекста(ТекДирек+ИмяФайла, КодировкаТекста.ANSI,,Истина,);
	ЛогФайл.Записать(Формат(ТекущаяДата(),"ДЛФ=DT")+": "+М+Символы.ПС);
	ЛогФайл.Закрыть();
	
КонецПроцедуры

обращаться к этой процедуре очень просто:

 

ЛогСообщить("Привет, запись добавлена в файл");


Думаю, кому-нибудь данная процедура пригодится.



Скачать файлы

Наименование Файл Версия Размер
пример файла 2
.epf 6,77Kb
20.01.14
2
.epf 1.00 6,77Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Василий Казьмин (awk) 21.01.14 11:51
(0) Для всего этого есть:
1. Объект 1С ЗаписьТекста.
2. Журнал регистрации
Использование СОМ объекта для данной задачи - это...............
levante90; cool.vlad4; +2 Ответить
2. Франко Деллиани (Franco) 21.01.14 13:18
вместо

OShell = Новый COMОбъект("WScript.Shell");
ТекДирек = OShell.CurrentDirectory+"\";

можно использовать в модуле обработки

ИмяФайлаОбработки = ИспользуемоеИмяФайла;
Файл = Новый Файл(ИмяФайлаОбработки);
Каталог = СокрЛП(Файл.Путь);
Файл = Неопределено;
3. Франко Деллиани (Franco) 21.01.14 13:22
а чтобы проверить на конечный слэш, то

Разделитель = ПолучитьРаздПутиСервера(); //в 8.2
Если Не Прав(Каталог, 1) = Разделитель Тогда
Каталог = Каталог + Разделитель;
КонецЕсли;

Функция ПолучитьРаздПутиСервера()
сисИнфо = Новый СистемнаяИнформация;
Если Найти(НРег(СокрЛП(Строка(сисИнфо.ТипПлатформы))), "windows") Тогда
Разделитель = "\";
Иначе
Разделитель = "/";
КонецЕсли;
сисИнфо = Неопределено;
Возврат Разделитель;
КонецФункции
4. Дмитрий Никс (aximo) 22.01.14 06:37
Думаю, что данная процедура все-таки имеет место быть, для быстрого определения "когда, как и сколько раз" запускалась внешняя обработка, на каком этапе в ней произошла "загвоздка"...

Тем более, если обработка запускается через планировщик задач.

На счет применения этой процедуры - это уже вам решать...
5. Virikus 22.01.14 07:10
(4) да это все чушь.

Использовать скрипт для этой цели не годится. А если база серверная, где потом искать этот лог?
6. Alexandr Surkov (basta-one2007) 28.01.15 06:10
Немного переписал, может кому пригодится:

Функция пр_ЛогСоздать () Экспорт
	КаталогИБ = НСтр(СтрокаСоединенияИнформационнойБазы(), "File");
	ИмяФайла = КаталогИБ+ "\LogFile_"+Формат(ТекущаяДата(),"ДФ=""ггггММдд_ччммсс""") +".txt";
 	Возврат ИмяФайла;
КонецФункции	
Процедура пр_ЛогСообщить(М,ИмяФайла) Экспорт
    Сообщить(Формат(ТекущаяДата(),"ДЛФ=DT")+": "+М);
    ЛогФайл = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI,,Истина,);
    ЛогФайл.Записать(Формат(ТекущаяДата(),"ДЛФ=DT")+": "+М+Символы.ПС);
    ЛогФайл.Закрыть();
КонецПроцедуры
...Показать Скрыть