Удаление документа с предварительной очисткой регистровВ одной конфигурации столкнулся с тем, что документ не удалялся физически - стоял запрет на удаление в модуле регистра сведений. Статья посвящена решению проблемы. | | Автор статьи: Последняя редакция №1 от 31.08.06 URL: http://kb.mista.ru/article.php?id=357 | |
Ключевые слова: удаление,набор записей,регистр,очистка
Пришлось поизощряться, в результате чего родилась функция обФизическиГарантированноУдалитьДокумент, которая сначала гарантированно (Обменданными.Загрузка=истина) очищает набор записей, а затем удаляет объект.
Функция обСоздатьМенеджерРегистраПоМетаданным(МД) Экспорт
Если Метаданные.регистрыСведений.Индекс(МД)<>-1 Тогда
Возврат РегистрыСведений[МД.Имя];
КонецЕсли;
Если Метаданные.РегистрыНакопления.Индекс(МД)<>-1 Тогда
Возврат РегистрыНакопления[МД.Имя];
КонецЕсли;
Если Метаданные.РегистрыБухгалтерии.Индекс(МД)<>-1 Тогда
Возврат РегистрыБухгалтерии[МД.Имя];
КонецЕсли;
Если Метаданные.РегистрыРасчета.Индекс(МД)<>-1 Тогда
Возврат РегистрыРасчета[МД.Имя];
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция обФизическиГарантированноУдалитьДвиженияДокумента(Ссылка)Экспорт
МД=Метаданные.НайтиПоТипу(ТипЗнч(Ссылка));
Для Каждого МДРег из МД.Движения Цикл
МенеджерРегистра=обСоздатьМенеджерРегистраПоМетаданным(МДРег);
НЗ=МенеджерРегистра.СоздатьНаборЗаписей();
НЗ.Отбор.Регистратор.Значение=Ссылка;
НЗ.Отбор.Регистратор.Использование=Истина;
НЗ.ОбменДанными.Загрузка=истина;
НЗ.Записать(истина);
КонецЦикла;
КонецФункции
Функция обФизическиГарантированноУдалитьДокумент(Ссылка) Экспорт
обФизическиГарантированноУдалитьДвиженияДокумента(Ссылка);
Об=Ссылка.ПолучитьОбъект();
Об.ОбменДанными.Загрузка=истина;
Об.Удалить();
КонецФункции
|