Обработка удаления проводок в регистре бухгалтерии по всем организациям кроме выбранной без перепроведения документов.
Стояла задача удаления всех проводок документов, кроме проводок выбранной организации. Она встала после переноса данных по одной организации в новую базу через стандартную обработку «ВыгрузкаЗагрузкаДанныхXML»
Делалась в основном из-за Документа «Корректировки записей регистра» , так как в нем могли содержаться данные по нескольким организациям, включая нужную.
///Удаление из РегистрБухгалтерии.Налоговый
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| Налоговый.Регистратор
|ИЗ
| РегистрБухгалтерии.Налоговый КАК Налоговый
|ГДЕ
| Налоговый.Организация <> &Организация
|
|УПОРЯДОЧИТЬ ПО
| Налоговый.Регистратор.Дата";
Запрос.УстановитьПараметр("Организация",Организация);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НаборЗаписей = РегистрыБухгалтерии.Налоговый.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
НаборЗаписей.Прочитать();
НомераСтрок = Новый СписокЗначений;
Для каждого Запись из НаборЗаписей Цикл
Если Запись.Организация <> Организация Тогда
НомераСтрок.Добавить(Запись.НомерСтроки-1);
КонецЕсли;
КонецЦикла;
НомераСтрок.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
Для каждого Ном из НомераСтрок Цикл
НаборЗаписей.Удалить(Ном.Значение);
КонецЦикла;
НаборЗаписей.Записать();
НомераСтрок.Очистить();
КонецЦикла;
///Удаление из РегистрБухгалтерии.Хозрасчетный
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| Хозрасчетный.Регистратор
|ИЗ
| РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
|ГДЕ
| Хозрасчетный.Организация <> &Организация
|
|УПОРЯДОЧИТЬ ПО
| Хозрасчетный.Регистратор.Дата";
Запрос.УстановитьПараметр("Организация",Организация);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
НаборЗаписей.Прочитать();
НомераСтрок = Новый СписокЗначений;
Для каждого Запись из НаборЗаписей Цикл
Если Запись.Организация <> Организация Тогда
НомераСтрок.Добавить(Запись.НомерСтроки-1);
КонецЕсли;
КонецЦикла;
НомераСтрок.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
Для каждого Ном из НомераСтрок Цикл
НаборЗаписей.Удалить(Ном.Значение);
КонецЦикла;
НаборЗаписей.Записать();
НомераСтрок.Очистить();
КонецЦикла;
Способ работает, удаление 6 лет длится 3 часа на SQL. 320 тысяч проводок