Групповое удаление помеченных на удаление документов без контроля ссылочной целостности для УТ 10.3




Удаление из базы данных 1С документов помеченных на удаление, за период без контроля ссылочной целостности базы. Не надо ставить монопольный режим, не нужно выгонять всех пользователей из базы 1С.

Очень часто, менеджерам или бухгалтерам необходимо удалить документы помеченные на удаление. Две обработки предназначенные для быстрого удаления документов за период для конфигурации 1С Управление торговлей 10.3.

В моем случае обработка пригодилась для завершения обновления 1С Управление торговлей до новой версии. После обновления выполняются дополнительные процедуры обработки данных, часть из которых у меня завершалась ошибкой. И в разделе администрирование — Обслуживание — Результаты обновления и дополнительная обработка данных было указано: "Не все процедуры удалось выполнить (выполнено 12 из 14)."

Одна из процедур завершилась ошибкой:
"Процедура "Документы" обработки данных завершилась с ошибкой:
"{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(4342)}: Произошло зацикливание процедуры обработки данных. Выполнение прервано. ВызватьИсключение ТекстИсключения;"

При установке пометки удаления на документ (у меня было из много в базе) возникала ошибка: "Ошибка при выполнении обработчика — ‘ПередЗаписью’ по причине:
{ОбщийМодуль.ОбновлениеИнформационнойБазы.Модуль(194)}: Действия с объектом временно запрещены, так как не завершен переход на новую версию программы.
Не завершены следующие процедуры обработки данных:

ОбработатьДанныеДляПереходаНаНовуюВерсию ВызватьИсключение Результат.ТекстИсключения."

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

Открывать через Файл — Открыть.

Инструкция по применению:

1. Выбрать начало и окончание периода

2. Нажать на соответствующую кнопку

Инструкция по программированию:

Можно добавить любой вид документа, путем небольших манипуляций в коде:

 

Процедура УдалитьДокументы(ИмяДокумента)
Зап=Новый Запрос("ВЫБРАТЬ
                  | Док1.Ссылка КАК Док
                  |ИЗ
                  | Документ."+ИмяДокумента+" КАК Док1
                  |ГДЕ
                  | Док1.ПометкаУдаления = ИСТИНА
                  | И Док1.Дата МЕЖДУ &ДатаНач И &ДатаКон
                  |
                  |УПОРЯДОЧИТЬ ПО
                  | Док1.Дата");
Зап.УстановитьПараметр("ДатаНач",ДатаНач);
Зап.УстановитьПараметр("ДатаКон",ДатаКон);
ТЗ=Зап.Выполнить().Выгрузить();
Для Каждого Стр ИЗ ТЗ Цикл
ДокОб=Стр.Док.ПолучитьОбъект();
Сообщить("Док:"+СокрЛП(Стр.Док));
Попытка
ДокОб.Удалить();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Если Вопрос("Нажмите ДА если прекратить?",РежимДиалогаВопрос.ДаНетОтмена,2)=КодВозвратаДиалога.Да Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры

Процедура УдалитьАктыСверокНажатие(Элемент)
УдалитьДокументы("АктСверкиВзаиморасчетов");
КонецПроцедуры

Процедура УдалитьПКОНажатие(Элемент)
УдалитьДокументы("ПриходныйКассовыйОрдер");
КонецПроцедуры

Процедура УдалитьРКОНажатие(Элемент)
УдалитьДокументы("РасходныйКассовыйОрдер");
КонецПроцедуры

Процедура УдалитьСчетФактураВыданныйНажатие(Элемент)
УдалитьДокументы("СчетФактураВыданный");
КонецПроцедуры

Процедура УдалитьРеализацииНажатие(Элемент)
УдалитьДокументы("РеализацияТоваровУслуг");
КонецПроцедуры

Процедура УдалитьФормированиеЗаписейКнигиПродажНажатие(Элемент)
УдалитьДокументы("ФормированиеЗаписейКнигиПродаж");
КонецПроцедуры


Тестировалось для "Управление торговлей", редакция 10.3 (10.3.10.4). Может работать и на предыдущих релизах, но нет 100% гарантии, что все будет правильно.

6 Comments

  1. Torin

    (0) Групповое создание битых ссылок?

    Reply
  2. alex.msk

    (1) Сначала учимся говнокодить, потом а потом создаем темы «как найти объект с битыми ссылками в реквизитах»)

    Reply
  3. alex.msk

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

    Reply
  4. acanta

    В обработке обмен данными в формате xml в пользовательском режиме типовых конфигураций все это есть и доступно.

    Reply
  5. astracrypt

    (2) Вам поможет наверное эта обработка https://infostart.ru/public/823544/ ?

    Reply
  6. astracrypt

    (3) Чем дальше в лес, тем тольше партизаны 😉

    Reply

Leave a Comment

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