Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 дек 2024, 18:44

Проблема с програмным удалением документов

Автор Storm03, 15 окт 2023, 09:27

0 Пользователей и 1 гость просматривают эту тему.

Storm03

Нужно удалить все документы по организации из Комплексной.
Написал обработку:

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

Обработка идёт долго, примерно 4 дня.
И после выдаёт кучу ощибок типа:

 Расчет по страховым взносам за 2020 г. (Вид: П. Организация: Пример ООО) Ошибка при вызове метода контекста (Удалить)
 6-НДФЛ за 2020 г. (Вид: П. Организация: Пример ООО) Ошибка при вызове метода контекста (Записать)
 6-НДФЛ за 2020 г. (Вид: П. Организация: Пример ООО) Ошибка при вызове метода контекста (Удалить)
 6-НДФЛ за 2020 г. (Вид: П. Организация: Пример ООО) Ошибка при вызове метода контекста (Записать)
 6-НДФЛ за 2020 г. (Вид: П. Организация: Пример ООО) Ошибка при вызове метода контекста (Удалить)
 Расчет по страховым взносам за 9 месяцев 2020 г. (Вид: П. Организация: Пример ООО) Ошибка при вызове метода контекста (Записать)
 Расчет по страховым взносам за 9 месяцев 2020 г. (Вид: П. Организация: Пример ООО) Ошибка при вызове метода контекста (Удалить)
 4-ФСС за 9 месяцев 2020 г. (Вид: П. Организация: Пример ООО) Ошибка при вызове метода контекста (Записать)
 4-ФСС за 9 месяцев 2020 г. (Вид: П. Организация: Пример ООО) Ошибка при вызове метода контекста (Удалить)

Подскажите, пожалуйста, что я не досмотрел?

Максим75

Storm03, в выборке находите объект и ДокументОбъект.УстановитьПометкуУдаления(Истина) ;

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

а так Вы снимаете с  проведения, а на куче документов это долго. скорее всего в ОбработкеУдаленияПроведения у документов много чего может быть написано, пока обработает...

Storm03

Максим75, Просто хочется верить, что штатной отменой проведения отменится проведение связанных документов)))

Максим75

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

LexaK

И ещё, при массовых обработках документов, изменяющих движения, отключайте Итоги, будет гораздо быстрее.
если помогло нажмите: Спасибо!

Storm03

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

Максим75

Storm03, нет, никого не смутило.
в самом первом сообщении было: "Нужно удалить все документы по организации."
Если такая задача ставится - то нет необходимости что-то еще проверять, тупо берутся и удаляются все документы. Т.е. чистится период, а остатки где-то сохраняются, а потом заполняются.

Storm03

Максим75, Понятно. Дальше заголовка не читаем.

Максим75

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

Вам ответили, почему так долго.
Дальше сами решайте, что со всем этим кином делать.

alexandr_ll


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск