После года работы с конфигурацией было принято политическое решение перенести накопленные гигабайты внутрь БД. Поиском нашлись лишь стандартные входящие в поставку Документооборота обработки ПереносФайловВТома_ХХХ.epf.
По фразе "смена способа хранения файлов" ничего ценного найдено не было. При простом переключении в настройках варианта хранения переноса файлов из одного места в другое не происходит. Пришлось писать свою обработку.
К счастью в Документообороте хранение организовано просто без заморочек. Задействованы лишь несколько объектов: справочник ВерсииФайлов, регистр сведений ХранимыеФайлыВерсий и перечисление ТипыХраненияФайлов.
Суть переноса: копирование содержимого файла и запись в хранилище значения в регистре с заменой нескольких реквизитов в справочнике. Ниже код для переноса под Windows.
// идем по все элементам справочника ВерсииФайлов
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ
| ВерсииФайлов.Ссылка,
| ВерсииФайлов.ПутьКФайлу,
| ВерсииФайлов.Размер,
| ВерсииФайлов.Том.ПолныйПутьWindows Как ПолныйПутьWindows
|ИЗ
| Справочник.ВерсииФайлов КАК ВерсииФайлов
|УПОРЯДОЧИТЬ ПО
| ВерсииФайлов.ДатаСоздания"; РезультатЗапроса = Запрос.Выполнить(); ВДЗ = РезультатЗапроса.Выбрать(); Пока ВДЗ.Следующий() Цикл Если ВДЗ.ПутьКФайлу="" Тогда
Продолжить;
КонецЕсли; ПолныйПуть = ВДЗ.ПолныйПутьWindows+ВДЗ.ПутьКФайлу; Попытка
Файл = Новый ДвоичныеДанные(ПолныйПуть); ХЗ = Новый ХранилищеЗначения(Файл); Исключение
Сообщить(ВДЗ.ПутьКФайлу + " считывание и помещение в ХЗ породило ошибку: "+ОписаниеОшибки()); Продолжить; КонецПопытки; // обновим запись РС
Попытка
МенеджерЗаписи = РегистрыСведений.ХранимыеФайлыВерсий.СоздатьМенеджерЗаписи(); МенеджерЗаписи.ВерсияФайла = ВДЗ.Ссылка; МенеджерЗаписи.ХранимыйФайл = ХЗ; МенеджерЗаписи.Записать(Истина); Исключение
Сообщить(ВДЗ.Ссылка + " попытка записи в РС не удалась: "+ОписаниеОшибки()); Продолжить; КонецПопытки; // обновили Об = ВДЗ.Ссылка.ПолучитьОбъект(); Об.ПутьКФайлу = ""; Об.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе; Об.Том = Справочники.ТомаХраненияФайлов.ПустаяСсылка(); Об.Записать(); КонецЦикла;
Перед выполнением обработки нужно в настройках документооборота убрать галку "Хранить файлы в томах на диске" (Настройки программы - Файлы).
На время выполнения обработки на всякий случай запретил сеансы и регламентные задания, выгнал всех из базы. Объем 2.2Гб переносился около 15 минут. Из 3500+ файлов не перенеслось три (физически отсутствовали файлы на диске по неизвестной пока причине). Но на целостность и работоспособность Документооборота они не влияют.
После успешного переноса файловое хранилище больше не потребуется, можно снести или убрать в архив.
p.s. В приложении готовая обработка по описанному алгоритму, сдобренная кнопочками и рюшечками.