Решение проблемы, при удалении очень большого количества документов. (250 000) штук!
Когда SQl «выжрал» всю память и свободное место на диске?
Иногда возникает ситуация, когда нужно удалить большое количество документов (например, 250 000!).
И как вы не стараетесь, сервер SQL «съедает»
сперва всю оперативную память, а затем и все место на диске (например, диске С:).
Если у вас возникали подобные ситуации, то вот способ, который поможет вам с этой проблемой.
Решается запуском VBS скрипта.
Что он делает, создает подключение через COM к информационной базе, (клиент серверный вариант работы), запускает внешнюю обработку и вызывает экспортную процедуру.
При этом вам не надо запускать 1С – ку !
Обработка (модуль объекта):
Чтоб сделать экспортную процедуру код пишем в модуле объекта обработки.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Процедура run() Экспорт ДЛя НН = 1 По Метаданные.Документы.Количество() Цикл ИмяДок = Метаданные.Документы.Получить(НН-1).Имя; Запрос = НОвый Запрос; Запрос.Текст = "ВЫБРАТЬ |Док.Ссылка КАК Док_ |ИЗ Документ." + ИмяДок + " КАК Док"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ДокОБ = Выборка.Док_.ПолучитьОБъект(); ДокОБ.Удалить(); КонецЦикла; КонецЦикла; КонецПроцедуры |
————————————————————————————————-
VBS Скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 |
Set v82 = CreateObject("V82.Application") res = v82.Connect("Srvr = IPАДРЕСС;Ref=ИМЯБАЗЫ;Usr=ПОЛЬЗОВАТЕЛЬ;Pwd=ПАРОЛЬ") set obr = v82.ExternalDataProcessors.Create("d:\temp\del_doc.epf") obr.run() v82=null obr=null |
————————————————————————————————-
Во второй строке укажите свои параметры подключения к ИБ.
Если Вы хотите больше узнать о программировании в 1С, тогда регистрируйтесь на курс: 1С 8.3 Старт >>>