1С: Сжимаем прикрепленные файлы

Задача: есть некий справочник, к которому прикрепляются файлы. Физически они конечно хранятся в томах, но всё равно занимают места очень порядочно. Необходимо собственно каждый файлик положить в архив, заново «перекрепить» его к элементам справочника. Оригинал соответственно удалить.

Решение:

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1000
		|	Файлы.ВладелецФайла КАК ВладелецФайла,
		|	Файлы.Ссылка КАК Ссылка,
		|	Файлы.ПолноеНаименование КАК ПолноеНаименование,
		|	Файлы.ТекущаяВерсияПутьКФайлу КАК ПутьКФайлу,
		|	Файлы.ТекущаяВерсияТом.ПолныйПутьWindows КАК ПолныйПуть,
		|	Файлы.ДатаСоздания КАК ДатаСоздания
		|ИЗ
		|	Справочник.Файлы КАК Файлы
		|ГДЕ
		|	Файлы.ВладелецФайла ССЫЛКА Справочник.СК_ГосуслугиЛК_ВходящиеСообщения
		|	И Файлы.ПометкаУдаления = ЛОЖЬ
		|	И НЕ Файлы.ТекущаяВерсияПутьКФайлу ПОДОБНО ""%zip%""
		|	И Файлы.ДатаСоздания МЕЖДУ &ДатаС И &ДатаПо
		|
		|УПОРЯДОЧИТЬ ПО
		|	ДатаСоздания";	
	Запрос.УстановитьПараметр("ДатаС", объект.ДатаС);	
	Запрос.УстановитьПараметр("ДатаПо", объект.ДатаПо);	
	РезультатЗапроса = Запрос.Выполнить();	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		если СтрНайти(ВыборкаДетальныеЗаписи.ПутьКФайлу,".zip")=0 тогда
			НовыйАрхив = Новый ЗаписьZipФайла(
			        ВыборкаДетальныеЗаписи.ПолныйПуть+"tmp.zip",
			        "","",МетодСжатияZIP.Сжатие,УровеньСжатияZIP.Максимальный,МетодШифрованияZIP.Zip20					
			);			
			НовыйАрхив.Добавить(ВыборкаДетальныеЗаписи.ПолныйПуть+ВыборкаДетальныеЗаписи.ПутьКФайлу);
			НовыйАрхив.Записать();            
			//возврат 0;
			ДвоичныеДанные = Новый ДвоичныеДанные(ВыборкаДетальныеЗаписи.ПолныйПуть+"tmp.zip"); 
			АдресФайлаВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
			РаботаСФайламиВызовСервера.СоздатьФайлСВерсией(
				ВыборкаДетальныеЗаписи.ВладелецФайла,
				ВыборкаДетальныеЗаписи.ПолноеНаименование+".zip",
				"zip",
				ТекущаяДата(),
				ТекущаяДата(),
				,
				АдресФайлаВХранилище,АдресФайлаВХранилище,
				Ложь,
				,
				,
				Истина
			);						
			об=ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
			об.ПометкаУдаления=Истина;
			об.Записать();
			об.Удалить();					
			УдалитьФайлы(ВыборкаДетальныеЗаписи.ПолныйПуть+ВыборкаДетальныеЗаписи.ПутьКФайлу);						
		конецесли;		
	КонецЦикла;

Т.е. что тут делаем: выбираем элемент справочника с прикрепленным файлом, сжимаем его в архив zip, прикрепляем его и удаляем оригинал.