Хранение файлов томов БСП в хранилище с 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    9157    78    4    

110

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

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

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

25.03.2024    1229    bayselonarrend    3    

37

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

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

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

05.03.2024    1878    user1989937    6    

15

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

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

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

05.02.2024    3792    bayselonarrend    15    

61

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

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

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

22.01.2024    7852    bayselonarrend    50    

86

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

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

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

17.01.2024    2791    kamisov    17    

57

Отдай корень! Библиотека OneScript для получения информации о захваченных объектах в хранилище

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

Хранилище конфигурации 1С - это инструмент групповой разработки. Работают с хранилищем следующим образом: захватывают какой-либо объект, редактируют, потом отдают его в хранилище. Хранилище помечает уже захваченные объекты и не дает возможности захватить их другим пользователям. Это рождает и самый большой недостаток хранилища - невозможность работы с одним объектом нескольких пользователей, например в случае доработки разных методов в одном большом модуле. Корень конфигурации - это самый верхний ее узел. Только захватив корень, мы можем добавить в конфигурацию новые общие модули, документы, справочники, регистры и подобное. Только захватив корень можно изменить настройки поддержки конфигурации. Соответственно, если корень захвачен одним программистом, другой программист не может добавить новые объекты или снять что-то с поддержки. Потому то и всплывает эта фраза - отдай корень, мне нужно тоже что-то добавить.

26.12.2023    1350    ardn    1    

26

Git Code Review - инструмент для рецензирования кода

Групповая разработка (Git, хранилище) Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Абонемент ($m)

Git Code Review - инструмент, позволяющий быстро анализировать изменения из git-репозитория прямо в 1С

1 стартмани

20.12.2023    3964    59    salexdv    26    

81
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. davdykin 25 11.08.20 09:30 Сейчас в теме
Мне кажется вы в публикации упустили самый главный вопрос - вопрос производительности... насколько по времени будет отличаться сетевая папка и это хранилище при загрузке/выгрузки 10-20 файлов, хотя бы примерно? Просто без этой информации, как мне кажется, понять полезная эта штука или нет - невозможно.
2. malikov_pro 1292 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 1292 14.08.20 10:24 Сейчас в теме
(3) "И сразу же продумываем что делать если вдруг интернет отвалится" - Это вопрос системного администрирования, сделайте резервный канал. "Если вы из категории последних" - опыта системного администрирования хватает. Если нужно хранить данные локально то разверните FTP, OpenStack локально и пользуйтесь.


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

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

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

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

Программист как пожарник - чем меньше он нужен окружающим, значит тем лучше работает (в подавляющем большинстве случаев). Хотя с другой стороны - весь в мыле спас ситуацию и все его хвалят (хотя, возможно, ранее именно этот программист элементарно не поставил три строки ПОПЫТКА-ИСКЛЮЧЕНИЕ-КОНЕЦПОПЫТКИ).
6. malikov_pro 1292 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 1292 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 1292 18.09.20 20:53 Сейчас в теме
(9) Разработка является прототипом, вы "тыкаете" на требования предъявляемые к решению используемому в продакте. Если нужно решение для конечного использования - заказываете за деньги.
В моих планах было обкатать у клиента прототип и дополнить публикацию, проект не состоялся.
Оставьте свое сообщение