Взаимодействие 1С со сторонними продуктами посредством REST и Golang (middleware). Часть 4 - NoSQL (MongoDB, Redis)

18.06.21

Разработка - DevOps и автоматизация разработки

Если в ИТ-инфраструктуре есть NoSQL решения, с которыми требуется взаимодействовать из 1С, можем использовать прослойку на Golang в стиле RESTful

Предыдущие и будущие статьи:

В статье приведу пример взаимодействия (добавление, удаление, изменение) данных с несколькими популярными NoSQL решениями такими как MongoBD, Redis.

Предположим в некоторую области данных NoSQL (некая такая аморфная Таблица) мы добавляем данные о клиенте. (ID, Имя, Тип, Майл). Начнем реализацию этого взаимодействия.

Добавил вкладку в обработку, где размещена Таблица с данными о клиенте. Кнопкой выполняющей GET запрос мы будем получать данные из области NoSQL, кнопкой выполняющей POST запрос будем отправлять новые или измененные данные. Добавлен переключатель JSON/XML который позволяет кодировать данные как в формате JSON так и в формате XML

Расширил настройки, добавил адреса подключения к MongoDB и Redis, так же есть возможность выбирать режим с каким NoSQL решением взаимодействовать, еще есть "DemoRegim" при котором данные хранятся в памяти прослойки, сделано для тестирования

Также реализовал примитивный список данных в области NoSQL с возможностью добавлять, редактировать и удалять данные.

Для обмена с 1С реализованы обработчики api_json и api_xml

Получим данные из Redis

Получим данные из MongoDB

Предварительно переключив в настойках режим 

 

Тестирование выполнял на платформе 8.3.12.1790

Исходники 1С обработки и прослойки на GitHub https://github.com/dmitry-msk777/Connector_1C_Enterprise

 

Golang REST middleware RESTful NoSQL Redis MongoDB

См. также

Автотесты для типовых конфигураций ERP Управление предприятием 2 и Комплексная автоматизация 2 (для vanessa automation)

Тестирование QA DevOps и автоматизация разработки Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарии возможно использовать как для vanessa-automation, так и для СППР. Поддерживаемые версии конфигураций ERP2 и КА2: 2.5.15.111.

2220 руб.

04.07.2022    6937    26    1    

24

Автотесты для типовых конфигураций Бухгалтерия предприятия КОРП 3.0 и Бухгалтерия предприятия 3.0 (vanessa automation)

Тестирование QA DevOps и автоматизация разработки Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Бухгалтерия предприятие 3.0 и версии КОРП: 3.0.144.49.

1728 руб.

20.01.2022    6710    10    0    

9

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

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

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

4900 руб.

29.06.2022    9386    78    4    

112

Управление сборкой. Расширение для конфигурации СППР

DevOps и автоматизация разработки Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Подсистема «Управление сборкой GLI» предназначена для динамического формирования сборочных линий Gitlab и отслеживания процесса доработок систем на базе1С:Предприятия Позволяет упростить выпуск новых релизов системы, подготовить описание доработок системы. Интегрируется с GitLab API по событиям Push, Merge-request, Pipeline. Уведомляет пользователей о результатах сборки/тестирования сборочных конвейеров через СВ, либо при её недоступности или отсутствию по E-Mail. Поможет при отправке исправлений ошибок в общую базу тестирования, сформирует запросы на слияние в ветку версии только по протестированному и подтверждённому функционалу. Подсистема рассчитана исключительно на клиент - серверную архитектуру тестовых ИБ. Поддерживаемая версии СППР 2.0.4.15, платформа не ниже 8.3.17.1549, 2.0.7.3 / не ниже 8.3.21.1664, начиная с релиза 1.0.4.30 требуется платформа не ниже 8.3.23 рекомендуемый релиз 8.3.23.1997

7000 руб.

26.08.2022    10774    7    5    

30

Автоматическое подтверждение легальности обновления базы или как обновить 100 типовых баз 1С за 5 часов

DevOps и автоматизация разработки Обновление 1С Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Расширение для конфигураций 1С для автоматического подтверждения легальности обновления и выполнения обработчиков обновления при пакетном автоматическом обновлении большого числа баз 1С. А также сам модуль обработки по автоматическому обновлению баз.

2 стартмани

08.05.2019    24398    56    VPanin56    26    

27

1С, СППР и Архитектура как код

DevOps и автоматизация разработки Бесплатно (free)

Можно ли идеи подхода «Архитектура как код» положить на 1С или иную платформу, чтобы не изобретать ещё какой-то язык и сразу получить множество готовых библиотек функций и инструмент достижения главной цели подхода AaC.

01.02.2024    2736    roman72    9    

8

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

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

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

17.01.2024    3006    kamisov    17    

60

Infrastructure as code: кнопка «Сделать всё», или Упаковываем наше окружение в 5 кБ текста

DevOps и автоматизация разработки Бесплатно (free)

Когда под каждый проект нужно развернуть отдельный стенд разработки и сборочную линию для его обслуживания, велик риск влияния человеческого фактора. О том, как зафиксировать инженерный опыт в скриптах и унифицировать необходимые настройки для автоматизированного разворачивания инфраструктуры с помощью Terraform и Ansible, пойдет речь в статье.

01.11.2023    1390    Libelle    5    

14
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1293 21.09.20 14:16 Сейчас в теме
Настройки подключения в самом файле, имеет смысл вынести в отдельный .conf.json например.
Все функции так же свалены в один файл.
Нет документации API в формате OpenAPI, по идее автодок работает нормально, как и документация по функциям.
В общем идея написать быстрый шлюз норм с точкой подключения по HTTP норм.

Так же имеет смысл указать как запустить в качестве сервиса windows, уменьшить планку входа.
https://github.com/billgraziano/go-windows-svc

На сколько понимаю у mongo есть HTTP сервис https://docs.mongodb.com/realm/services/http/, почему его не использовать?

По предыдущей статье с ELK, пишется нормально и напрямую по HTTP.
2. dmitry-irk38 136 21.09.20 14:44 Сейчас в теме
(1)
По realm слышал про него, но предологал, что как и в RabbitMQ на нем стоят ограничения и он не рекомендуется к использованию.

ELK по HTTP, тоже вопрос с ограничениями + как я понимаю необходимо на стороне 1С подготовить некоторую структуру, которую сможет "переварить" ELK

Сохранение настроект в файл JSON есть, возможно не супер оптимально но есть.

OpenAPI описание, да можно добавить. Займусь когда будет время.

Запускать в сервиса windows, я предпологал разварачивать функционал в Docker, но гляну можно ли это перенести безболезненно в проект.

"Все функции так же свалены в один файл" - функции размещены в трех разных модулях, Вы имеете ввиду создать больше модулей под каждую интеграцию?
3. BillySwat 2 21.09.20 15:50 Сейчас в теме
Побольше бы таких статей! Спасибо Вам большое
5. dmitry-irk38 136 21.09.20 23:25 Сейчас в теме
(3) Рад, что статья оказалась для Вас полезной 😊
BillySwat; +1 Ответить
4. malikov_pro 1293 21.09.20 21:24 Сейчас в теме
(2) "на нем стоят ограничения и он не рекомендуется к использованию" - видимо из за ограничения по пропускной способности HTTP
"+ как я понимаю необходимо на стороне 1С подготовить некоторую структуру" - делается не сложно, примеры есть, сам писал выгрузку ошибок по подключению торгового оборудования.

"я предпологал разварачивать функционал в Docker," - не все умеют в докер, поэтому в своей статье про шаблонизатор использовал node c возможностью организовать сервис.


"функции размещены в трех разных модулях" - увидел в https://github.com/dmitry-msk777/Connector_1C_Enterprise/blob/master/connector/connect­or.go, и mongo и rabbit, от этого сделал вывод, go в процессе освоения.

По организации кода, имеет смысл выносить обработки в epf, а код go в /src/go.... и использовать precommit1c, для более удобного просмостра изменений по коду клиента 1С.
6. dmitry-irk38 136 21.09.20 23:27 Сейчас в теме
(4) Спасибо за советы, постараюсь поправить.
7. user1011815 7 22.09.20 14:48 Сейчас в теме
"В крации"... Ох Дмитрий, за что же вы так русский не любите, на нем даже 1С разговаривает. Статья интересная.
8. malikov_pro 1293 24.09.20 12:42 Сейчас в теме
(2) Интересный вариант если рядом с 1C разместить нормальный HTTP сервис по криптографии, а то JWT256 приходится через COM объект считать.
9. dmitry-irk38 136 24.09.20 13:15 Сейчас в теме
(8) Я немного ковырял пакет с JWT я так понимаю имеется ввиду JSON Web Tokens, т.е хотите через прослойку получать токен или раздавать?

Кстати realm не так прост, я думал это встроенный в коробку функционал, а оказалось сторонний продукт, для которого еще и Java-компилятор надо ставить и настройки там что-то собрать.

Чтобы развернуть как веб-службу под Windows тоже есть некоторые моменты, например нужна где-то хранить настройки т.к какая-то папка или системный реестр, нужно страницы html с настройками тоже где-то хранить. т.е нужна какая-то "установка"

Если сервер на Uinux-пободбой ОС то вероятно COM отвалится.
10. malikov_pro 1293 24.09.20 13:47 Сейчас в теме
(9) "т.е хотите через прослойку получать токен или раздавать" формировать и проверять, для HS256 (обычно он используется) есть нативный код, RS256 используется в google и yandex. Есть нативная реализация https://infostart.ru/public/805071/ но слабо документирована и переиспользование под вопросом.
из "нехватающего" это полноценный regexp, "огрызка" из XDTO не всегда хватает.
Если будет инструкция по сборке и запуске под linux (рядом с сервером 1С), то можно ориентироваться и переиспользовать в прикладных задачах.

"Кстати realm не так прост" - не силен в mongo, если HTTP прослойка будет проще слоя отдельного приложения, то возможно рабочий вариант.

"Чтобы развернуть как веб-службу под Windows тоже есть некоторые моменты, например нужна где-то хранить настройки" - создать рабочую директорию, дать ограниченный доступ в ней разместить exe и конфиг.

"нужно страницы html с настройками тоже где-то хранить" - это не понял.

В качестве примера посмотрите https://github.com/centrifugal/centrifugo, статья про её использование https://infostart.ru/1c/articles/1125876/

"Если сервер на Uinux-пободбой ОС то вероятно COM отвалится." меня за это и критиковали в https://infostart.ru/1c/articles/1131305/, в ближайшее время планирую переписывать.
11. dmitry-irk38 136 24.09.20 21:00 Сейчас в теме
(10) Вероятно можно взять одну из библиотек для Golang из https://jwt.io/ и развернуть. Но тут нужен конкретный кейс, что-то получить куда-то отправить.
12. user1879827 01.12.22 15:26 Сейчас в теме
этот Alex что чёрт какой-то? почему у него 666 ?
Оставьте свое сообщение