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

См. также

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

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

4800 руб.

20.01.2022    10162    36    1    

19

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

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

2400 руб.

04.07.2022    10472    43    1    

34

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

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

3360 руб.

05.08.2024    3389    19    1    

13

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

Облачные технологии и DevOps кардинально меняют подход к разработке на платформе 1С:Предприятие. Делимся реальным опытом построения CI/CD-конвейера в GitLab: от сборки и тестирования с YAxUnit и Vanessa Automation до интеграции с SonarQube и безопасного развертывания в продакшен. Вы узнаете, как с помощью Docker и автоматизации превратить рутину в предсказуемый и надежный процесс, сократив риски и освободив время для решений, которые действительно требуют вашего профессионализма.

18.08.2025    950    ComboBoy    0    

4

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

Задумывались ли вы, сколько времени разработчики тратят не на код, а на рутинные действия – от настройки окружения до поиска ответственных и документации? Эта статья о том, как найти и устранить «ерунду», которая тормозит процесс и раздражает на каждом этапе разработки. Разбираемся, как с помощью автоматизации, чек-листов и правильных процессов сделать разработку комфортной, эффективной и даже приятной.

18.08.2025    3036    mrXoxot    1    

18

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

Так сложилось, что чаще всего для целей CI/CD в проектах 1С применяется Jenkins и чуть реже GitLab CI. Но существует множество других решений для построения сборочных контуров. Ниже речь пойдет о применении решения Azure DevOps в проектах на 1С. В основе – реальный кейс, шаблоны, инструменты и собственные расширения.

15.08.2025    1115    ktb    0    

10

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

Когда в компании используется более 500 внешних обработок для 20 различных баз, процесс их параллельной разработки превращается в борьбу. Расскажем о тернистом пути от ручных скриптов к масштабируемой DevOps-системе, позволяющей централизованно управлять внешними обработками, автоматизировать сборки, интегрироваться с таск-трекером, запускать автотесты и разворачивать окружение в пару кликов.

12.08.2025    4821    untru    13    

22

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

Дорогой дневник, мне не подобрать слов, чтобы описать боль и унижение, которые я испытал за последнее время, моя жизнь никогда не будет прежней... мне не удалось найти механизма поставки расширения конфигурации... но зато я научился это делать с помощью команд запуска "1С:Предприятие" и GIT...

1 стартмани

29.07.2025    2637    2    gorsheninsn    6    

26
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1346 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 3 21.09.20 15:50 Сейчас в теме
Побольше бы таких статей! Спасибо Вам большое
5. dmitry-irk38 137 21.09.20 23:25 Сейчас в теме
(3) Рад, что статья оказалась для Вас полезной 😊
BillySwat; +1 Ответить
4. malikov_pro 1346 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 1346 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 1346 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 ?
Для отправки сообщения требуется регистрация/авторизация