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;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -45,7 +46,14 @@
|
||||
Если СтрокаТекста = Неопределено Тогда
|
||||
|
||||
//может быть прочитано строк не поменялось а полностью поменялось
|
||||
РегистрыСведений.ГраницыЧтенияДанных.УстановитьСостояние(Замер, Процесс, ПроцессID, Период, ПрочитаноСтрок, ДатаНачалаЧтения);
|
||||
РегистрыСведений.ГраницыЧтенияДанных.УстановитьСостояние(
|
||||
Замер,
|
||||
Процесс,
|
||||
ПроцессID,
|
||||
Период,
|
||||
ПрочитаноСтрок,
|
||||
ДатаНачалаЧтения,
|
||||
РазмерФайла);
|
||||
|
||||
Возврат 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", Истина);
|
||||
Для Каждого Файл из СписокФайлов Цикл
|
||||
//пропускать каталоги
|
||||
Если Файл.ЭтоКаталог() Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
//пропускать пустые файлы
|
||||
Если Файл.Размер()<=3 Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
//пропускать если не в периоде загрузки
|
||||
ПериодФайла = ПолучитьПериодПоИмениФайла(Файл.ИмяБезРасширения);
|
||||
Если ИспользуетсяОграничениеПериода Тогда
|
||||
Если ЗначениеЗаполнено(РеквизитыЗадания.НачалоПериода) И ПериодФайла < НачалоЧаса(РеквизитыЗадания.НачалоПериода)
|
||||
@@ -42,12 +43,11 @@
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
//пропускать файл текущего периода если не загрузка в реальном времени
|
||||
Если НЕ РеквизитыЗадания.ЗагрузкаВРеальномВремени
|
||||
И Файл.ИмяБезРасширения = ИмяТекущегоФайла Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
//получение параметров процесса по каталогу
|
||||
//c:\v8\log\rphost_1234\
|
||||
// ^^^^^^^^^^^
|
||||
@@ -55,9 +55,14 @@
|
||||
ИмяИД = СтрРазделить(КаталогПроцесса, "_");
|
||||
|
||||
СостояниеЧтения = РегистрыСведений.ГраницыЧтенияДанных.ПолучитьСостояние(РеквизитыЗадания.Замер, ИмяИД[0], ИмяИД[1], ПериодФайла);
|
||||
//пропускать прочитанные
|
||||
Если СостояниеЧтения.ПрочитанПолностью Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
//пропускать если размер с прошного сеанса не изменился
|
||||
Если Файл.Размер() = СостояниеЧтения.РазмерФайла Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
строкарезультата = Результат.Добавить();
|
||||
строкарезультата.ПолноеИмя = Файл.ПолноеИмя;
|
||||
|
||||
@@ -585,30 +585,30 @@
|
||||
//
|
||||
// Примечание:
|
||||
// Функцию нельзя использовать для объектных типов (СправочникОбъект, ДокументОбъект и т.п.).
|
||||
Функция СкопироватьРекурсивно(Источник) Экспорт
|
||||
|
||||
Перем Приемник;
|
||||
|
||||
ТипИсточника = ТипЗнч(Источник);
|
||||
Если ТипИсточника = Тип("Структура") Тогда
|
||||
Приемник = СкопироватьСтруктуру(Источник);
|
||||
ИначеЕсли ТипИсточника = Тип("Соответствие") Тогда
|
||||
Приемник = СкопироватьСоответствие(Источник);
|
||||
ИначеЕсли ТипИсточника = Тип("Массив") Тогда
|
||||
Приемник = СкопироватьМассив(Источник);
|
||||
ИначеЕсли ТипИсточника = Тип("СписокЗначений") Тогда
|
||||
Приемник = СкопироватьСписокЗначений(Источник);
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
||||
ИначеЕсли ТипИсточника = Тип("ТаблицаЗначений") Тогда
|
||||
Приемник = Источник.Скопировать();
|
||||
#КонецЕсли
|
||||
Иначе
|
||||
Приемник = Источник;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Приемник;
|
||||
|
||||
КонецФункции
|
||||
//Функция СкопироватьРекурсивно(Источник) Экспорт
|
||||
//
|
||||
// Перем Приемник;
|
||||
//
|
||||
// ТипИсточника = ТипЗнч(Источник);
|
||||
// Если ТипИсточника = Тип("Структура") Тогда
|
||||
// Приемник = СкопироватьСтруктуру(Источник);
|
||||
// ИначеЕсли ТипИсточника = Тип("Соответствие") Тогда
|
||||
// Приемник = СкопироватьСоответствие(Источник);
|
||||
// ИначеЕсли ТипИсточника = Тип("Массив") Тогда
|
||||
// Приемник = СкопироватьМассив(Источник);
|
||||
// ИначеЕсли ТипИсточника = Тип("СписокЗначений") Тогда
|
||||
// Приемник = СкопироватьСписокЗначений(Источник);
|
||||
//#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
||||
// ИначеЕсли ТипИсточника = Тип("ТаблицаЗначений") Тогда
|
||||
// Приемник = Источник.Скопировать();
|
||||
//#КонецЕсли
|
||||
// Иначе
|
||||
// Приемник = Источник;
|
||||
// КонецЕсли;
|
||||
//
|
||||
// Возврат Приемник;
|
||||
//
|
||||
//КонецФункции
|
||||
|
||||
// Создает копию значения типа Структура.
|
||||
//
|
||||
@@ -618,17 +618,17 @@
|
||||
// Возвращаемое значение:
|
||||
// Структура - копия исходной структуры.
|
||||
//
|
||||
Функция СкопироватьСтруктуру(СтруктураИсточник) Экспорт
|
||||
|
||||
СтруктураРезультат = Новый Структура;
|
||||
|
||||
Для Каждого КлючИЗначение Из СтруктураИсточник Цикл
|
||||
СтруктураРезультат.Вставить(КлючИЗначение.Ключ, СкопироватьРекурсивно(КлючИЗначение.Значение));
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СтруктураРезультат;
|
||||
|
||||
КонецФункции
|
||||
//Функция СкопироватьСтруктуру(СтруктураИсточник) Экспорт
|
||||
//
|
||||
// СтруктураРезультат = Новый Структура;
|
||||
//
|
||||
// Для Каждого КлючИЗначение Из СтруктураИсточник Цикл
|
||||
// СтруктураРезультат.Вставить(КлючИЗначение.Ключ, СкопироватьРекурсивно(КлючИЗначение.Значение));
|
||||
// КонецЦикла;
|
||||
//
|
||||
// Возврат СтруктураРезультат;
|
||||
//
|
||||
//КонецФункции
|
||||
|
||||
// Создает копию значения типа Соответствие.
|
||||
//
|
||||
@@ -638,61 +638,61 @@
|
||||
// Возвращаемое значение:
|
||||
// Соответствие - копия исходного соответствия.
|
||||
//
|
||||
Функция СкопироватьСоответствие(СоответствиеИсточник) Экспорт
|
||||
|
||||
СоответствиеРезультат = Новый Соответствие;
|
||||
|
||||
Для Каждого КлючИЗначение Из СоответствиеИсточник Цикл
|
||||
СоответствиеРезультат.Вставить(КлючИЗначение.Ключ, СкопироватьРекурсивно(КлючИЗначение.Значение));
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СоответствиеРезультат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает копию значения типа Массив.
|
||||
//Функция СкопироватьСоответствие(СоответствиеИсточник) Экспорт
|
||||
//
|
||||
// СоответствиеРезультат = Новый Соответствие;
|
||||
//
|
||||
// Для Каждого КлючИЗначение Из СоответствиеИсточник Цикл
|
||||
// СоответствиеРезультат.Вставить(КлючИЗначение.Ключ, СкопироватьРекурсивно(КлючИЗначение.Значение));
|
||||
// КонецЦикла;
|
||||
//
|
||||
// Возврат СоответствиеРезультат;
|
||||
//
|
||||
// Параметры:
|
||||
// МассивИсточник - Массив - массив, копию которого необходимо получить.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив - копия исходного массива.
|
||||
//КонецФункции
|
||||
//
|
||||
Функция СкопироватьМассив(МассивИсточник) Экспорт
|
||||
|
||||
МассивРезультат = Новый Массив;
|
||||
|
||||
Для Каждого Элемент Из МассивИсточник Цикл
|
||||
МассивРезультат.Добавить(СкопироватьРекурсивно(Элемент));
|
||||
КонецЦикла;
|
||||
|
||||
Возврат МассивРезультат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает копию значения типа СписокЗначений.
|
||||
//// Создает копию значения типа Массив.
|
||||
////
|
||||
//// Параметры:
|
||||
//// МассивИсточник - Массив - массив, копию которого необходимо получить.
|
||||
////
|
||||
//// Возвращаемое значение:
|
||||
//// Массив - копия исходного массива.
|
||||
////
|
||||
//Функция СкопироватьМассив(МассивИсточник) Экспорт
|
||||
//
|
||||
// МассивРезультат = Новый Массив;
|
||||
//
|
||||
// Для Каждого Элемент Из МассивИсточник Цикл
|
||||
// МассивРезультат.Добавить(СкопироватьРекурсивно(Элемент));
|
||||
// КонецЦикла;
|
||||
//
|
||||
// Возврат МассивРезультат;
|
||||
//
|
||||
//КонецФункции
|
||||
//
|
||||
// Параметры:
|
||||
// СписокИсточник - СписокЗначений - список значений, копию которого необходимо получить.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// СписокЗначений - копия исходного списка значений.
|
||||
//
|
||||
Функция СкопироватьСписокЗначений(СписокИсточник) Экспорт
|
||||
|
||||
СписокРезультат = Новый СписокЗначений;
|
||||
|
||||
Для Каждого ЭлементСписка Из СписокИсточник Цикл
|
||||
СписокРезультат.Добавить(
|
||||
СкопироватьРекурсивно(ЭлементСписка.Значение),
|
||||
ЭлементСписка.Представление,
|
||||
ЭлементСписка.Пометка,
|
||||
ЭлементСписка.Картинка);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СписокРезультат;
|
||||
|
||||
КонецФункции
|
||||
//// Создает копию значения типа СписокЗначений.
|
||||
////
|
||||
//// Параметры:
|
||||
//// СписокИсточник - СписокЗначений - список значений, копию которого необходимо получить.
|
||||
////
|
||||
//// Возвращаемое значение:
|
||||
//// СписокЗначений - копия исходного списка значений.
|
||||
////
|
||||
//Функция СкопироватьСписокЗначений(СписокИсточник) Экспорт
|
||||
//
|
||||
// СписокРезультат = Новый СписокЗначений;
|
||||
//
|
||||
// Для Каждого ЭлементСписка Из СписокИсточник Цикл
|
||||
// СписокРезультат.Добавить(
|
||||
// СкопироватьРекурсивно(ЭлементСписка.Значение),
|
||||
// ЭлементСписка.Представление,
|
||||
// ЭлементСписка.Пометка,
|
||||
// ЭлементСписка.Картинка);
|
||||
// КонецЦикла;
|
||||
//
|
||||
// Возврат СписокРезультат;
|
||||
//
|
||||
//КонецФункции
|
||||
|
||||
// Сравнивает элементы списков значений или массивов по значениям.
|
||||
Функция СпискиЗначенийИдентичны(Список1, Список2) Экспорт
|
||||
@@ -1441,30 +1441,30 @@
|
||||
// - ТипПлатформы - разделитель пути файловой системы для
|
||||
// указанного типа платформы.
|
||||
//
|
||||
Функция РазделительПути(Платформа = Неопределено) Экспорт
|
||||
|
||||
Если Платформа = Неопределено Тогда
|
||||
|
||||
#Если ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
||||
СистемнаяИнфо = Новый СистемнаяИнформация;
|
||||
Платформа = СистемнаяИнфо.ТипПлатформы;
|
||||
#ИначеЕсли Клиент Тогда
|
||||
Платформа = ОбщегоНазначенияКлиентПовтИсп.ТипПлатформыКлиента();
|
||||
#Иначе
|
||||
Платформа = ОбщегоНазначенияПовтИсп.ТипПлатформыСервера();
|
||||
#КонецЕсли
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Платформа = ТипПлатформы.Windows_x86
|
||||
ИЛИ Платформа = ТипПлатформы.Windows_x86_64 Тогда
|
||||
|
||||
Возврат "\";
|
||||
Иначе
|
||||
Возврат "/";
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
//Функция РазделительПути(Платформа = Неопределено) Экспорт
|
||||
//
|
||||
// Если Платформа = Неопределено Тогда
|
||||
//
|
||||
// #Если ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
|
||||
// СистемнаяИнфо = Новый СистемнаяИнформация;
|
||||
// Платформа = СистемнаяИнфо.ТипПлатформы;
|
||||
// #ИначеЕсли Клиент Тогда
|
||||
// Платформа = ОбщегоНазначенияКлиентПовтИсп.ТипПлатформыКлиента();
|
||||
// #Иначе
|
||||
// Платформа = ОбщегоНазначенияПовтИсп.ТипПлатформыСервера();
|
||||
// #КонецЕсли
|
||||
//
|
||||
// КонецЕсли;
|
||||
//
|
||||
// Если Платформа = ТипПлатформы.Windows_x86
|
||||
// ИЛИ Платформа = ТипПлатформы.Windows_x86_64 Тогда
|
||||
//
|
||||
// Возврат "\";
|
||||
// Иначе
|
||||
// Возврат "/";
|
||||
// КонецЕсли;
|
||||
//
|
||||
//КонецФункции
|
||||
|
||||
// Возвращает имя файла с расширением.
|
||||
// Если расширение пустое, тогда точка не добавляется.
|
||||
@@ -2357,19 +2357,19 @@
|
||||
// ЛюбаяСсылка - Ссылка предопределенного элемента.
|
||||
// Неопределено - Если элемент не найден.
|
||||
//
|
||||
Функция ПредопределенныйЭлемент(ПолноеИмяПредопределенного) Экспорт
|
||||
Если ВРег(Прав(ПолноеИмяПредопределенного, 13)) = ".ПУСТАЯССЫЛКА" Тогда
|
||||
// Для получения пустых ссылок используется стандартная функция платформы.
|
||||
Возврат ПредопределенноеЗначение(ПолноеИмяПредопределенного);
|
||||
КонецЕсли;
|
||||
|
||||
#Если НЕ ТонкийКлиент И НЕ ВебКлиент И НЕ ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
Возврат СтандартныеПодсистемыПовтИсп.ПредопределенныйЭлемент(ПолноеИмяПредопределенного);
|
||||
#Иначе
|
||||
Возврат СтандартныеПодсистемыКлиентПовтИсп.ПредопределенныйЭлемент(ПолноеИмяПредопределенного);
|
||||
#КонецЕсли
|
||||
|
||||
КонецФункции
|
||||
//Функция ПредопределенныйЭлемент(ПолноеИмяПредопределенного) Экспорт
|
||||
// Если ВРег(Прав(ПолноеИмяПредопределенного, 13)) = ".ПУСТАЯССЫЛКА" Тогда
|
||||
// // Для получения пустых ссылок используется стандартная функция платформы.
|
||||
// Возврат ПредопределенноеЗначение(ПолноеИмяПредопределенного);
|
||||
// КонецЕсли;
|
||||
//
|
||||
//#Если НЕ ТонкийКлиент И НЕ ВебКлиент И НЕ ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
// Возврат СтандартныеПодсистемыПовтИсп.ПредопределенныйЭлемент(ПолноеИмяПредопределенного);
|
||||
//#Иначе
|
||||
// Возврат СтандартныеПодсистемыКлиентПовтИсп.ПредопределенныйЭлемент(ПолноеИмяПредопределенного);
|
||||
//#КонецЕсли
|
||||
//
|
||||
//КонецФункции
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Прочие функции
|
||||
@@ -2520,13 +2520,13 @@
|
||||
КонецФункции
|
||||
|
||||
// Возвращает код основного языка конфигурации, например "ru".
|
||||
Функция КодОсновногоЯзыка() Экспорт
|
||||
#Если НЕ ТонкийКлиент И НЕ ВебКлиент Тогда
|
||||
Возврат Метаданные.ОсновнойЯзык.КодЯзыка;
|
||||
#Иначе
|
||||
Возврат СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().КодОсновногоЯзыка;
|
||||
#КонецЕсли
|
||||
КонецФункции
|
||||
//Функция КодОсновногоЯзыка() Экспорт
|
||||
// #Если НЕ ТонкийКлиент И НЕ ВебКлиент Тогда
|
||||
// Возврат Метаданные.ОсновнойЯзык.КодЯзыка;
|
||||
// #Иначе
|
||||
// Возврат СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().КодОсновногоЯзыка;
|
||||
// #КонецЕсли
|
||||
//КонецФункции
|
||||
|
||||
// Возвращает Истина, если клиентское приложение подключено к базе через веб-сервер.
|
||||
// Если нет клиентского приложения, возвращается Ложь.
|
||||
@@ -2797,11 +2797,11 @@
|
||||
// Устаревшие процедуры и функции.
|
||||
|
||||
// Устарела. Следует использовать РазделительПути.
|
||||
Функция ПолучитьСлеш(Платформа = Неопределено) Экспорт
|
||||
|
||||
Возврат РазделительПути(Платформа);
|
||||
|
||||
КонецФункции
|
||||
//Функция ПолучитьСлеш(Платформа = Неопределено) Экспорт
|
||||
//
|
||||
// Возврат РазделительПути(Платформа);
|
||||
//
|
||||
//КонецФункции
|
||||
|
||||
// Устарела. Следует удалить все использования этой функции и ветки кода при значении Ложь.
|
||||
//
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
&НаКлиенте
|
||||
Процедура ОбновитьСтатус() Экспорт
|
||||
СтруктураСостояния = ПолучитьИзВременногоХранилища("asdf");
|
||||
КонецПроцедуры // ОбновитьСтатус
|
||||
@@ -1,13 +1,14 @@
|
||||
#Если Сервер ИЛИ ВнешнееСоединение Тогда
|
||||
|
||||
Функция ПолучитьСостояние(Замер, Процесс, ПроцессИД, ПериодФайла) Экспорт
|
||||
Результат = Новый Структура("ПрочитаноСтрок,ПрочитанПолностью", 0, Ложь);
|
||||
Результат = Новый Структура("ПрочитаноСтрок,ПрочитанПолностью,РазмерФайла", 0, Ложь, 0);
|
||||
|
||||
ПроцессСсылка = СправочникиСерверПовтИсп.ПолучитьПроцесс(Процесс);
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст = "ВЫБРАТЬ
|
||||
| ГраницыЧтенияДанных.ПрочитаноСтрок,
|
||||
| ГраницыЧтенияДанных.ПрочитанПолностью
|
||||
| ГраницыЧтенияДанных.ПрочитанПолностью,
|
||||
| ГраницыЧтенияДанных.РазмерФайла
|
||||
|ИЗ
|
||||
| РегистрСведений.ГраницыЧтенияДанных КАК ГраницыЧтенияДанных
|
||||
|ГДЕ
|
||||
@@ -27,7 +28,7 @@
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьСостояние(Замер, Процесс, ПроцессID, Период, ПрочитаноСтрок, ДатаНачалаЧтения) Экспорт
|
||||
Процедура УстановитьСостояние(Замер, Процесс, ПроцессID, Период, ПрочитаноСтрок, ДатаНачалаЧтения, ПрочитаноРазмер) Экспорт
|
||||
|
||||
//если дата начала чтения больше чем конец часа (запас в 5 минут)
|
||||
//считаем что файл больше дополняться не будет
|
||||
@@ -46,6 +47,7 @@
|
||||
МенеджерЗаписи.ДатаФайла = Период;
|
||||
МенеджерЗаписи.ПрочитаноСтрок = ПрочитаноСтрок;
|
||||
МенеджерЗаписи.ПрочитанПолностью = ПрочитанПолностью;
|
||||
МенеджерЗаписи.РазмерФайла = ПрочитаноРазмер;
|
||||
МенеджерЗаписи.Записать();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -50,6 +50,21 @@
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
</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">
|
||||
<name>Замер</name>
|
||||
<synonym>
|
||||
|
||||
@@ -285,7 +285,7 @@
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>1000</length>
|
||||
<length>256</length>
|
||||
</stringQualifiers>
|
||||
</type>
|
||||
<mask></mask>
|
||||
@@ -293,9 +293,6 @@
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<dataHistory>Use</dataHistory>
|
||||
<fillValue xsi:type="core:StringValue">
|
||||
<value> </value>
|
||||
</fillValue>
|
||||
<mainFilter>true</mainFilter>
|
||||
</dimensions>
|
||||
<forms uuid="9581eebd-2370-4e1b-b075-52bd5f3a0423">
|
||||
|
||||
Reference in New Issue
Block a user