Версия для печати темы (https://pro1c.org.ua/index.php?s=5dc1313f8437966c0b07ce19374a8617&showtopic=21267)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Ошибка при очистке журнала регистрации
Автор: Zlyukka 19.12.14, 10:33
Платформа 1с 8.3.5.1119 пользую функцию ОчиститьЖурналРегистрации()
Процедура КнопкаВыполнитьНажатие(Кнопка)
фильтр=Новый Структура;
Событие=Новый Массив;
Событие.Добавить("_$Job$_.Start");
Событие.Добавить("_$Job$_.Succeed");
фильтр.Вставить("Приложение","Фоновое задание");
фильтр.Вставить("Событие",Событие);
ОчиститьЖурналРегистрации(фильтр);
КонецПроцедуры
Но получаю ошибочку
{Обработка.a1.Форма.Форма.Форма(9)}: Ошибка при вызове метода контекста (ОчиститьЖурналРегистрации)
ОчиститьЖурналРегистрации(фильтр);
по причине:
Ошибка очистки журнала регистрации.
по причине:
Метод не поддерживается данной реализацией журнала регистрации
Попробовал перевести журнал в новый формат - не помогло
Подскажите пожалуйста как выйти из данной ситуации.
Автор: Petre 19.12.14, 10:44
Цитата(Zlyukka @ 19.12.14, 10:33)
Попробовал перевести журнал в новый формат - не помогло
Какая ошибка после перехода на новый формат?
Автор: Zlyukka 19.12.14, 10:45
Цитата(Petre @ 19.12.14, 11:44)
Какая ошибка после перехода на новый формат?
таже
Автор: Petre 19.12.14, 10:48
Могу лишь посоветовать обновить платформу. Были проблемы с новым форматом. Да и сейчас некоторые остались.
Автор: Zlyukka 19.12.14, 10:53
Да я об этом тоже подумываю но обновление может потащить за собой ещё кучу работы
Автор: logist 19.12.14, 10:55
Цитата(Zlyukka @ 19.12.14, 10:33)
Процедура КнопкаВыполнитьНажатие(Кнопка)
1. Вы запускаете процедуру в клиентской части или в серверной? В клиентской она недоступна.
2. Приложение запущено с правами администратора компьютера?
3. Файл журнала действительно хранится в LGD (т.е. Вы физически видите этот файл на диске)?
4. Вместо фильтр.Вставить("Приложение","Фоновое задание"); пробовали фильтр.Вставить("ИмяПриложения","Фоновое задание"); ?
Автор: Zlyukka 22.12.14, 17:04
Цитата(logist @ 19.12.14, 10:55)
1. Вы запускаете процедуру в клиентской части или в серверной? В клиентской она недоступна.
2. Приложение запущено с правами администратора компьютера?
3. Файл журнала действительно хранится в LGD (т.е. Вы физически видите этот файл на диске)?
4. Вместо фильтр.Вставить("Приложение","Фоновое задание"); пробовали фильтр.Вставить("ИмяПриложения","Фоновое задание"); ?
1 Запускал на толстом клиенте - в описании процедуры написано что там доступен;
2. Вот тут может быть загвоздка так как 1с сервер находится на другой машине вызываю из регламентного задания;
3. Да я его вижу;
4. Согласен не внимательно вычитал описание;
Теперь код выглядит так
Процедура ОчисткаЖурнала() Экспорт
фильтр=Новый Структура;
Событие=Новый Массив;
Событие.Добавить("_$Job$_.Start");
Событие.Добавить("_$Job$_.Succeed");
фильтр.Вставить("ДатаОкончания",ТекущаяДата()-60);
фильтр.Вставить("ИмяПриложение","Фоновое задание");
фильтр.Вставить("Событие",Событие);
ОчиститьЖурналРегистрации(фильтр);
Сообщить("Записи удалены");
КонецПроцедуры
и во как ругается
{ОбщийМодуль.Демон.Модуль(243)}: Ошибка при вызове метода контекста (ОчиститьЖурналРегистрации)
по причине:
Ошибка очистки журнала регистрации.
по причине:
Ошибка формата файла журнала регистрации
по причине:
sqlite3_exec failed: database is locked
db: C:\Program Files\1cv8\srvinfo\reg_1541\cc10818a-3dff-4350-9e32-d83a386413b1\1Cv8Log\1Cv8.lgd
sql: DELETE FROM EventLog WHERE rowID IN (SELECT rowID FROM _ForDelete);
Автор: logist 22.12.14, 17:22
Цитата(Zlyukka @ 22.12.14, 17:04) http://pro1c.org.ua/index.php?act=findpost&pid=94567
фильтр.Вставить("ИмяПриложения","Фоновое задание"); ?
Цитата(Zlyukka @ 22.12.14, 17:04)
sqlite3_exec failed: database is locked
Подозреваю, что в момент работы этого задания в базе не должно быть пользователей, не должен быть открыт конфигуратор.
Автор: Zlyukka 23.12.14, 9:56
Цитата(logist @ 22.12.14, 17:22)
Подозреваю, что в момент работы этого задания в базе не должно быть пользователей, не должен быть открыт конфигуратор.
К сожалению не помогло. А чего это оно ругается на формат файла?
Автор: Vofka 23.12.14, 11:07
Сам журнал битый може.
Автор: Zlyukka 23.12.14, 11:45
Заработало
Процедура ОчисткаЖурнала() Экспорт
фильтр=Новый Структура;
Событие=Новый Массив;
Событие.Добавить("_$Job$_.Start");
Событие.Добавить("_$Job$_.Succeed");
Событие.Добавить("_$Session$_.Finish");
Событие.Добавить("_$Session$_.Start");
фильтр.Вставить("ДатаОкончания",ТекущаяДата());
//фильтр.Вставить("ИмяПриложения","Фоновое задание");
фильтр.Вставить("Компьютер","S8");
фильтр.Вставить("Событие",Событие);
ОчиститьЖурналРегистрации(фильтр);
КонецПроцедуры
Можетфильтр.Вставить("ИмяПриложения","Фоновое задание"); не нравилась хотя причом тут база заблокирована? Если кто знает поясните
Автор: logist 23.12.14, 13:07
Может ("ИмяПриложения","_$Job$_") ?
Автор: Zlyukka 23.12.14, 15:02
Цитата(logist @ 23.12.14, 13:07)
Может ("ИмяПриложения","_$Job$_") ?
Так тоже не работает
Автор: Petre 23.12.14, 16:35
Цитата(logist @ 23.12.14, 13:07)
Может ("ИмяПриложения","_$Job$_") ?
Думаю, правильно так:
("ИмяПриложения","BackgroundJob")
Автор: Zlyukka 23.12.14, 17:03
Цитата(Petre @ 23.12.14, 16:35)
Думаю, правильно так:
("ИмяПриложения","BackgroundJob")
ХМ Странно так работает хотя ("ИмяПриложения","ФоновоеЗадание") не принимало.
Спасибо за содействие.
Автор: Vofka 23.12.14, 17:07
Zlyukka, можно не стесняться жать палец
Автор: Petre 23.12.14, 17:32
Цитата(Zlyukka @ 23.12.14, 17:03)
хотя ("ИмяПриложения","ФоновоеЗадание") не принимало.
"Фоновое задание" - это представление приложения (т. н. "ApplicationPresentation"), которое, как я подозреваю, формируется при "ВыгрузитьЖурналРегистрации" в зависимости от языкового пакета (для украинского, например, выводит в xml-файл "Фонове завдання").
Автор: Zlyukka 23.12.14, 17:46
Поспешил фильтр.Вставить("ИмяПриложения","BackgroundJob"); вызывает все туже ошибку ну да ладно мне хватит и такого
фильтр=Новый Структура;
Событие=Новый Массив;
Событие.Добавить("_$Job$_.Start");
Событие.Добавить("_$Job$_.Succeed");
Событие.Добавить("_$Session$_.Finish");
Событие.Добавить("_$Session$_.Start");
фильтр.Вставить("ДатаОкончания",ТекущаяДата());
фильтр.Вставить("Событие",Событие);
ОчиститьЖурналРегистрации(фильтр);
Оно удалит только (старт и финиш) фоновых задач чего мне и надо просто было интересно почему не отрабатывает отбор по имени приложения.
Кстати при фильтрации содержимого журнала регистрации по приложению допускается как _$Job$_ так и Фоновое задание и т.д. Тоисть при отборе (теоретически) допустимо использовать эти значение
Автор: Petre 24.12.14, 16:36
Цитата(Zlyukka @ 23.12.14, 17:46)
Кстати при фильтрации содержимого журнала регистрации по приложению допускается как _$Job$_ так и Фоновое задание и т.д. Тоисть при отборе (теоретически) допустимо использовать эти значение
Фильтр по имени приложения не работает с представлением этого приложения равно как и с событием. Т. е. правильно:
СтруктураФильтра.Вставить("ИмяПриложения", "BackgroundJob");
не правильно:
СтруктураФильтра.Вставить("ИмяПриложения", "_$Job$_");
СтруктураФильтра.Вставить("ИмяПриложения", "Фоновое задание");
Но если написать не правильно, ошибки не будет (протестировано на 8.3.5.1248).
Автор: MadProf 09.01.15, 11:14
Цитата(Zlyukka @ 22.12.14, 17:04)
1 Запускал на толстом клиенте - в описании процедуры написано что там доступен;
2. Вот тут может быть загвоздка так как 1с сервер находится на другой машине вызываю из регламентного задания;
Так код выполняется в регламентном задании или на клиенте? Если в регламентном - могу предположить, что блокировка удаления связана с тем, что вы удаляете события фонового задания из фонового же задания. Своего рода взаимоблокировка на уровне SQL. Желательно проверить код не в регламентном а вызвав с клиента.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua