Имя: Пароль:
1C
 
удалить записи из РС
0 Dimarik_1
 
05.12.16
19:49
Процедура УдалитьДатуЗапрета(Организация) Экспорт
    
    
    
    МассивОрганизации = Новый Массив;
    Если Организация = Справочники.Организации.ПустаяСсылка() Тогда

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

Смущает код в цикле. Запись в РС в цикле. Можно ли как-то более оптимально сделать очистку в одной транзакции?
1 Cool_Profi
 
05.12.16
20:08
у тебя 100500 организаций?
2 Лефмихалыч
 
05.12.16
20:30
выбрать запросом весь регистр ДатыЗапретаИзменения, кроме тех записей, в которых организация <> ПустаяСсылка, и то, что получилось

Набор.Загрузить(Запрос.Выполнить().Выгрузить());
Набор.Записать();//без отборов
3 John83
 
07.12.16
15:13
как раз отбор по измерениям сделает удаление быстрее, чем все и сразу