Admin ›
Информер 1С ›
#9
18.11.11 16:47
dt-шника не заготовил, но ГАПсервер в примере это имя общего модуля, в котором лежат вспомогательные процедуры и функции (например, получение констант, связанных с информером).
Вот примеры процедур и функций:
Код |
---|
//регламентная процедура, выгружает вспомогательный регистр сведений в файлы
Процедура СозданиеФайловОповещенийДляИнформера() Экспорт
УстановитьПривилегированныйРежим(Истина);
КаталогСообщенийДляИнформера = Константы.КаталогСообщенийДляИнформера.Получить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СообщенияИнформера.ДатаВремя,
| СообщенияИнформера.ИмяФайла,
| СообщенияИнформера.Сообщение
|ИЗ
| РегистрСведений.СообщенияИнформера КАК СообщенияИнформера
|ГДЕ
| СообщенияИнформера.Выгружено = ЛОЖЬ";
ТЗ = Запрос.Выполнить().Выгрузить();
Для Каждого Стр Из ТЗ Цикл
СтатусЗаписи = Ложь;
ИмяФайла = Стр.ИмяФайла;
Дата = Формат(Стр.ДатаВремя,"ДФ='dd/MM/yy HH:mm'");
Сообщение = Стр.Сообщение;
ФайлСообщения = Новый ТекстовыйДокумент;
ФайлСообщения.ДобавитьСтроку(""+Дата+" "+Сообщение);
Попытка
ФайлСообщения.Записать(КаталогСообщенийДляИнформера+ИмяФайла, "windows-1251");
СтатусЗаписи = Истина;
Исключение
СтатусЗаписи = Ложь;
КонецПопытки;
Если СтатусЗаписи Тогда
МЗ = РегистрыСведений.СообщенияИнформера.СоздатьМенеджерЗаписи();
МЗ.ДатаВремя = Стр.ДатаВремя;
МЗ.ИмяФайла = ИмяФайла;
МЗ.Прочитать();
МЗ.Выгружено = Истина;
МЗ.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
//ехе-шник хранится в общем макете
Функция ФайлИнформера() Экспорт
Возврат ПолучитьОбщийМакет("Информер");
КонецФункции
Функция ПолучитьКодАвторизацииИнформера(Пользователь = Неопределено) Экспорт
УстановитьПривилегированныйРежим(истина);
Если Пользователь = Неопределено Тогда
Пользователь = ПараметрыСеанса.ТекущийПользователь;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| КодыАвторизацииИнформера.КодАвторизации
|ИЗ
| РегистрСведений.КодыАвторизацииИнформера КАК КодыАвторизацииИнформера
|ГДЕ
| КодыАвторизацииИнформера.Пользователь = &Пользователь";
Запрос.УстановитьПараметр("Пользователь",Пользователь);
Рез = Запрос.Выполнить();
Код = "";
Если НЕ Рез.Пустой() Тогда
Выборка = Рез.Выбрать();
Выборка.Следующий();
Код = ""+Выборка.КодАвторизации;
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
Возврат Код;
КонецФункции
Функция ТекущаяВерсияИнформера() Экспорт
Возврат Константы.ТекущаяВерсияИнформера.Получить();
КонецФункции
//удаляет файлы конкретного пользователя при открытии им задачи
Процедура УдалитьФайлыИнформераПоПользователюНаСервере(Пользователь) Экспорт
УстановитьПривилегированныйРежим(Истина);
Каталог = Константы.КаталогСообщенийДляИнформера.Получить();
Код = ПолучитьКодАвторизацииИнформера(Пользователь);
МФайлов = НайтиФайлы(Каталог,Код+"????????????????????");
Для Каждого Ф Из МФайлов Цикл
УдалитьФайлы(Ф.ПолноеИмя);
КонецЦикла;
КонецПроцедуры
// регламентная, удаляет старые файлы
Процедура УдалениеОповещенийИнформера() Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СообщенияИнформера.ДатаВремя,
| СообщенияИнформера.ИмяФайла,
| СообщенияИнформера.Сообщение,
| СообщенияИнформера.Выгружено,
| СообщенияИнформера.Пользователь
|ИЗ
| РегистрСведений.СообщенияИнформера КАК СообщенияИнформера
|ГДЕ
| СообщенияИнформера.ДатаВремя > &ДатаВремя";
Запрос.УстановитьПараметр("ДатаВремя",ТекущаяДата()- 86400*3);
МЗ = РегистрыСведений.СообщенияИнформера.СоздатьНаборЗаписей();
МЗ.Загрузить(Запрос.Выполнить().Выгрузить());
МЗ.Записать();
Файлы = НайтиФайлы(Константы.КаталогСообщенийДляИнформера.Получить(),"????????????????????????????????????????.*",Ложь);
Для Каждого Ф из Файлы Цикл
//Ф = Новый Файл(); //УДАЛИТЬ!
Если Ф.ПолучитьВремяИзменения() < НачалоДня((ТекущаяДата() - 86400*3)) Тогда
УдалитьФайлы(Ф.ПолноеИмя);
КонецЕсли;
КонецЦикла;
КонецПроцедуры |