Имя: Пароль:
1C
1С v8
Очистка журнала регистрации
0 ZhigaCzar
 
27.12.20
23:12
Доброго времени суток.
Сделал обработку для очистки журнала регистрации до определенной даты, которая должна отрабатывать по заданному расписанию. Отрабатывала дважды:
1) Первый раз отрабатывало чуть более полутора часа и упала с ошибкой (что-то навроде того, что произошла системная непредвиденная ошибка, точный текст передать не могу, ниже будет написано почему)
2) Второй раз отработало быстрее, около часа, и результат был положительный.

Однако, когда я хотел посмотреть период, который у журнала регистрации остался, через конфигуратор, то я увидел ошибку SQL. В режиме предприятия выходит ошибка уже другая, но ссылаясь на этот же файл.
(Прошу прощения за качество картинки, скрин сделать не удалось, а сейчас воспроизвести данную ошибку не смогу)
https://ibb.co/TPR8jDp

Пришлось остановить службу 1с, чтобы удалить этот злополучный файл, в следствии чего журнал был очищен полностью (собственно из-за этого я не могу сказать с точностью, какая была ошибка и не смогу ее воспроизвести)

Сейчас журнал пустой, но хотелось бы как-то разобраться с этим вопросом, чтобы не приходилось раз в какое-то время чистить журнал регистрации полностью. Вопрос заключается собственно в следующем: кто-то может сталкивался уже с подобными проблемами? Может это ошибка платформы или релиза, которая не позволяет чистить журнал регистрации встроенной процедурой?

Инфо:
Код обработки:
Функция СведенияОВнешнейОбработке() Экспорт
  ПараметрыРегистрации = Новый Структура;
  ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
  ПараметрыРегистрации.Вставить("Наименование", "Очистка журнала регистрации"); //Наименование обработки, которым будет заполнено наименование элемента справочника
  ПараметрыРегистрации.Вставить("Версия", "1.0");
  ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
  ПараметрыРегистрации.Вставить("Информация", "Обработка очищает журнал регистрации до даты (текущая дата минус 1 месяц)"); //Краткая информация по обработке, описание обработки
  ПараметрыРегистрации.Вставить("ВерсияБСП", "1.2.1.4");
  ТаблицаКоманд = ПолучитьТаблицуКоманд();
  ДобавитьКоманду(ТаблицаКоманд,
          "Очистка журнала регистрации", //представление команды в пользовательском интерфейсе
          "ОчисткаЖурналаРегистрацииИД", //идентификатор команды; любая строка, уникальная в пределах данной обработки
          "ВызовСерверногоМетода");
  ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
  Возврат ПараметрыРегистрации;
КонецФункции

Функция ПолучитьТаблицуКоманд()
  Команды = Новый ТаблицаЗначений;
  Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
  Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
  Возврат Команды;
КонецФункции  

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
    
    Если ИдентификаторКоманды = "ОчисткаЖурналаРегистрацииИД" Тогда
        Попытка    
            Дата = ДобавитьМесяц(ТекущаяДата(), -1);
            ПараметрыОтбора = Новый Структура();
            ПараметрыОтбора.Вставить("ДатаОкончания", Дата);
            ОчиститьЖурналРегистрации(ПараметрыОтбора);
        Исключение
            ВызватьИсключение ОписаниеОшибки();
        КонецПопытки;
    КонецЕсли;
                    
КонецПроцедуры

Платформа: 1С:Предприятие 8.3 (8.3.12.1685)
Конфигурация: 1С:ERP Управление предприятием (2.4.6.174/3.2.22.5)
1 Ёпрст
 
гуру
27.12.20
23:29
(0) забить болт на хранение ЖР в базе скульлайт и перейти на старый теплый ламповый формат хранения. Или вообще, отключить ЖР за ненадобностью.
2 D_E_S_131
 
28.12.20
07:02
А шо это за команды БСП? ЖР всегда пакетным запуском чистился вроде как...
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший