Небольшой тюнинг моей обработки удаления помеченных объектов
Клиент поставил задачу, чтобы один из пользователей мог удалять помеченные на удаление поступления.
Сначала я попытался дать ему типовую обработку удаления помеченных, создал команду:
&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ПодключитьВнешнююОбработкуНаСервере(); ОткрытьФорму("ВнешняяОбработка.StandardDeleteMarkedObjects.Форма"); КонецПроцедуры &НаСервере Процедура ПодключитьВнешнююОбработкуНаСервере() ВнешниеОбработки.Подключить("v8res://mngbase/StandardDeleteMarkedObjects.epf", "StandardDeleteMarkedObjects", false); КонецПроцедуры //1. Активные пользователи - "v8res://mngbase/StandardActiveUsers.epf"; //2. Журнал регистрации - "v8res://mngbase/StandardEventLog.epf"; //3. Поиск ссылок на объект - "v8res://mngbase/StandardFindByRef.epf"; //4. Проведение документов - "v8res://mngbase/StandardDocumentsPosting.epf"; //5. Удаление помеченных объектов - "v8res://mngbase/StandardDeleteMarkedObjects.epf"; //6. Управление внешними источниками данных - "v8res://mngbase/StandardExternalDataSourcesManagement.epf"; //7. Управление итогами - "v8res://mngbase/StandardTotalsManagement.epf"; //8. Управление полнотекстовым поиском - "v8res://mngbase/StandardFullTextSearchManagement.epf"; //9. Управление расширениями конфигурации - "v8res://mngbase/StandardExtensionsManagement.epf";
Но забыл, что типовая удаляет только в монопольном режиме.
Тогда подсунул свою обработку. Но она не удаляла, т.к. не могла очистить наборы записей. Сначала я хотел посмотреть, что там за наборы записей, ведь помеченный на удаление документ не содержит движений?
Потом посмотрел свой код и увидел не совершенство — код пытался удалять даже пустые записи. Поэтому добавил контроль на количество записей и удаление заработало!
Для Каждого НаборЗаписей Из ДвиженияДокумента Цикл НаборЗаписей.ОбменДанными.Загрузка = УдалятьВРежимеОбменаДанными; НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() > 0 Тогда НаборЗаписей.Очистить(); Попытка НаборЗаписей.Записать(); Исключение Успешно = Ложь; ОписаниеОшибки = "Не удаляется набор записей регистра: " + Метаданные.НайтиПоТипу(ТипЗнч(НаборЗаписей)).Имя + " : " +ОписаниеОшибки(); Прервать; КонецПопытки; КонецЕсли; КонецЦикла;

Свежие комментарии