Добрый день!
Столкнулся с такой проблемой как "Превышен максимальный размер файла 1сv8.1cd", размер файла на данный момент 39 201 968 КВ, проблема возникла в процессе удаления документов.
Конфигурация не типовая, удаляется больше 8 миллионов документов, удаляю их обработкой с таким кодом
// Удаляем справочники
Для ид=0 По СписокСпр.Количество()-1 Цикл
Если СписокСпр.Получить(ид).Пометка = Истина Тогда
Спр = Справочники[СписокСпр.Получить(ид).Значение.Имя].Выбрать();
Пока Спр.Следующий() Цикл
Объект = Спр.ПолучитьОбъект();
Объект.Удалить();
Сообщить(Спр);
КонецЦикла;
КонецЕсли;
КонецЦикла;
//Удаляем документы
Для ид=0 По СписокДок.Количество()-1 Цикл
Если СписокДок.Получить(ид).Пометка = Истина Тогда
Док = Документы[СписокДок.Получить(ид).Значение.Имя].Выбрать();
Пока Док.Следующий() Цикл
Объект = Док.ПолучитьОбъект();
Дата = Док.Дата;
Если Дата>НачалоДня(ДатаС) тогда
Если Дата<КонецДня(ДатаПо) тогда
Сообщить(Док);
Объект.Удалить();
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
//Удаляем регистр сведений
Для ид=0 По СписокРег.Количество()-1 Цикл
Если СписокРег.Получить(ид).Пометка = Истина Тогда
Рег = РегистрыСведений[СписокРег.Получить(ид).Значение.Имя].СоздатьНаборЗаписей();
Рег.Записать();
КонецЕсли;
КонецЦикла;
Попробуйте через конфигуратор уплотнить базу, может уменьшиться размер. На диске необходимо наличие свободного места. Возможно придется сделать за несколько этапов. Почистить, например, справочники, упаковать базу. Потом регистры, документы (возможно не все сразу, а по частям). Может не надо удалять сразу все, а частями по интервалу дат с последующей упаковкой...
Мне кажется что так делать нехорошо - выборка может нарушиться в процессе удаления.
Имхо, лучше было бы сначала запросом получить ссылки, а потом уже обрабатывать его результат.
А что замер производительности показывает?
Объект = Док.ПолучитьОбъект();
Насколько я помню, это длительная операция. Лучше сначала проверить условия даты а потом уже получать объект.
Вот есть у меня такой кусок кода.
ТекстЗапроса = "";
Запрос = Новый Запрос;
Запрос.Параметры.Вставить("ДатаНач", НачалоПериода);
Запрос.Параметры.Вставить("ДатаКон", КонецПериода);
Для каждого Строка Из ВидыДокументов Цикл
Если Строка.Пометка Тогда
ТекстЗапроса = ТекстЗапроса + "
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ Ссылка ИЗ Документ." + Строка.ВидДокумента + " ГДЕ Дата > &ДатаНач И Дата < &ДатаКон";
КонецЕсли;
КонецЦикла;
Найдено = Найти(ТекстЗапроса, "Ссылка");
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ " + Сред(ТекстЗапроса, Найдено);
Запрос.Текст = ТекстЗапроса;
ТабличнаяЧастьСсылки.Загрузить(Запрос.Выполнить().Выгрузить());
Процедура ПриОткрытии()
ВидыДокументов.Очистить();
Для каждого Док Из Метаданные.Документы Цикл
НоваяСтрока = ВидыДокументов.Добавить();
НоваяСтрока.ВидДокумента = Док.Имя;
КонецЦикла;
КонецПроцедуры
1. Если база растет при удалении объектов, то, скорее всего, включено версионирование объектов или какое-то логирование их судьбы.
2. Отключите на время чистки(только потом включить не забудьте) подписки на события, которые могут срабатывать.
3. Уберите нафиг "Сообщить()" или перестаньте жаловаться на "тормоза".
4. Удалите вначале документы. Нафига нарываться на ситуацию с туевой кучей битых ссылок?
Документы каждого вида нужно удалять за период?
Если бы полностью, можно было бы попробовать удалять их на уровне объектов конфигурации, а потом снова сделать объединение с заранее сохраненной конфигурацией.
Я когда-то давно-давно так семерочные базы "свертывал"
В приведенном фрагменте кода вначале чистятся какие-то справочники.
А в ПланахОбмена ничего не регистрируется?
// Вставить содержимое обработчика.
Для Каждого Объект из Метаданные.Справочники Цикл
СписокСпр.Добавить(Объект, Объект.Представление(),Ложь);
КонецЦикла;
Для Каждого Объект из Метаданные.Документы Цикл
СписокДок.Добавить(Объект, Объект.Представление(),Ложь);
КонецЦикла;
Для Каждого Объект из Метаданные.РегистрыСведений Цикл
СписокРег.Добавить(Объект, Объект.Представление(),Ложь);
КонецЦикла;
!!! Есть программы которые показывают размер таблиц в базе.
Сообщить();
и база перестала "толстеть", за 12 часов удалилось порядком 50 % документов.Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua