Вводные
- Конфигурация 1С на БСП 3.1.2
- Нужно хранить файлы во внешнем хранилище (не в сетевой папке)
Вариант реализации
Для хранения можно использовать
- FTP
- Хранилища с поддержкой OpenStack (https://www.openstack.org/)
- Хранилища с поддержкой S3 (https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html)
Выбрал OpenStack в реализации selectel.ru (ссылка на документацию), уже есть хранилище и опыт работы с сервисом, относительно простая аутентификация. Технически можно написать корректоры к остальным вариантам.
Реализовал в виде расширения.
Добавил перечисление "внеш_хф_ТипыХранилищ"
В спр. ТомаХраненияФайлов
- добавил реквизит внеш_хф_ТипХранилища (внеш_хф_ТипыХранилищ)
- добавил реквизиты аутентификации в сервисе selectel
- доработал форму элемента для ввода данных аутентификации
Основная работа с файлами томов реализована в "РаботаСФайламиВТомахСлужебный", в нем изменил
- ДобавитьФайл()
- ДанныеФайла()
- ОбновитьФайл()
- УдалитьДанныеФайла()
- СкопироватьФайл()
- ПереименоватьФайл()
- Сделал рефакторинг для переиспользования кода
Реализация БСП подразумевает работу сервера с сетевыми папками томов без ограничений, поэтому часть функционала упрощено, для примера процедура УдалитьФайл(ПутьКФайлу), без указания тома, это усложняет доработку. При операциях копирования/перемещения нет проверки на наличие файла с именем файла назначения.
Функции обращения к сервису вынес в общий модуль "внеш_хф_SelectelSwiftAPI"
Протестировал
- Добавление файла
- Чтение добавленного файла
- Изменение файла
- Переименование файла
Разработка в состоянии "alpha", предложения и замечания рассматриваю, по возможности оперативно решаю.
Итог
Файлы в томах можно хранить во внешнем хранилище, за счет этого решается
- вопрос хранения вне базы при отсутствии сетевой папки (облачные сервисы)
- вопрос переноса файлов между узлами РИБ
Благодарю за внимание.