Обрезание изменений данных в планах обмена 8.2 (управляемая форма)

Задача — удалить из системы все регистрации изменений документов до определенной даты (изменений данных в планах обмена 8.2)

Писалось для клиента: пользователи часто лазят в предыдущие периоды и при обмене УТ -> БП в бухгалтерии слетают движения. По хорошему конечно регулировать надо это датой запрета изменения данных — но если случилось так уже случилось.
Задача — удалить из системы все регистрации изменений документов до определенной даты
Реализация — обработка перебирает все узлы, всех планов счетов и перебирая изменения анализирует дату (сравнение на Если Изменения.Дата // очищаем изменения
КонецЕсли;

код полностью открытый — пользуйтесь

з.ы. При очистке или оставлении изменений обработка комментирует все что делает через сообщения.

6 Comments

  1. Поручик

    В качестве очень простой обработки для обычного бухгалтера сгодится, хотя данную задачу можно решить с помощью некоторых обработок, вываленных на сайте.

    Reply
  2. saub

    так и задумывалось, что просто для бухгалтера — или начинающим программерам как пример

    Reply
  3. Ламия

    Это каждый раз перед обменом придется данную обработку запускать, я верно поняла?

    Reply
  4. xslava2008

    Здравствуйте! Я не совсем понял что делает данная обработка. Если я правильно понял то после обмена в ЦБ через какое то время при обнаружении ошибок можно как бы «ОТКАТИТЬ»? А в ПБ что? там то изменения остануться. В таком случае им снова делать образ?

    Reply
  5. Shrek2015

    а зачем надо обнулять регистрацию изменений то?

    Reply
  6. fixin

    Доделал обработку и под обычные формы, т.к. понадобилось экстренно почистить в УТ 10.3, где было запущено восстановление последовательности и доки зарегистрировались в бухию.

    Странно, файл не прикрепляется. https://yadi.sk/d/kKo-Wh58mXwoG

    У обработки есть недостаток — документ это или нет определяет по наличию поля «Дата», т.е. очищает договора, например.

    Я это поправил:

    
    Процедура ПроизвестиОчистку(ДоДаты)
    Для каждого ПлО из ПланыОбмена цикл
    Выборка=ПлО.Выбрать();
    
    Пока Выборка.Следующий() цикл
    
    УзелИнформационнойБазы=Выборка.Ссылка;
    Если УзелИнформационнойБазы.НомерОтправленного=0 тогда
    Продолжить;
    КонецЕсли;
    ВыборкаДанных = ПланыОбмена.ВыбратьИзменения(УзелИнформационнойБазы,УзелИнформационнойБазы.НомерОтправленного+1);
    Пока ВыборкаДанных.Следующий() Цикл
    СсылкаДок = ВыборкаДанных.Получить();
    МД = Метаданные.НайтиПоТипу(ТипЗнч(СсылкаДок));
    Если МД = Неопределено ИЛИ НЕ  Метаданные.Документы.Содержит(МД) Тогда
    Продолжить;
    КонецЕсли;
    ДатаДок=СсылкаДок.Дата;
    Если ДатаДок<=ДоДаты тогда
    ПланыОбмена.УдалитьРегистрациюИзменений(УзелИнформационнойБазы,СсылкаДок.Ссылка);
    Сообщить(«Очистили изменения «+СсылкаДок.Ссылка);
    Иначе
    Сообщить(«Оставляем «+СсылкаДок.Ссылка);
    КонецЕсли;
    ОбработкаПрерыванияПользователя();
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    КонецПроцедуры
    
    

    Показать

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *