Хранение файлов томов БСП в хранилище с OpenStack API

25.10.20

Разработка - Групповая разработка (Git, хранилище)

В статье опишу вариант реализации хранения файлов в томах с использованием хранилища OpenStack API на примере облачного хранилища Selectel.

Скачать исходный код

Наименование Файл Версия Размер
ВнешнееХранениеФайлов
.cfe 26,12Kb
8
.cfe 26,12Kb 8 Скачать

Вводные

  • Конфигурация 1С на БСП 3.1.2
  • Нужно хранить файлы во внешнем хранилище (не в сетевой папке)

 

Вариант реализации

Для хранения можно использовать

Выбрал OpenStack в реализации selectel.ru (ссылка на документацию), уже есть хранилище и опыт работы с сервисом, относительно простая аутентификация. Технически можно написать корректоры к остальным вариантам.

 

Реализовал в виде расширения.

Добавил перечисление "внеш_хф_ТипыХранилищ"

В спр. ТомаХраненияФайлов

  • добавил реквизит внеш_хф_ТипХранилища (внеш_хф_ТипыХранилищ)
  • добавил реквизиты аутентификации в сервисе selectel
  • доработал форму элемента для ввода данных аутентификации

Основная работа с файлами томов реализована в "РаботаСФайламиВТомахСлужебный", в нем изменил

  • ДобавитьФайл()
  • ДанныеФайла()
  • ОбновитьФайл()
  • УдалитьДанныеФайла()
  • СкопироватьФайл()
  • ПереименоватьФайл()
  • Сделал рефакторинг для переиспользования кода

Реализация БСП подразумевает работу сервера с сетевыми папками томов без ограничений, поэтому часть функционала упрощено, для примера процедура УдалитьФайл(ПутьКФайлу), без указания тома, это усложняет доработку. При операциях копирования/перемещения нет проверки на наличие файла с именем файла назначения.

Функции обращения к сервису вынес в общий модуль "внеш_хф_SelectelSwiftAPI"

 

Протестировал

  • Добавление файла
  • Чтение добавленного файла
  • Изменение файла
  • Переименование файла

Ссылка на исходный код.

Разработка в состоянии "alpha", предложения и замечания рассматриваю, по возможности оперативно решаю.

 

Итог

Файлы в томах можно хранить во внешнем хранилище, за счет этого решается

  • вопрос хранения вне базы при отсутствии сетевой папки (облачные сервисы)
  • вопрос переноса файлов между узлами РИБ

 

Благодарю за внимание.

См. также

Системы контроля версий для 1С-разработчиков.

1С-программирование DevOps и автоматизация разработки Групповая разработка (Git, хранилище) DevOps для 1С Платформа 1С v8.3 Платные (руб)

Основы командной разработки на 1С. Использование систем контроля версий при разработке на платформе 1С:Предприятие 8

4900 руб.

29.06.2022    9387    78    4    

112

Обновляемый список последних статей Инфостарт для профиля Github

Групповая разработка (Git, хранилище) Бесплатно (free)

Не знаете, чем бы таким заполнить свой профиль Github? Заполните его своими статьями на Инфостарт! Этот простой workflow сам соберет список ваших последних статей и будет периодически обновлять его для актуализации данных.

08.04.2024    918    bayselonarrend    2    

31

Процесс разработки с использованием GIT и расширений для 1С:ERP. Без EDT

Групповая разработка (Git, хранилище) Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Доработки 1С:ERP на крупных проектах можно организовать, не внося изменения в саму типовую конфигурацию, а используя только расширения и отдельные «микроконфигурации». Расскажем о том, как это сделать без EDT, используя процесс разработки GitHub Flow.

02.04.2024    4572    Begemoth80    24    

45

Особенности национального Workflow: Github Actions и OneScript

Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Сегодня мы посмотрим на Github Actions - встроенный инструментарий Github для автоматизации рабочих процессов. Разберем, что это такое, зачем и причем тут OneScript.

25.03.2024    1568    bayselonarrend    3    

38

Автоматизация процесса разработки с помощью сервиса GitFlic

Групповая разработка (Git, хранилище) Бесплатно (free)

GitFlic – первая в России полностью самостоятельная реализация сервиса для хранения репозиториев с исходным кодом. За три года разработки сервис GitFlic стал полноценным инструментом, которым можно заменить GitLab, GitHub и BitBucket. Расскажем о том, как выстроить в GitFlic процесс автоматического тестирования, статического анализа кода и сборки приложений.

05.03.2024    2080    user1989937    6    

16

OpenYellow - рейтинг открытых GitHub репозиториев для платформы 1С:Предприятие

Групповая разработка (Git, хранилище) Бесплатно (free)

Обновляемый топ GitHub репозиториев для 1С по всем языкам программирования и еще немного рассуждений про open-source.

05.02.2024    4013    bayselonarrend    15    

63

Насколько глубок 1С-ный GitHub?

Групповая разработка (Git, хранилище) Бесплатно (free)

Open-source проекты - важная часть мира программного обеспечения. 1С привычно держится немного в стороне от глобальных трендов, но бросить холодный статистический взгляд на положение дел мне показалось небезынтересным.

22.01.2024    8056    bayselonarrend    50    

87

TCP прокси-сервер хранилища конфигурации 1С

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Платформа 1С v8.3 Бесплатно (free)

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    3007    kamisov    17    

60
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. davdykin 25 11.08.20 09:30 Сейчас в теме
Мне кажется вы в публикации упустили самый главный вопрос - вопрос производительности... насколько по времени будет отличаться сетевая папка и это хранилище при загрузке/выгрузки 10-20 файлов, хотя бы примерно? Просто без этой информации, как мне кажется, понять полезная эта штука или нет - невозможно.
2. malikov_pro 1293 11.08.20 11:55 Сейчас в теме
(2) Отчасти Вы правы, если использовать внешние сервисы, то есть задержка до сервиса, тема разобрана в https://habr.com/ru/post/348542/, но хранилище можно развернуть и локально, пример.

Тема по поводу производительности локальных сервисов разбиралась в комментариях к моей статье https://infostart.ru/public/68079/.

Эта статья больше как посыл что можно доработать механизм БСП, доделать условие и обращение к FTP просто, к S3 чуть сложнее из за аутентификации.
3. kosmo0 108 14.08.20 04:18 Сейчас в теме
И сразу же продумываем что делать если вдруг интернет отвалится. Для начала - сможет ли конфигурация в принципе работать?

Элементарно узнаем сколько денег потеряет бизнес если вдруг будет отключение.

А вариантов прекращения работы уйма - неполадки у провайдера, неполадки на линии связи (банальные поломки, штормовой ветер и дождь в городе при котором что-то заливает, а кабеля рвет, экскаваторщик который начал копать не там), отключение интернета на уровне страны и города (из свежего - Минск, из глобального - противостояние с США), действия не затрагивающие напрямую вашу организацию (война с телеграмом при которой отключалось масса непричастных ресурсов), да и тупо маршрутизатор в конторе сдох.
Это как с архивированием данных - бэкапы обязательно делают те, кто терял данные (ибо знает сколько жизни отнимается при восстановлении). А есть счастливчики которые не теряли данные. Если вы из категории последних - то можно и не засорять голову чем попало. :)
4. malikov_pro 1293 14.08.20 10:24 Сейчас в теме
(3) "И сразу же продумываем что делать если вдруг интернет отвалится" - Это вопрос системного администрирования, сделайте резервный канал. "Если вы из категории последних" - опыта системного администрирования хватает. Если нужно хранить данные локально то разверните FTP, OpenStack локально и пользуйтесь.


Реальный кейс: база с 20к картинок (чертежи) хостится на Рарус-облаке, размер картинок более 2 ГБ. У раруса на тарифе стандарт размер диска 2ГБ и увеличить объем невозможно, хранить относительно рядом (датацентры МСК СПБ) вполне нормально.
5. kosmo0 108 20.08.20 11:17 Сейчас в теме
(4) Опыт это знание сотен граблей которые могут вылезти в самый неподходящий момент.
В теории проведение документа это пара десятков строк в которых данные переносятся в регистры, на практике - это еще сотня строк на проверку корректность и полноту данных перед проведением.

Резервный канал спасет от проблем на облаке на котором вы храните картинки? (а проблемы возникают у всех, даже у интернет-гигантов).

И как-то не последовало ответа - будет ли работать конфигурация если вдруг доступа к картинкам в облаке не будет? Или пользователей будет элементарно вышибать при открытии справочника Номенклатура? (а в худшем случае будет вышибать при открытии любого документа в котором есть реквизиты с типом справочник.номенклатура).

Хорошо если в вашей организации остановка работы на пару часов возможна без больших потерь, а вот, например, для торговли такое недопустимо.

Программист как пожарник - чем меньше он нужен окружающим, значит тем лучше работает (в подавляющем большинстве случаев). Хотя с другой стороны - весь в мыле спас ситуацию и все его хвалят (хотя, возможно, ранее именно этот программист элементарно не поставил три строки ПОПЫТКА-ИСКЛЮЧЕНИЕ-КОНЕЦПОПЫТКИ).
6. malikov_pro 1293 20.08.20 13:10 Сейчас в теме
(5)
Если вопрос резервного копирования, то описал решение через rclone https://infostart.ru/1c/articles/1183106/
Если вопрос доступности, то в текущей модели хранения нет хранений копий в разных местах в рамках одного хранилища. При реализации возникает вопрос о консистентности данных и приоритетности получения. Сейчас реализую работу с GDrive, будет выступать как доп хранилище для формирования документов DOC по шаблонам, в локальном будет хранится PDF. В планах написать реализацию к FTP и решать вопрос переноса файлов между хранилищами, дублирования и.т.д.


"будет ли работать конфигурация если вдруг доступа к картинкам в облаке не будет?" - да, исключения по отсутствию файла реализованы в БСП еще с 2.4 на сколько помню. Для проверки попробуйте отключить сетевую папку.
Продолжение к вопросу о доступности, по идее нужно разделять хранение на горячее и холодное, файлы которые часто используются добавлять в кеш (в текущей реализации РС "ДвоичныеДанныеФайлов"), малоиспользуемые удалять из кеша.

"Программист как пожарник" - нужно понимать что есть психологическая модель "геройства", а есть продуманная архитектура приложения.

Если есть идеи по реализации - пишите, продумаем совместно, возможно дойдет до реализации. Вариант использовать issue и PR на GitHub.
7. kosmo0 108 31.08.20 16:56 Сейчас в теме
(6) У меня нет желания ткнуть в код пальцем и крикнуть типа - "вот дурак". Иногда бывают ситуации когда проще потратить 5 минут чтобы ПОТОМ не тратить несколько часов (или даже дней) на устранение проблем. Если вдруг я буду реализовывать нечто подобное, то я предусмотрю защиту от ситуации "пропажи" связи с местом хранения. Как это реализовано у вас или других программистов мне в принципе все равно (не я буду, в случае чего, разгребать).

Есть такое понятие - "цена ошибки". То есть каковы будут потери (в том числе денежные) от ошибки. И при одной и той же ошибке в одной организации понесут тысячи или миллионы рублей ущерба, а в другой организации не заметят - это не работает, ладно займусь другим.

Если в вашей организации цена ошибки не существенна - ну и хорошо. Но, вполне возможно, вашу разработку захотят использовать в организации где цена ошибки будет дорого стоить. Пусть эти программисты хотя бы держат в голове ситуацию "отсутствие связи с хранилищем".

зы. не думайте что в жизни все предсказуемо - раньше ковида с сидением по домам пару месяцев тоже не было.
8. malikov_pro 1293 31.08.20 17:36 Сейчас в теме
(7) В статье написано "Разработка в состоянии "alpha", по делу напишите, как видите безопасное хранение. Из трех абзацев "нытье" про потенциальные потери. Выше писал что решение подбирается под ситуацию и решается комплексно, 1С является только клиентом к системе хранения.

Если есть кейс для обдумывания варианта решения - пишите, разберем. Если знаете как организовать хранилище опишите или напишите ссылку на статью с нормальной организацией хранения. Можете добавить по делу в код - PR в GitHub.

Статью про rclone написал после решения вопроса с бекапами у клиента, до этого теневые копии windows использовались. Статья про nginx сформировалась после решения вопроса с публикацией телефонии.

"вполне возможно, вашу разработку захотят использовать в организации где цена ошибки будет дорого стоить" - бездумное копирование кода проблема копирующего, поставляется AS IS.
9. kosmo0 108 18.09.20 17:39 Сейчас в теме
(8) Человека несколько постов тыкают в потенциальную серьезную проблему - нет, это нытье. У нас это не случалось, поэтому проблема надумана. (корновируса нет, его придумали - потому что я не болел).

зы. Понял свою глобальную ошибку.
Можно писать код учитывая полученные ошибки в прошлом (опыт называется). Но это гораздо дольше и чуточку сложнее. А можно просто написать код решающий проблему (без проверок) - и быстро и заказчику проблему решил (он и доволен). А потом, при наличии, исправлять ошибки и внезапно проявившиеся (прошу отличать от слова появившиеся) условия функционирования (а может так повезет что ошибок и особенностей функционирования не будет). Второй подход замечателен при программировании простых и относительно средних по сложности разработках. При критичных разработках - гнать в шею, ибо получается говнокод с кучей костылей (потому как на первоначальный код прикручивается масса добавлений, которые плохо стыкуются друг с другом). Но в 1С, в принципе, сойдет - не для космических же кораблей программируют.

за сим прощаюсь - можно завести лошадь в реку по шею, но невозможно заставить ее пить.
10. malikov_pro 1293 18.09.20 20:53 Сейчас в теме
(9) Разработка является прототипом, вы "тыкаете" на требования предъявляемые к решению используемому в продакте. Если нужно решение для конечного использования - заказываете за деньги.
В моих планах было обкатать у клиента прототип и дополнить публикацию, проект не состоялся.
Оставьте свое сообщение