Взаимодействие 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

См. также

DevOps для 1С DevOps и автоматизация разработки Программист Стажер Платные (руб)

Данный онлайн-курс (интенсив) предусматривает изучение процессов, инструментов и методик DevOps, их применение при разработке на платформе 1С. 

2500 руб.

20.06.2023    22394    7    4    

311

SALE! 50%

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

Использования систем контроля версий — стандарт современной разработки. На курсе научимся использованию Хранилища 1С и GIT при разработке на 1С:Предприятие 8. Разберем подходы и приемы коллективной разработки, научимся самостоятельно настраивать системы и ориентироваться в них.

4900 2450 руб.

29.06.2022    11955    100    4    

132

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

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

2160 руб.

05.08.2024    1292    15    1    

8

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    12571    10    10    

35

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

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

2400 руб.

04.07.2022    8382    38    1    

29

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

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

1800 руб.

20.01.2022    7791    19    0    

13

DevOps и автоматизация разработки Программист Платформа 1С v8.3 Бесплатно (free)

В проектной разработке часто возникают проблемы с однообразностью ландшафта, производительностью и быстрой разверткой инфраструктуры. Об одном из способов избежать или изолировать данные проблемы с помощью контейнеризации расскажем в статье.

18.09.2024    1795    antonov_av    6    

14

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

Когда информационная база «весит» несколько десятков/сотен гигабайт, для разработки и тестирования обычно используют полную копию рабочей базы. Но если информационная база превышает несколько терабайт, такой подход сталкивается с нехваткой места на диске, долгой реструктуризацией, замедленной скоростью работы и другими проблемами, связанными с размером базы. В статье расскажем, как правильно готовить копии больших баз для разработки и тестирования.

28.08.2024    6661    yuraid    28    

50
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1324 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 137 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 137 21.09.20 23:25 Сейчас в теме
(3) Рад, что статья оказалась для Вас полезной 😊
BillySwat; +1 Ответить
4. malikov_pro 1324 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 137 21.09.20 23:27 Сейчас в теме
(4) Спасибо за советы, постараюсь поправить.
7. user1011815 7 22.09.20 14:48 Сейчас в теме
"В крации"... Ох Дмитрий, за что же вы так русский не любите, на нем даже 1С разговаривает. Статья интересная.
8. malikov_pro 1324 24.09.20 12:42 Сейчас в теме
(2) Интересный вариант если рядом с 1C разместить нормальный HTTP сервис по криптографии, а то JWT256 приходится через COM объект считать.
9. dmitry-irk38 137 24.09.20 13:15 Сейчас в теме
(8) Я немного ковырял пакет с JWT я так понимаю имеется ввиду JSON Web Tokens, т.е хотите через прослойку получать токен или раздавать?

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

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

Если сервер на Uinux-пободбой ОС то вероятно COM отвалится.
10. malikov_pro 1324 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 137 24.09.20 21:00 Сейчас в теме
(10) Вероятно можно взять одну из библиотек для Golang из https://jwt.io/ и развернуть. Но тут нужен конкретный кейс, что-то получить куда-то отправить.
12. user1879827 01.12.22 15:26 Сейчас в теме
этот Alex что чёрт какой-то? почему у него 666 ?
Оставьте свое сообщение