Удаление помеченных объектов: быстрый старт и отбор по периоду для документов


Быстрый старт (при открытии сначала выбираются метаданные и только потом ищутся помеченные на удаление объекты)
Добавлена возможность выбора периода для документов, которые необходимо удалить

Благодарность за идеи: //infostart.ru/public/395681/ и //infostart.ru/public/151117/

Эта обработка совместила в себе две вышеуказанные (2 в 1).

1) Реализован быстрый старт (при открытии сначала выбираются метаданные и только потом ищутся помеченные на удаление объекты)

Обработка «Удаление помеченных объектов» использует стандартную обработку «Удаление помеченных объектов с отбором по метаданным»

Также при невозможности удалить какой то объект (например, стоит какой-то запрет на редактирование) обработка идет дальше, а не останавливает работу как стандартный метод в 1С (В меню «операции» — «удаление помеченных объектов»)

2) Добавлена возможность выбора периода для документов, которые необходимо удалить.

Отбор периода осуществляется у помеченных объектов (документов).

То есть если надо удалить документы, например, «Реализация товаров и услуг», то сначала надо выбрать объект метаданных:

1. Нажать кнопку «отбор по метаданным».

2. Снять все галочки.

3. Выбрать только «Документ.РеализацияТоваровУслуг».

Затем выбрать период:

1. Нажать кнопку «отбор по периоду».

2. Выбрать период (останутся отмеченными только те документы, которые входят в выбранный период).

3. Осуществить удаление объектов.

9 Comments

  1. olegtymko

    Почему нельзя массово выбрать документы?

    Reply
  2. Alex1Cnic

    (1) olegtymko,

    Что значит массово, поконкретнее уточните вопрос.

    Reply
  3. bobster123456

    чёт ошибкой валится сие творенье уже с первой кнопки «ОК»

    {ВнешняяОбработка.УдалениеПомеченныхОбъектов.Форма.ВыборОбъектовДляОтбораНач.Форма(158)}: Ошибка при вызове метода контекста (Выполнить)
    Выборка =  Запрос.Выполнить().Выбрать();
    по причине:
    {(10, 1)}: Синтаксическая ошибка «ВЫБРАТЬ»
    <<?>>ВЫБРАТЬ
    Reply
  4. Alex1Cnic

    (3) Уточните вашу версию платформы и конфигурацию

    Reply
  5. bobster123456

    Конфигурация своя, платформа 8.3.8.2088. Суть не в том, там так написано, мне почему-то кажется, что это и не может работать:

     Запрос = Новый Запрос;
    //Запрос.Текст =
    //»ВЫБРАТЬ
    //| об1.Ссылка
    //|ИЗ
    //| Справочник.Банки КАК об1
    //|ГДЕ
    //| об1.ПометкаУдаления = ИСТИНА
    //| «;
    
    Для каждого Метад из НовыйМа Цикл
    сч = 2 ;
    Запрос.Текст=Запрос.Текст+
    //»ОБЪЕДИНИТЬ ВСЕ
    »
    |
    |ВЫБРАТЬ
    | об»+сч+».Ссылка
    |ИЗ
    | » +Метад + »  КАК об»+сч+»
    |ГДЕ
    | об»+сч+».ПометкаУдаления = ИСТИНА «;
    сч=сч+1;
    КонецЦикла;
    Выборка =  Запрос.Выполнить().Выбрать();
    ЭлементыОтбора = Новый Массив();
    Пока Выборка.Следующий() Цикл
    ЭлементыОтбора.Добавить(Выборка[«Ссылка»]);
    КонецЦикла;

    Показать

    Reply
  6. ZUL_MTFKA

    Вот так заработает.

    А вообще — код не рабочий, форма кривая. Не круто такое выкладывать.

    Процедура ОсновныеДействияФормыОК(Элемент)
    ТекОтбор = ВладелецФормы.ЭлементыФормы.УдаляемыеОбъекты.ОтборСтрок.Метаданные;
    ТекОтбор.ВидСравнения = ВидСравнения.ВСписке;
    ТекОтбор.Значение.Очистить();
    НовыйМа = Новый Массив;
    Для каждого РодительскаяСтрока Из ДеревоОтбора.Строки Цикл
    Для каждого ДочерняяСтрока Из РодительскаяСтрока.Строки Цикл
    Если ДочерняяСтрока.Отбирать = 1 Тогда
    Метадан = ТекОтбор.Значение.Добавить(РодительскаяСтрока.Объект+».»+ДочерняяСтрока.Объект);
    НовыйМа.Добавить(РодительскаяСтрока.Объект+».»+ДочерняяСтрока.Объект);
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    ТекОтбор.Использование = Истина;
    ЭлементыОтбора = Новый Массив();
    Для каждого Метад из НовыйМа Цикл
    Запрос = Новый Запрос;
    сч = 2 ;
    Запрос.Текст=Запрос.Текст+
    »
    |
    |ВЫБРАТЬ
    | об»+сч+».Ссылка
    |ИЗ
    | » +Метад + »  КАК об»+сч+»
    |ГДЕ
    | об»+сч+».ПометкаУдаления = ИСТИНА «;
    сч=сч+1;
    Выборка =  Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
    ЭлементыОтбора.Добавить(Выборка[«Ссылка»]);
    КонецЦикла;
    КонецЦикла;
    
    Закрыть();
    КонецПроцедуры
    
    

    Показать

    Reply
  7. 02RUSlan

    А если помеченный на удаление документ имеет движения в регистрах, то обработка почистит эти движения?

    Reply
  8. Alex1Cnic

    (7) если помеченный на удаление документ имеет движения в регистрах, то обработка НЕ почистит эти движения,

    потому что будет выполняться контроль ссылочности.

    С другой стороны почему у помеченного на удаление документа имеются движения????

    Во всех типовых конфигурациях при пометке удаления все движения очищаются.

    Reply
  9. doctorov_s

    Не работает(((

    Reply

Leave a Comment

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