You've already forked 1c-parsing-tech-log
mirror of
https://github.com/Polyplastic/1c-parsing-tech-log.git
synced 2025-11-23 22:04:45 +02:00
Исправление ошибки - невозможен запуск в файловом режиме. Оптимизация
This commit is contained in:
10
parsing-tech-log/.settings/ManagedEnvironments.prefs
Normal file
10
parsing-tech-log/.settings/ManagedEnvironments.prefs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
CLIENT=false
|
||||||
|
EXTERNAL_CONN=false
|
||||||
|
MNG_CLIENT=false
|
||||||
|
MOBILE_CLIENT=false
|
||||||
|
MOBILE_SERVER=false
|
||||||
|
MOBILE_THIN_CLIENT=false
|
||||||
|
SERVER=true
|
||||||
|
THIN_CLIENT=true
|
||||||
|
WEB_CLIENT=false
|
||||||
|
eclipse.preferences.version=1
|
||||||
2
parsing-tech-log/.settings/RuntimePropertyLaunch.prefs
Normal file
2
parsing-tech-log/.settings/RuntimePropertyLaunch.prefs
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
ClientServer=true
|
||||||
|
eclipse.preferences.version=1
|
||||||
@@ -29,7 +29,8 @@
|
|||||||
|
|
||||||
//пропуск пустых файлов
|
//пропуск пустых файлов
|
||||||
ФайлТЖ = Новый Файл(ИмяФайлаДляРазбора);
|
ФайлТЖ = Новый Файл(ИмяФайлаДляРазбора);
|
||||||
Если ФайлТЖ.Размер()<=3 Тогда
|
РазмерФайла = ФайлТЖ.Размер();
|
||||||
|
Если РазмерФайла <=3 Тогда
|
||||||
Возврат 0;
|
Возврат 0;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
@@ -45,7 +46,14 @@
|
|||||||
Если СтрокаТекста = Неопределено Тогда
|
Если СтрокаТекста = Неопределено Тогда
|
||||||
|
|
||||||
//может быть прочитано строк не поменялось а полностью поменялось
|
//может быть прочитано строк не поменялось а полностью поменялось
|
||||||
РегистрыСведений.ГраницыЧтенияДанных.УстановитьСостояние(Замер, Процесс, ПроцессID, Период, ПрочитаноСтрок, ДатаНачалаЧтения);
|
РегистрыСведений.ГраницыЧтенияДанных.УстановитьСостояние(
|
||||||
|
Замер,
|
||||||
|
Процесс,
|
||||||
|
ПроцессID,
|
||||||
|
Период,
|
||||||
|
ПрочитаноСтрок,
|
||||||
|
ДатаНачалаЧтения,
|
||||||
|
РазмерФайла);
|
||||||
|
|
||||||
Возврат 0;
|
Возврат 0;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
@@ -149,7 +157,14 @@
|
|||||||
Текст.Закрыть();
|
Текст.Закрыть();
|
||||||
|
|
||||||
// Обвновление инфорации о количестве прочитанных строк
|
// Обвновление инфорации о количестве прочитанных строк
|
||||||
РегистрыСведений.ГраницыЧтенияДанных.УстановитьСостояние(Замер, Процесс, ПроцессID, Период, ПрочитаноСтрок, ДатаНачалаЧтения);
|
РегистрыСведений.ГраницыЧтенияДанных.УстановитьСостояние(
|
||||||
|
Замер,
|
||||||
|
Процесс,
|
||||||
|
ПроцессID,
|
||||||
|
Период,
|
||||||
|
ПрочитаноСтрок,
|
||||||
|
ДатаНачалаЧтения,
|
||||||
|
РазмерФайла);
|
||||||
|
|
||||||
Возврат РазобраноСтрок;
|
Возврат РазобраноСтрок;
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@@ -173,6 +188,62 @@
|
|||||||
Возврат СокрЛП(Результат);
|
Возврат СокрЛП(Результат);
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ПолучитьВременныеПараметрыПоСвойствамФайла(Знач ФайлТЖ) Экспорт
|
||||||
|
|
||||||
|
СвойстваФайла = новый Структура("Год,День,Месяц,Час,ДатаФайла");
|
||||||
|
|
||||||
|
СвойстваФайла.Год = Число(Лев(ФайлТЖ.Имя, 2));
|
||||||
|
СвойстваФайла.Месяц = Число(Сред(ФайлТЖ.Имя, 3, 2));
|
||||||
|
СвойстваФайла.День = Число(Сред(ФайлТЖ.Имя, 5, 2));
|
||||||
|
СвойстваФайла.Час = Число(Прав(ФайлТЖ.ИмяБезРасширения, 2));
|
||||||
|
СвойстваФайла.ДатаФайла = Дата(СвойстваФайла.Год + 2000, СвойстваФайла.Месяц, СвойстваФайла.День, СвойстваФайла.Час, 0, 0);
|
||||||
|
|
||||||
|
Возврат СвойстваФайла;
|
||||||
|
|
||||||
|
КонецФункции // ПрочитатьЖурналПоРегистру
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область ЧтениеИзОбработки
|
||||||
|
|
||||||
|
Процедура ЗагрузкаЖурнала(Замер=Неопределено,КаталогТЖ="",КлючФоновогоЗадания="") Экспорт
|
||||||
|
//TODO: объединить с ЗагрузкаЖурналаПредварительноОчистить
|
||||||
|
Если Замер=Неопределено Тогда
|
||||||
|
ЗамерОбъект = Справочники.Замеры.СоздатьЭлемент();
|
||||||
|
ЗамерОбъект.Наименование = "Новый Замер";
|
||||||
|
ЗамерОбъект.ПолныйПуть = КаталогТЖ;
|
||||||
|
ЗамерОбъект.Записать();
|
||||||
|
Замер = ЗамерОбъект.Ссылка;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ПрочитатьЖурнал(Замер,КаталогТЖ,КлючФоновогоЗадания);
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ЗагрузкаЖурналаПредварительноОчистить(Замер=Неопределено,КаталогТЖ="", ЗагрузитьФоново=Ложь) Экспорт
|
||||||
|
|
||||||
|
Если Замер=Неопределено Тогда
|
||||||
|
ЗамерОбъект = Справочники.Замеры.СоздатьЭлемент();
|
||||||
|
ЗамерОбъект.Наименование = "Новый Замер";
|
||||||
|
ЗамерОбъект.ПолныйПуть = КаталогТЖ;
|
||||||
|
ЗамерОбъект.Записать();
|
||||||
|
Замер = ЗамерОбъект.Ссылка;
|
||||||
|
Иначе
|
||||||
|
ОчиститьЖурналы(Замер);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
//TODO: переренести проверку состояния загрузки из ПрочитатьЖурнал
|
||||||
|
Если ЗагрузитьФоново Тогда
|
||||||
|
Если Константы.МаксимальноеКолВоПотоковДляОднойЗагрузки.Получить()>1 Тогда
|
||||||
|
ОбновлениеДанных.ЗагрузкаТЖПотоками(Замер,КаталогТЖ);
|
||||||
|
Иначе
|
||||||
|
ОбновлениеДанных.ПрочитатьЖурнал(Замер,КаталогТЖ);
|
||||||
|
КонецЕсли;
|
||||||
|
Иначе
|
||||||
|
ПрочитатьЖурнал(Замер,КаталогТЖ);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура ПрочитатьЖурнал(Замер=Неопределено,КаталогТЖ="",КлючФоновогоЗадания="") Экспорт
|
Процедура ПрочитатьЖурнал(Замер=Неопределено,КаталогТЖ="",КлючФоновогоЗадания="") Экспорт
|
||||||
|
|
||||||
ЗаписьЖурналаРегистрации("ЧтениеЖурналаРегистрации.ЧтениеНачато",УровеньЖурналаРегистрации.Предупреждение,,,КлючФоновогоЗадания);
|
ЗаписьЖурналаРегистрации("ЧтениеЖурналаРегистрации.ЧтениеНачато",УровеньЖурналаРегистрации.Предупреждение,,,КлючФоновогоЗадания);
|
||||||
@@ -283,188 +354,6 @@
|
|||||||
ЗаписьЖурналаРегистрации("ЧтениеЖурналаРегистрации.ЧтениеЗавершено",УровеньЖурналаРегистрации.Предупреждение,,,КлючФоновогоЗадания);
|
ЗаписьЖурналаРегистрации("ЧтениеЖурналаРегистрации.ЧтениеЗавершено",УровеньЖурналаРегистрации.Предупреждение,,,КлючФоновогоЗадания);
|
||||||
КонецПроцедуры // ПрочитатьЖурнал
|
КонецПроцедуры // ПрочитатьЖурнал
|
||||||
|
|
||||||
Процедура ПрочитатьЖурналПоРегистру(Замер=Неопределено,КлючФоновогоЗадания="") Экспорт
|
|
||||||
|
|
||||||
ЗаписьЖурналаРегистрации("ЧтениеЖурналаРегистрации.ЧтениеНачато",УровеньЖурналаРегистрации.Предупреждение,,,КлючФоновогоЗадания);
|
|
||||||
|
|
||||||
Если НЕ ЗначениеЗаполнено(КлючФоновогоЗадания) Тогда
|
|
||||||
ВызватьИсключение "Ключ фонового задания быть заполнен!";
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
ФайлыТЖ = ПолучитьНеОбработаннеФайлыПоРегистру(Замер,КлючФоновогоЗадания);
|
|
||||||
|
|
||||||
Индекс = 0;
|
|
||||||
// МоментНачалаЧтения = ТекущаяУниверсальнаяДатаВМиллисекундах();
|
|
||||||
НужноКопировать = ?(ЗначениеЗаполнено(Замер),НЕ Замер.НеРабочийКаталог,Истина);
|
|
||||||
|
|
||||||
Попытка
|
|
||||||
ЗаписьЖурналаРегистрации("ЧтениеЖурналаРегистрации.ЧтениеНачато");
|
|
||||||
|
|
||||||
// временный файл нужен для копирования в него файлов логов, т.к. те которые в текущий момент пишуться не могут быть помещены во временное хранилище (1с ругается на невозможность получить доступ)
|
|
||||||
ИмяВрФайла = ПолучитьИмяВременногоФайла("log");
|
|
||||||
|
|
||||||
Индекс = Индекс + 1;
|
|
||||||
|
|
||||||
Для Каждого ФайлТЖ Из ФайлыТЖ Цикл
|
|
||||||
|
|
||||||
ИмяПапки = ФайлТЖ.ИмяПапки;
|
|
||||||
|
|
||||||
МассивПапок = новый Массив;
|
|
||||||
|
|
||||||
Если Найти(ИмяПапки,"\") Тогда
|
|
||||||
МассивПапок = СтрРазделить(ИмяПапки,"\",Ложь);
|
|
||||||
Иначе
|
|
||||||
МассивПапок = СтрРазделить(ИмяПапки,"/",Ложь);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
ИмяПапки = МассивПапок[МассивПапок.ВГраница()];
|
|
||||||
|
|
||||||
ИмяПапки = СтрЗаменить(ИмяПапки, "_", Символы.ПС);
|
|
||||||
Процесс = СтрПолучитьСтроку(ИмяПапки, 1);
|
|
||||||
ПроцессID = СтрПолучитьСтроку(ИмяПапки, 2);
|
|
||||||
// КоличествоФайловТЖ = ФайлыТЖ.Количество();
|
|
||||||
ИндексФайла = 0;
|
|
||||||
|
|
||||||
СвойстваФайла = ПолучитьВременныеПараметрыПоСвойствамФайла(ФайлТЖ);
|
|
||||||
|
|
||||||
ДатаФайла = СвойстваФайла.ДатаФайла;
|
|
||||||
// Год = СвойстваФайла.Год;
|
|
||||||
// День = СвойстваФайла.День;
|
|
||||||
// Месяц = СвойстваФайла.Месяц;
|
|
||||||
// Час = СвойстваФайла.Час;
|
|
||||||
ДатаНачалаОбработки = ТекущаяДата();
|
|
||||||
|
|
||||||
УстановитьСвойствоУправленияФоновымиЗаданиями(Замер,ФайлТЖ.ПолноеИмя,КлючФоновогоЗадания,"ДатаНачала",ДатаНачалаОбработки);
|
|
||||||
|
|
||||||
|
|
||||||
ИндексФайла = ИндексФайла + 1;
|
|
||||||
|
|
||||||
СостояниеЧтения = РегистрыСведений.ГраницыЧтенияДанных.ПолучитьСостояние(Замер, Процесс, ПроцессID, ДатаФайла);
|
|
||||||
Если СостояниеЧтения.ПрочитанПолностью Тогда
|
|
||||||
Продолжить;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
//Определение не получались ли уже по этому процессу данные за более поздний час
|
|
||||||
// Если Не ПроверитьНаличиеДанныхПоПроцессуЗаПериод(Замер,Процесс, ПроцессID, Дата(Год + 2000, Месяц, День, 0, 0, 0), Час) Тогда
|
|
||||||
|
|
||||||
//... Если данные за более поздний час не получались - чтение файла, разбор и помещение в регистр
|
|
||||||
// АдресФайла = "";
|
|
||||||
Если НужноКопировать=Истина Тогда
|
|
||||||
КопироватьФайл(ФайлТЖ.ПолноеИмя, ИмяВрФайла);
|
|
||||||
Иначе
|
|
||||||
ИмяВрФайла = ФайлТЖ.ПолноеИмя;
|
|
||||||
КонецЕсли;
|
|
||||||
РазобраноСтрок = РазобратьФайл(Процесс, ПроцессID, ДатаФайла, ИмяВрФайла, Замер);
|
|
||||||
УстановитьСвойствоУправленияФоновымиЗаданиями(Замер,ФайлТЖ.ПолноеИмя,КлючФоновогоЗадания,"Разобрано",РазобраноСтрок);
|
|
||||||
ЗаписьЖурналаРегистрации("ЧтениеЖурналаРегистрации.РазобранФайл",УровеньЖурналаРегистрации.Предупреждение,,,КлючФоновогоЗадания+" строк:"+РазобраноСтрок);
|
|
||||||
Если НужноКопировать=Истина Тогда
|
|
||||||
УдалитьФайлы(ИмяВрФайла);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
// КонецЕсли;
|
|
||||||
|
|
||||||
УстановитьСвойствоУправленияФоновымиЗаданиями(Замер,ФайлТЖ.ПолноеИмя,КлючФоновогоЗадания,"Обработан",Истина);
|
|
||||||
УстановитьСвойствоУправленияФоновымиЗаданиями(Замер,ФайлТЖ.ПолноеИмя,КлючФоновогоЗадания,"Длительность",ТекущаяДата()-ДатаНачалаОбработки);
|
|
||||||
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
Исключение
|
|
||||||
ТекстОшибки = ОписаниеОшибки();
|
|
||||||
ЗаписьЖурналаРегистрации("ЧтениеЖурналаРегистрации.ЧтениеПрервано",УровеньЖурналаРегистрации.Ошибка,Неопределено,Замер,ТекстОшибки,);
|
|
||||||
ВызватьИсключение ТекстОшибки;
|
|
||||||
КонецПопытки;
|
|
||||||
|
|
||||||
ЗаписьЖурналаРегистрации("ЧтениеЖурналаРегистрации.ЧтениеЗавершено",УровеньЖурналаРегистрации.Предупреждение,,,КлючФоновогоЗадания);
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
Функция ПолучитьВременныеПараметрыПоСвойствамФайла(Знач ФайлТЖ) Экспорт
|
|
||||||
|
|
||||||
СвойстваФайла = новый Структура("Год,День,Месяц,Час,ДатаФайла");
|
|
||||||
|
|
||||||
СвойстваФайла.Год = Число(Лев(ФайлТЖ.Имя, 2));
|
|
||||||
СвойстваФайла.Месяц = Число(Сред(ФайлТЖ.Имя, 3, 2));
|
|
||||||
СвойстваФайла.День = Число(Сред(ФайлТЖ.Имя, 5, 2));
|
|
||||||
СвойстваФайла.Час = Число(Прав(ФайлТЖ.ИмяБезРасширения, 2));
|
|
||||||
СвойстваФайла.ДатаФайла = Дата(СвойстваФайла.Год + 2000, СвойстваФайла.Месяц, СвойстваФайла.День, СвойстваФайла.Час, 0, 0);
|
|
||||||
|
|
||||||
Возврат СвойстваФайла;
|
|
||||||
|
|
||||||
КонецФункции // ПрочитатьЖурналПоРегистру
|
|
||||||
|
|
||||||
Функция ПолучитьНеОбработаннеФайлыПоРегистру(Замер,КлючФоновогоЗадания)
|
|
||||||
|
|
||||||
Запрос = новый Запрос;
|
|
||||||
Запрос.Текст = "ВЫБРАТЬ
|
|
||||||
| Т.Замер КАК Замер,
|
|
||||||
| Т.ПутьКФайлу КАК ПутьКФайлу,
|
|
||||||
| Т.Обработан КАК Обработан,
|
|
||||||
| Т.КлючФоновогоЗадания КАК КлючФоновогоЗадания,
|
|
||||||
| Т.ДатаФайла КАК ДатаФайла,
|
|
||||||
| Т.Длительность КАК Длительность,
|
|
||||||
| Т.ДатаНачала КАК ДатаНачала,
|
|
||||||
| Т.РазмерФайла КАК РазмерФайла,
|
|
||||||
| Т.Имя КАК Имя,
|
|
||||||
| Т.ИмяБезРасширения КАК ИмяБезРасширения,
|
|
||||||
| Т.ПолноеИмя КАК ПолноеИмя,
|
|
||||||
| Т.КоличествоФайловВсего КАК КоличествоФайловВсего,
|
|
||||||
| Т.ИмяПапки КАК ИмяПапки,
|
|
||||||
| ВЫРАЗИТЬ(Т.ИмяПапки КАК СТРОКА(250)) КАК ИмяПапкиДляУпорядочивания
|
|
||||||
|ИЗ
|
|
||||||
| РегистрСведений.УправлениеФоновымиЗаданиямиЗагрузки КАК Т
|
|
||||||
|ГДЕ
|
|
||||||
| Т.Замер = &Замер
|
|
||||||
| И Т.КлючФоновогоЗадания = &КлючФоновогоЗадания
|
|
||||||
| И Т.Обработан = ЛОЖЬ
|
|
||||||
|
|
|
||||||
|УПОРЯДОЧИТЬ ПО
|
|
||||||
| ИмяПапкиДляУпорядочивания,
|
|
||||||
| ДатаФайла";
|
|
||||||
Запрос.УстановитьПараметр("Замер",Замер);
|
|
||||||
Запрос.УстановитьПараметр("КлючФоновогоЗадания",КлючФоновогоЗадания);
|
|
||||||
|
|
||||||
Возврат Запрос.Выполнить().Выгрузить();
|
|
||||||
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
Процедура ЗагрузкаЖурнала(Замер=Неопределено,КаталогТЖ="",КлючФоновогоЗадания="") Экспорт
|
|
||||||
//TODO: объединить с ЗагрузкаЖурналаПредварительноОчистить
|
|
||||||
Если Замер=Неопределено Тогда
|
|
||||||
ЗамерОбъект = Справочники.Замеры.СоздатьЭлемент();
|
|
||||||
ЗамерОбъект.Наименование = "Новый Замер";
|
|
||||||
ЗамерОбъект.ПолныйПуть = КаталогТЖ;
|
|
||||||
ЗамерОбъект.Записать();
|
|
||||||
Замер = ЗамерОбъект.Ссылка;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
ПрочитатьЖурнал(Замер,КаталогТЖ,КлючФоновогоЗадания);
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
Процедура ЗагрузкаЖурналаПредварительноОчистить(Замер=Неопределено,КаталогТЖ="", ЗагрузитьФоново=Ложь) Экспорт
|
|
||||||
|
|
||||||
Если Замер=Неопределено Тогда
|
|
||||||
ЗамерОбъект = Справочники.Замеры.СоздатьЭлемент();
|
|
||||||
ЗамерОбъект.Наименование = "Новый Замер";
|
|
||||||
ЗамерОбъект.ПолныйПуть = КаталогТЖ;
|
|
||||||
ЗамерОбъект.Записать();
|
|
||||||
Замер = ЗамерОбъект.Ссылка;
|
|
||||||
Иначе
|
|
||||||
ОчиститьЖурналы(Замер);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
//TODO: переренести проверку состояния загрузки из ПрочитатьЖурнал
|
|
||||||
Если ЗагрузитьФоново Тогда
|
|
||||||
Если Константы.МаксимальноеКолВоПотоковДляОднойЗагрузки.Получить()>1 Тогда
|
|
||||||
ОбновлениеДанных.ЗагрузкаТЖПотоками(Замер,КаталогТЖ);
|
|
||||||
Иначе
|
|
||||||
ОбновлениеДанных.ПрочитатьЖурнал(Замер,КаталогТЖ);
|
|
||||||
КонецЕсли;
|
|
||||||
Иначе
|
|
||||||
ПрочитатьЖурнал(Замер,КаталогТЖ);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область ЧтениеЖурналаПотоками
|
#Область ЧтениеЖурналаПотоками
|
||||||
@@ -670,6 +559,136 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Функция ПолучитьНеОбработаннеФайлыПоРегистру(Замер,КлючФоновогоЗадания)
|
||||||
|
|
||||||
|
Запрос = новый Запрос;
|
||||||
|
Запрос.Текст = "ВЫБРАТЬ
|
||||||
|
| Т.Замер КАК Замер,
|
||||||
|
| Т.ПутьКФайлу КАК ПутьКФайлу,
|
||||||
|
| Т.Обработан КАК Обработан,
|
||||||
|
| Т.КлючФоновогоЗадания КАК КлючФоновогоЗадания,
|
||||||
|
| Т.ДатаФайла КАК ДатаФайла,
|
||||||
|
| Т.Длительность КАК Длительность,
|
||||||
|
| Т.ДатаНачала КАК ДатаНачала,
|
||||||
|
| Т.РазмерФайла КАК РазмерФайла,
|
||||||
|
| Т.Имя КАК Имя,
|
||||||
|
| Т.ИмяБезРасширения КАК ИмяБезРасширения,
|
||||||
|
| Т.ПолноеИмя КАК ПолноеИмя,
|
||||||
|
| Т.КоличествоФайловВсего КАК КоличествоФайловВсего,
|
||||||
|
| Т.ИмяПапки КАК ИмяПапки,
|
||||||
|
| ВЫРАЗИТЬ(Т.ИмяПапки КАК СТРОКА(250)) КАК ИмяПапкиДляУпорядочивания
|
||||||
|
|ИЗ
|
||||||
|
| РегистрСведений.УправлениеФоновымиЗаданиямиЗагрузки КАК Т
|
||||||
|
|ГДЕ
|
||||||
|
| Т.Замер = &Замер
|
||||||
|
| И Т.КлючФоновогоЗадания = &КлючФоновогоЗадания
|
||||||
|
| И Т.Обработан = ЛОЖЬ
|
||||||
|
|
|
||||||
|
|УПОРЯДОЧИТЬ ПО
|
||||||
|
| ИмяПапкиДляУпорядочивания,
|
||||||
|
| ДатаФайла";
|
||||||
|
Запрос.УстановитьПараметр("Замер",Замер);
|
||||||
|
Запрос.УстановитьПараметр("КлючФоновогоЗадания",КлючФоновогоЗадания);
|
||||||
|
|
||||||
|
Возврат Запрос.Выполнить().Выгрузить();
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ПрочитатьЖурналПоРегистру(Замер=Неопределено,КлючФоновогоЗадания="") Экспорт
|
||||||
|
|
||||||
|
ЗаписьЖурналаРегистрации("ЧтениеЖурналаРегистрации.ЧтениеНачато",УровеньЖурналаРегистрации.Предупреждение,,,КлючФоновогоЗадания);
|
||||||
|
|
||||||
|
Если НЕ ЗначениеЗаполнено(КлючФоновогоЗадания) Тогда
|
||||||
|
ВызватьИсключение "Ключ фонового задания быть заполнен!";
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ФайлыТЖ = ПолучитьНеОбработаннеФайлыПоРегистру(Замер,КлючФоновогоЗадания);
|
||||||
|
|
||||||
|
Индекс = 0;
|
||||||
|
// МоментНачалаЧтения = ТекущаяУниверсальнаяДатаВМиллисекундах();
|
||||||
|
НужноКопировать = ?(ЗначениеЗаполнено(Замер),НЕ Замер.НеРабочийКаталог,Истина);
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
ЗаписьЖурналаРегистрации("ЧтениеЖурналаРегистрации.ЧтениеНачато");
|
||||||
|
|
||||||
|
// временный файл нужен для копирования в него файлов логов, т.к. те которые в текущий момент пишуться не могут быть помещены во временное хранилище (1с ругается на невозможность получить доступ)
|
||||||
|
ИмяВрФайла = ПолучитьИмяВременногоФайла("log");
|
||||||
|
|
||||||
|
Индекс = Индекс + 1;
|
||||||
|
|
||||||
|
Для Каждого ФайлТЖ Из ФайлыТЖ Цикл
|
||||||
|
|
||||||
|
ИмяПапки = ФайлТЖ.ИмяПапки;
|
||||||
|
|
||||||
|
МассивПапок = новый Массив;
|
||||||
|
|
||||||
|
Если Найти(ИмяПапки,"\") Тогда
|
||||||
|
МассивПапок = СтрРазделить(ИмяПапки,"\",Ложь);
|
||||||
|
Иначе
|
||||||
|
МассивПапок = СтрРазделить(ИмяПапки,"/",Ложь);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ИмяПапки = МассивПапок[МассивПапок.ВГраница()];
|
||||||
|
|
||||||
|
ИмяПапки = СтрЗаменить(ИмяПапки, "_", Символы.ПС);
|
||||||
|
Процесс = СтрПолучитьСтроку(ИмяПапки, 1);
|
||||||
|
ПроцессID = СтрПолучитьСтроку(ИмяПапки, 2);
|
||||||
|
// КоличествоФайловТЖ = ФайлыТЖ.Количество();
|
||||||
|
ИндексФайла = 0;
|
||||||
|
|
||||||
|
СвойстваФайла = ПолучитьВременныеПараметрыПоСвойствамФайла(ФайлТЖ);
|
||||||
|
|
||||||
|
ДатаФайла = СвойстваФайла.ДатаФайла;
|
||||||
|
// Год = СвойстваФайла.Год;
|
||||||
|
// День = СвойстваФайла.День;
|
||||||
|
// Месяц = СвойстваФайла.Месяц;
|
||||||
|
// Час = СвойстваФайла.Час;
|
||||||
|
ДатаНачалаОбработки = ТекущаяДата();
|
||||||
|
|
||||||
|
УстановитьСвойствоУправленияФоновымиЗаданиями(Замер,ФайлТЖ.ПолноеИмя,КлючФоновогоЗадания,"ДатаНачала",ДатаНачалаОбработки);
|
||||||
|
|
||||||
|
|
||||||
|
ИндексФайла = ИндексФайла + 1;
|
||||||
|
|
||||||
|
СостояниеЧтения = РегистрыСведений.ГраницыЧтенияДанных.ПолучитьСостояние(Замер, Процесс, ПроцессID, ДатаФайла);
|
||||||
|
Если СостояниеЧтения.ПрочитанПолностью Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
//Определение не получались ли уже по этому процессу данные за более поздний час
|
||||||
|
// Если Не ПроверитьНаличиеДанныхПоПроцессуЗаПериод(Замер,Процесс, ПроцессID, Дата(Год + 2000, Месяц, День, 0, 0, 0), Час) Тогда
|
||||||
|
|
||||||
|
//... Если данные за более поздний час не получались - чтение файла, разбор и помещение в регистр
|
||||||
|
// АдресФайла = "";
|
||||||
|
Если НужноКопировать=Истина Тогда
|
||||||
|
КопироватьФайл(ФайлТЖ.ПолноеИмя, ИмяВрФайла);
|
||||||
|
Иначе
|
||||||
|
ИмяВрФайла = ФайлТЖ.ПолноеИмя;
|
||||||
|
КонецЕсли;
|
||||||
|
РазобраноСтрок = РазобратьФайл(Процесс, ПроцессID, ДатаФайла, ИмяВрФайла, Замер);
|
||||||
|
УстановитьСвойствоУправленияФоновымиЗаданиями(Замер,ФайлТЖ.ПолноеИмя,КлючФоновогоЗадания,"Разобрано",РазобраноСтрок);
|
||||||
|
ЗаписьЖурналаРегистрации("ЧтениеЖурналаРегистрации.РазобранФайл",УровеньЖурналаРегистрации.Предупреждение,,,КлючФоновогоЗадания+" строк:"+РазобраноСтрок);
|
||||||
|
Если НужноКопировать=Истина Тогда
|
||||||
|
УдалитьФайлы(ИмяВрФайла);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
// КонецЕсли;
|
||||||
|
|
||||||
|
УстановитьСвойствоУправленияФоновымиЗаданиями(Замер,ФайлТЖ.ПолноеИмя,КлючФоновогоЗадания,"Обработан",Истина);
|
||||||
|
УстановитьСвойствоУправленияФоновымиЗаданиями(Замер,ФайлТЖ.ПолноеИмя,КлючФоновогоЗадания,"Длительность",ТекущаяДата()-ДатаНачалаОбработки);
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Исключение
|
||||||
|
ТекстОшибки = ОписаниеОшибки();
|
||||||
|
ЗаписьЖурналаРегистрации("ЧтениеЖурналаРегистрации.ЧтениеПрервано",УровеньЖурналаРегистрации.Ошибка,Неопределено,Замер,ТекстОшибки,);
|
||||||
|
ВызватьИсключение ТекстОшибки;
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
ЗаписьЖурналаРегистрации("ЧтениеЖурналаРегистрации.ЧтениеЗавершено",УровеньЖурналаРегистрации.Предупреждение,,,КлючФоновогоЗадания);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область Служебные
|
#Область Служебные
|
||||||
|
|||||||
@@ -27,14 +27,15 @@
|
|||||||
|
|
||||||
СписокФайлов = НайтиФайлы(РеквизитыЗадания.ПолныйПуть, "*.log", Истина);
|
СписокФайлов = НайтиФайлы(РеквизитыЗадания.ПолныйПуть, "*.log", Истина);
|
||||||
Для Каждого Файл из СписокФайлов Цикл
|
Для Каждого Файл из СписокФайлов Цикл
|
||||||
|
//пропускать каталоги
|
||||||
Если Файл.ЭтоКаталог() Тогда
|
Если Файл.ЭтоКаталог() Тогда
|
||||||
Продолжить;
|
Продолжить;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
//пропускать пустые файлы
|
||||||
Если Файл.Размер()<=3 Тогда
|
Если Файл.Размер()<=3 Тогда
|
||||||
Продолжить;
|
Продолжить;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
//пропускать если не в периоде загрузки
|
||||||
ПериодФайла = ПолучитьПериодПоИмениФайла(Файл.ИмяБезРасширения);
|
ПериодФайла = ПолучитьПериодПоИмениФайла(Файл.ИмяБезРасширения);
|
||||||
Если ИспользуетсяОграничениеПериода Тогда
|
Если ИспользуетсяОграничениеПериода Тогда
|
||||||
Если ЗначениеЗаполнено(РеквизитыЗадания.НачалоПериода) И ПериодФайла < НачалоЧаса(РеквизитыЗадания.НачалоПериода)
|
Если ЗначениеЗаполнено(РеквизитыЗадания.НачалоПериода) И ПериодФайла < НачалоЧаса(РеквизитыЗадания.НачалоПериода)
|
||||||
@@ -42,12 +43,11 @@
|
|||||||
Продолжить;
|
Продолжить;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
//пропускать файл текущего периода если не загрузка в реальном времени
|
||||||
Если НЕ РеквизитыЗадания.ЗагрузкаВРеальномВремени
|
Если НЕ РеквизитыЗадания.ЗагрузкаВРеальномВремени
|
||||||
И Файл.ИмяБезРасширения = ИмяТекущегоФайла Тогда
|
И Файл.ИмяБезРасширения = ИмяТекущегоФайла Тогда
|
||||||
Продолжить;
|
Продолжить;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
//получение параметров процесса по каталогу
|
//получение параметров процесса по каталогу
|
||||||
//c:\v8\log\rphost_1234\
|
//c:\v8\log\rphost_1234\
|
||||||
// ^^^^^^^^^^^
|
// ^^^^^^^^^^^
|
||||||
@@ -55,9 +55,14 @@
|
|||||||
ИмяИД = СтрРазделить(КаталогПроцесса, "_");
|
ИмяИД = СтрРазделить(КаталогПроцесса, "_");
|
||||||
|
|
||||||
СостояниеЧтения = РегистрыСведений.ГраницыЧтенияДанных.ПолучитьСостояние(РеквизитыЗадания.Замер, ИмяИД[0], ИмяИД[1], ПериодФайла);
|
СостояниеЧтения = РегистрыСведений.ГраницыЧтенияДанных.ПолучитьСостояние(РеквизитыЗадания.Замер, ИмяИД[0], ИмяИД[1], ПериодФайла);
|
||||||
|
//пропускать прочитанные
|
||||||
Если СостояниеЧтения.ПрочитанПолностью Тогда
|
Если СостояниеЧтения.ПрочитанПолностью Тогда
|
||||||
Продолжить;
|
Продолжить;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
//пропускать если размер с прошного сеанса не изменился
|
||||||
|
Если Файл.Размер() = СостояниеЧтения.РазмерФайла Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
строкарезультата = Результат.Добавить();
|
строкарезультата = Результат.Добавить();
|
||||||
строкарезультата.ПолноеИмя = Файл.ПолноеИмя;
|
строкарезультата.ПолноеИмя = Файл.ПолноеИмя;
|
||||||
|
|||||||
@@ -585,30 +585,30 @@
|
|||||||
//
|
//
|
||||||
// Примечание:
|
// Примечание:
|
||||||
// Функцию нельзя использовать для объектных типов (СправочникОбъект, ДокументОбъект и т.п.).
|
// Функцию нельзя использовать для объектных типов (СправочникОбъект, ДокументОбъект и т.п.).
|
||||||
Функция СкопироватьРекурсивно(Источник) Экспорт
|
//Функция СкопироватьРекурсивно(Источник) Экспорт
|
||||||
|
//
|
||||||
Перем Приемник;
|
// Перем Приемник;
|
||||||
|
//
|
||||||
ТипИсточника = ТипЗнч(Источник);
|
// ТипИсточника = ТипЗнч(Источник);
|
||||||
Если ТипИсточника = Тип("Структура") Тогда
|
// Если ТипИсточника = Тип("Структура") Тогда
|
||||||
Приемник = СкопироватьСтруктуру(Источник);
|
// Приемник = СкопироватьСтруктуру(Источник);
|
||||||
ИначеЕсли ТипИсточника = Тип("Соответствие") Тогда
|
// ИначеЕсли ТипИсточника = Тип("Соответствие") Тогда
|
||||||
Приемник = СкопироватьСоответствие(Источник);
|
// Приемник = СкопироватьСоответствие(Источник);
|
||||||
ИначеЕсли ТипИсточника = Тип("Массив") Тогда
|
// ИначеЕсли ТипИсточника = Тип("Массив") Тогда
|
||||||
Приемник = СкопироватьМассив(Источник);
|
// Приемник = СкопироватьМассив(Источник);
|
||||||
ИначеЕсли ТипИсточника = Тип("СписокЗначений") Тогда
|
// ИначеЕсли ТипИсточника = Тип("СписокЗначений") Тогда
|
||||||
Приемник = СкопироватьСписокЗначений(Источник);
|
// Приемник = СкопироватьСписокЗначений(Источник);
|
||||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
//#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
||||||
ИначеЕсли ТипИсточника = Тип("ТаблицаЗначений") Тогда
|
// ИначеЕсли ТипИсточника = Тип("ТаблицаЗначений") Тогда
|
||||||
Приемник = Источник.Скопировать();
|
// Приемник = Источник.Скопировать();
|
||||||
#КонецЕсли
|
//#КонецЕсли
|
||||||
Иначе
|
// Иначе
|
||||||
Приемник = Источник;
|
// Приемник = Источник;
|
||||||
КонецЕсли;
|
// КонецЕсли;
|
||||||
|
//
|
||||||
Возврат Приемник;
|
// Возврат Приемник;
|
||||||
|
//
|
||||||
КонецФункции
|
//КонецФункции
|
||||||
|
|
||||||
// Создает копию значения типа Структура.
|
// Создает копию значения типа Структура.
|
||||||
//
|
//
|
||||||
@@ -618,17 +618,17 @@
|
|||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Структура - копия исходной структуры.
|
// Структура - копия исходной структуры.
|
||||||
//
|
//
|
||||||
Функция СкопироватьСтруктуру(СтруктураИсточник) Экспорт
|
//Функция СкопироватьСтруктуру(СтруктураИсточник) Экспорт
|
||||||
|
//
|
||||||
СтруктураРезультат = Новый Структура;
|
// СтруктураРезультат = Новый Структура;
|
||||||
|
//
|
||||||
Для Каждого КлючИЗначение Из СтруктураИсточник Цикл
|
// Для Каждого КлючИЗначение Из СтруктураИсточник Цикл
|
||||||
СтруктураРезультат.Вставить(КлючИЗначение.Ключ, СкопироватьРекурсивно(КлючИЗначение.Значение));
|
// СтруктураРезультат.Вставить(КлючИЗначение.Ключ, СкопироватьРекурсивно(КлючИЗначение.Значение));
|
||||||
КонецЦикла;
|
// КонецЦикла;
|
||||||
|
//
|
||||||
Возврат СтруктураРезультат;
|
// Возврат СтруктураРезультат;
|
||||||
|
//
|
||||||
КонецФункции
|
//КонецФункции
|
||||||
|
|
||||||
// Создает копию значения типа Соответствие.
|
// Создает копию значения типа Соответствие.
|
||||||
//
|
//
|
||||||
@@ -638,61 +638,61 @@
|
|||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие - копия исходного соответствия.
|
// Соответствие - копия исходного соответствия.
|
||||||
//
|
//
|
||||||
Функция СкопироватьСоответствие(СоответствиеИсточник) Экспорт
|
//Функция СкопироватьСоответствие(СоответствиеИсточник) Экспорт
|
||||||
|
//
|
||||||
СоответствиеРезультат = Новый Соответствие;
|
// СоответствиеРезультат = Новый Соответствие;
|
||||||
|
//
|
||||||
Для Каждого КлючИЗначение Из СоответствиеИсточник Цикл
|
// Для Каждого КлючИЗначение Из СоответствиеИсточник Цикл
|
||||||
СоответствиеРезультат.Вставить(КлючИЗначение.Ключ, СкопироватьРекурсивно(КлючИЗначение.Значение));
|
// СоответствиеРезультат.Вставить(КлючИЗначение.Ключ, СкопироватьРекурсивно(КлючИЗначение.Значение));
|
||||||
КонецЦикла;
|
// КонецЦикла;
|
||||||
|
//
|
||||||
Возврат СоответствиеРезультат;
|
// Возврат СоответствиеРезультат;
|
||||||
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
// Создает копию значения типа Массив.
|
|
||||||
//
|
//
|
||||||
// Параметры:
|
//КонецФункции
|
||||||
// МассивИсточник - Массив - массив, копию которого необходимо получить.
|
|
||||||
//
|
|
||||||
// Возвращаемое значение:
|
|
||||||
// Массив - копия исходного массива.
|
|
||||||
//
|
//
|
||||||
Функция СкопироватьМассив(МассивИсточник) Экспорт
|
//// Создает копию значения типа Массив.
|
||||||
|
////
|
||||||
МассивРезультат = Новый Массив;
|
//// Параметры:
|
||||||
|
//// МассивИсточник - Массив - массив, копию которого необходимо получить.
|
||||||
Для Каждого Элемент Из МассивИсточник Цикл
|
////
|
||||||
МассивРезультат.Добавить(СкопироватьРекурсивно(Элемент));
|
//// Возвращаемое значение:
|
||||||
КонецЦикла;
|
//// Массив - копия исходного массива.
|
||||||
|
////
|
||||||
Возврат МассивРезультат;
|
//Функция СкопироватьМассив(МассивИсточник) Экспорт
|
||||||
|
//
|
||||||
КонецФункции
|
// МассивРезультат = Новый Массив;
|
||||||
|
//
|
||||||
// Создает копию значения типа СписокЗначений.
|
// Для Каждого Элемент Из МассивИсточник Цикл
|
||||||
|
// МассивРезультат.Добавить(СкопироватьРекурсивно(Элемент));
|
||||||
|
// КонецЦикла;
|
||||||
|
//
|
||||||
|
// Возврат МассивРезультат;
|
||||||
|
//
|
||||||
|
//КонецФункции
|
||||||
//
|
//
|
||||||
// Параметры:
|
//// Создает копию значения типа СписокЗначений.
|
||||||
// СписокИсточник - СписокЗначений - список значений, копию которого необходимо получить.
|
////
|
||||||
//
|
//// Параметры:
|
||||||
// Возвращаемое значение:
|
//// СписокИсточник - СписокЗначений - список значений, копию которого необходимо получить.
|
||||||
// СписокЗначений - копия исходного списка значений.
|
////
|
||||||
//
|
//// Возвращаемое значение:
|
||||||
Функция СкопироватьСписокЗначений(СписокИсточник) Экспорт
|
//// СписокЗначений - копия исходного списка значений.
|
||||||
|
////
|
||||||
СписокРезультат = Новый СписокЗначений;
|
//Функция СкопироватьСписокЗначений(СписокИсточник) Экспорт
|
||||||
|
//
|
||||||
Для Каждого ЭлементСписка Из СписокИсточник Цикл
|
// СписокРезультат = Новый СписокЗначений;
|
||||||
СписокРезультат.Добавить(
|
//
|
||||||
СкопироватьРекурсивно(ЭлементСписка.Значение),
|
// Для Каждого ЭлементСписка Из СписокИсточник Цикл
|
||||||
ЭлементСписка.Представление,
|
// СписокРезультат.Добавить(
|
||||||
ЭлементСписка.Пометка,
|
// СкопироватьРекурсивно(ЭлементСписка.Значение),
|
||||||
ЭлементСписка.Картинка);
|
// ЭлементСписка.Представление,
|
||||||
КонецЦикла;
|
// ЭлементСписка.Пометка,
|
||||||
|
// ЭлементСписка.Картинка);
|
||||||
Возврат СписокРезультат;
|
// КонецЦикла;
|
||||||
|
//
|
||||||
КонецФункции
|
// Возврат СписокРезультат;
|
||||||
|
//
|
||||||
|
//КонецФункции
|
||||||
|
|
||||||
// Сравнивает элементы списков значений или массивов по значениям.
|
// Сравнивает элементы списков значений или массивов по значениям.
|
||||||
Функция СпискиЗначенийИдентичны(Список1, Список2) Экспорт
|
Функция СпискиЗначенийИдентичны(Список1, Список2) Экспорт
|
||||||
@@ -1441,30 +1441,30 @@
|
|||||||
// - ТипПлатформы - разделитель пути файловой системы для
|
// - ТипПлатформы - разделитель пути файловой системы для
|
||||||
// указанного типа платформы.
|
// указанного типа платформы.
|
||||||
//
|
//
|
||||||
Функция РазделительПути(Платформа = Неопределено) Экспорт
|
//Функция РазделительПути(Платформа = Неопределено) Экспорт
|
||||||
|
//
|
||||||
Если Платформа = Неопределено Тогда
|
// Если Платформа = Неопределено Тогда
|
||||||
|
//
|
||||||
#Если ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
// #Если ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
||||||
СистемнаяИнфо = Новый СистемнаяИнформация;
|
// СистемнаяИнфо = Новый СистемнаяИнформация;
|
||||||
Платформа = СистемнаяИнфо.ТипПлатформы;
|
// Платформа = СистемнаяИнфо.ТипПлатформы;
|
||||||
#ИначеЕсли Клиент Тогда
|
// #ИначеЕсли Клиент Тогда
|
||||||
Платформа = ОбщегоНазначенияКлиентПовтИсп.ТипПлатформыКлиента();
|
// Платформа = ОбщегоНазначенияКлиентПовтИсп.ТипПлатформыКлиента();
|
||||||
#Иначе
|
// #Иначе
|
||||||
Платформа = ОбщегоНазначенияПовтИсп.ТипПлатформыСервера();
|
// Платформа = ОбщегоНазначенияПовтИсп.ТипПлатформыСервера();
|
||||||
#КонецЕсли
|
// #КонецЕсли
|
||||||
|
//
|
||||||
КонецЕсли;
|
// КонецЕсли;
|
||||||
|
//
|
||||||
Если Платформа = ТипПлатформы.Windows_x86
|
// Если Платформа = ТипПлатформы.Windows_x86
|
||||||
ИЛИ Платформа = ТипПлатформы.Windows_x86_64 Тогда
|
// ИЛИ Платформа = ТипПлатформы.Windows_x86_64 Тогда
|
||||||
|
//
|
||||||
Возврат "\";
|
// Возврат "\";
|
||||||
Иначе
|
// Иначе
|
||||||
Возврат "/";
|
// Возврат "/";
|
||||||
КонецЕсли;
|
// КонецЕсли;
|
||||||
|
//
|
||||||
КонецФункции
|
//КонецФункции
|
||||||
|
|
||||||
// Возвращает имя файла с расширением.
|
// Возвращает имя файла с расширением.
|
||||||
// Если расширение пустое, тогда точка не добавляется.
|
// Если расширение пустое, тогда точка не добавляется.
|
||||||
@@ -2357,19 +2357,19 @@
|
|||||||
// ЛюбаяСсылка - Ссылка предопределенного элемента.
|
// ЛюбаяСсылка - Ссылка предопределенного элемента.
|
||||||
// Неопределено - Если элемент не найден.
|
// Неопределено - Если элемент не найден.
|
||||||
//
|
//
|
||||||
Функция ПредопределенныйЭлемент(ПолноеИмяПредопределенного) Экспорт
|
//Функция ПредопределенныйЭлемент(ПолноеИмяПредопределенного) Экспорт
|
||||||
Если ВРег(Прав(ПолноеИмяПредопределенного, 13)) = ".ПУСТАЯССЫЛКА" Тогда
|
// Если ВРег(Прав(ПолноеИмяПредопределенного, 13)) = ".ПУСТАЯССЫЛКА" Тогда
|
||||||
// Для получения пустых ссылок используется стандартная функция платформы.
|
// // Для получения пустых ссылок используется стандартная функция платформы.
|
||||||
Возврат ПредопределенноеЗначение(ПолноеИмяПредопределенного);
|
// Возврат ПредопределенноеЗначение(ПолноеИмяПредопределенного);
|
||||||
КонецЕсли;
|
// КонецЕсли;
|
||||||
|
//
|
||||||
#Если НЕ ТонкийКлиент И НЕ ВебКлиент И НЕ ТолстыйКлиентУправляемоеПриложение Тогда
|
//#Если НЕ ТонкийКлиент И НЕ ВебКлиент И НЕ ТолстыйКлиентУправляемоеПриложение Тогда
|
||||||
Возврат СтандартныеПодсистемыПовтИсп.ПредопределенныйЭлемент(ПолноеИмяПредопределенного);
|
// Возврат СтандартныеПодсистемыПовтИсп.ПредопределенныйЭлемент(ПолноеИмяПредопределенного);
|
||||||
#Иначе
|
//#Иначе
|
||||||
Возврат СтандартныеПодсистемыКлиентПовтИсп.ПредопределенныйЭлемент(ПолноеИмяПредопределенного);
|
// Возврат СтандартныеПодсистемыКлиентПовтИсп.ПредопределенныйЭлемент(ПолноеИмяПредопределенного);
|
||||||
#КонецЕсли
|
//#КонецЕсли
|
||||||
|
//
|
||||||
КонецФункции
|
//КонецФункции
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Прочие функции
|
// Прочие функции
|
||||||
@@ -2520,13 +2520,13 @@
|
|||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Возвращает код основного языка конфигурации, например "ru".
|
// Возвращает код основного языка конфигурации, например "ru".
|
||||||
Функция КодОсновногоЯзыка() Экспорт
|
//Функция КодОсновногоЯзыка() Экспорт
|
||||||
#Если НЕ ТонкийКлиент И НЕ ВебКлиент Тогда
|
// #Если НЕ ТонкийКлиент И НЕ ВебКлиент Тогда
|
||||||
Возврат Метаданные.ОсновнойЯзык.КодЯзыка;
|
// Возврат Метаданные.ОсновнойЯзык.КодЯзыка;
|
||||||
#Иначе
|
// #Иначе
|
||||||
Возврат СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().КодОсновногоЯзыка;
|
// Возврат СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().КодОсновногоЯзыка;
|
||||||
#КонецЕсли
|
// #КонецЕсли
|
||||||
КонецФункции
|
//КонецФункции
|
||||||
|
|
||||||
// Возвращает Истина, если клиентское приложение подключено к базе через веб-сервер.
|
// Возвращает Истина, если клиентское приложение подключено к базе через веб-сервер.
|
||||||
// Если нет клиентского приложения, возвращается Ложь.
|
// Если нет клиентского приложения, возвращается Ложь.
|
||||||
@@ -2797,11 +2797,11 @@
|
|||||||
// Устаревшие процедуры и функции.
|
// Устаревшие процедуры и функции.
|
||||||
|
|
||||||
// Устарела. Следует использовать РазделительПути.
|
// Устарела. Следует использовать РазделительПути.
|
||||||
Функция ПолучитьСлеш(Платформа = Неопределено) Экспорт
|
//Функция ПолучитьСлеш(Платформа = Неопределено) Экспорт
|
||||||
|
//
|
||||||
Возврат РазделительПути(Платформа);
|
// Возврат РазделительПути(Платформа);
|
||||||
|
//
|
||||||
КонецФункции
|
//КонецФункции
|
||||||
|
|
||||||
// Устарела. Следует удалить все использования этой функции и ветки кода при значении Ложь.
|
// Устарела. Следует удалить все использования этой функции и ветки кода при значении Ложь.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
&НаКлиенте
|
|
||||||
Процедура ОбновитьСтатус() Экспорт
|
|
||||||
СтруктураСостояния = ПолучитьИзВременногоХранилища("asdf");
|
|
||||||
КонецПроцедуры // ОбновитьСтатус
|
|
||||||
@@ -1,13 +1,14 @@
|
|||||||
#Если Сервер ИЛИ ВнешнееСоединение Тогда
|
#Если Сервер ИЛИ ВнешнееСоединение Тогда
|
||||||
|
|
||||||
Функция ПолучитьСостояние(Замер, Процесс, ПроцессИД, ПериодФайла) Экспорт
|
Функция ПолучитьСостояние(Замер, Процесс, ПроцессИД, ПериодФайла) Экспорт
|
||||||
Результат = Новый Структура("ПрочитаноСтрок,ПрочитанПолностью", 0, Ложь);
|
Результат = Новый Структура("ПрочитаноСтрок,ПрочитанПолностью,РазмерФайла", 0, Ложь, 0);
|
||||||
|
|
||||||
ПроцессСсылка = СправочникиСерверПовтИсп.ПолучитьПроцесс(Процесс);
|
ПроцессСсылка = СправочникиСерверПовтИсп.ПолучитьПроцесс(Процесс);
|
||||||
Запрос = Новый Запрос;
|
Запрос = Новый Запрос;
|
||||||
Запрос.Текст = "ВЫБРАТЬ
|
Запрос.Текст = "ВЫБРАТЬ
|
||||||
| ГраницыЧтенияДанных.ПрочитаноСтрок,
|
| ГраницыЧтенияДанных.ПрочитаноСтрок,
|
||||||
| ГраницыЧтенияДанных.ПрочитанПолностью
|
| ГраницыЧтенияДанных.ПрочитанПолностью,
|
||||||
|
| ГраницыЧтенияДанных.РазмерФайла
|
||||||
|ИЗ
|
|ИЗ
|
||||||
| РегистрСведений.ГраницыЧтенияДанных КАК ГраницыЧтенияДанных
|
| РегистрСведений.ГраницыЧтенияДанных КАК ГраницыЧтенияДанных
|
||||||
|ГДЕ
|
|ГДЕ
|
||||||
@@ -27,7 +28,7 @@
|
|||||||
Возврат Результат;
|
Возврат Результат;
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Процедура УстановитьСостояние(Замер, Процесс, ПроцессID, Период, ПрочитаноСтрок, ДатаНачалаЧтения) Экспорт
|
Процедура УстановитьСостояние(Замер, Процесс, ПроцессID, Период, ПрочитаноСтрок, ДатаНачалаЧтения, ПрочитаноРазмер) Экспорт
|
||||||
|
|
||||||
//если дата начала чтения больше чем конец часа (запас в 5 минут)
|
//если дата начала чтения больше чем конец часа (запас в 5 минут)
|
||||||
//считаем что файл больше дополняться не будет
|
//считаем что файл больше дополняться не будет
|
||||||
@@ -46,6 +47,7 @@
|
|||||||
МенеджерЗаписи.ДатаФайла = Период;
|
МенеджерЗаписи.ДатаФайла = Период;
|
||||||
МенеджерЗаписи.ПрочитаноСтрок = ПрочитаноСтрок;
|
МенеджерЗаписи.ПрочитаноСтрок = ПрочитаноСтрок;
|
||||||
МенеджерЗаписи.ПрочитанПолностью = ПрочитанПолностью;
|
МенеджерЗаписи.ПрочитанПолностью = ПрочитанПолностью;
|
||||||
|
МенеджерЗаписи.РазмерФайла = ПрочитаноРазмер;
|
||||||
МенеджерЗаписи.Записать();
|
МенеджерЗаписи.Записать();
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|||||||
@@ -50,6 +50,21 @@
|
|||||||
<fullTextSearch>Use</fullTextSearch>
|
<fullTextSearch>Use</fullTextSearch>
|
||||||
<dataHistory>Use</dataHistory>
|
<dataHistory>Use</dataHistory>
|
||||||
</resources>
|
</resources>
|
||||||
|
<resources uuid="0d55bb78-9ecd-4d50-9b3b-7de2b5787c2b">
|
||||||
|
<name>РазмерФайла</name>
|
||||||
|
<synonym>
|
||||||
|
<key>ru</key>
|
||||||
|
<value>Размер файла</value>
|
||||||
|
</synonym>
|
||||||
|
<type>
|
||||||
|
<types>Number</types>
|
||||||
|
<numberQualifiers>
|
||||||
|
<precision>15</precision>
|
||||||
|
</numberQualifiers>
|
||||||
|
</type>
|
||||||
|
<fullTextSearch>Use</fullTextSearch>
|
||||||
|
<dataHistory>Use</dataHistory>
|
||||||
|
</resources>
|
||||||
<dimensions uuid="53e0adc4-e366-4641-b13f-1e525e90405d">
|
<dimensions uuid="53e0adc4-e366-4641-b13f-1e525e90405d">
|
||||||
<name>Замер</name>
|
<name>Замер</name>
|
||||||
<synonym>
|
<synonym>
|
||||||
|
|||||||
@@ -285,7 +285,7 @@
|
|||||||
<type>
|
<type>
|
||||||
<types>String</types>
|
<types>String</types>
|
||||||
<stringQualifiers>
|
<stringQualifiers>
|
||||||
<length>1000</length>
|
<length>256</length>
|
||||||
</stringQualifiers>
|
</stringQualifiers>
|
||||||
</type>
|
</type>
|
||||||
<mask></mask>
|
<mask></mask>
|
||||||
@@ -293,9 +293,6 @@
|
|||||||
<maxValue xsi:type="core:UndefinedValue"/>
|
<maxValue xsi:type="core:UndefinedValue"/>
|
||||||
<fullTextSearch>Use</fullTextSearch>
|
<fullTextSearch>Use</fullTextSearch>
|
||||||
<dataHistory>Use</dataHistory>
|
<dataHistory>Use</dataHistory>
|
||||||
<fillValue xsi:type="core:StringValue">
|
|
||||||
<value> </value>
|
|
||||||
</fillValue>
|
|
||||||
<mainFilter>true</mainFilter>
|
<mainFilter>true</mainFilter>
|
||||||
</dimensions>
|
</dimensions>
|
||||||
<forms uuid="9581eebd-2370-4e1b-b075-52bd5f3a0423">
|
<forms uuid="9581eebd-2370-4e1b-b075-52bd5f3a0423">
|
||||||
|
|||||||
Reference in New Issue
Block a user