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

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика Нейросети DevOps и автоматизация разработки Тестирование QA Разработчик 1С 8.3 Бесплатно (free)

Открытый набор правил и скриптов на GitHub для ИИ-агента (агента искусственного интеллекта: Claude Code, Codex и других). Агент сам снимает опись машины, предлагает путь проверки кода: плагин Unica или BSL Language Server со справкой платформы. С вашего «да» ставит недостающее, затем выгружает внешнюю обработку, заводит git и доводит её до зелёного теста YAxUnit. Оба пути проверены с нуля свежим агентом на копии демобазы «Управление торговлей» 11.5, платформа 8.3.27. Новая часть: для задач по данным базы агент выгружает конфигурацию в XML, строит карту объектов и пишет запросы только по именам, найденным в выгрузке. Внутри гайд «Unica на Windows» с известными ошибками и проверенными обходами.

10.11.2026    519    Iliaelagin    0    

1

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Системный администратор Разработчик 1С 8.3 1С 8.5 Бесплатно (free)

В прошлой статье у ERP оставалось 89 отказов загрузки, у ЗУП — 19. Теперь обе конфигурации совпали с эталонами, а собранные файлы прошли круг через платформу. Развертка выделена в открытый репозиторий cf-unwrapper: библиотека на Rust и консольная утилита. Показываю результаты, объясняю границы «100%» и приглашаю к проверкам и развитию проекта.

02.11.2026    337    oyti    1    

1

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Разработчик 1С:Предприятие 8 Россия Бесплатно (free)

Практическое руководство для команд, которые хотят уйти с хранилища конфигурации на git, не переходя на новую среду разработки. Подойдёт разработчикам и тимлидам, которые настраивают командную разработку на типовых и собственных конфигурациях.

02.11.2026    685    vanya_gonchar    2    

6

Файловый обмен (TXT, XML, DBF), FTP DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Системный администратор Разработчик 1С 8.5 Бесплатно (free)

В прошлой статье я выгрузил Бухгалтерию в XML байт в байт и спросил, на чем проверить дальше. Вы ответили: ERP, старые релизы, зарплата. Прогнал пять конфигураций, от клиента ЭДО до ERP на 120 тысяч файлов. Рассказываю, что сломалось после Бухгалтерии, почему эталону платформы нельзя верить на слово, как выгрузить одну конфигурацию в формат трех версий платформы - и почему cf-конвертер становится отдельным продуктом, Разверткой.

02.11.2026    452    oyti    2    

3

Инструментарий разработчика DevOps и автоматизация разработки Разработчик 1С 8.3 Абонемент ($m)

Как отличить срочное исправление от обычного вечернего коммита? Проверила расчёт показателей поставок по отчёту хранилища 1С и истории двух открытых проектов. На стенде счётчики совпали со сценарием, а в выборке открытого проекта правило «те же объекты» ошиблось во всех шести случаях. Показываю границы такого замера и отличие от метрик DORA. Прилагаются инструмент и материалы опыта.

1 стартмани

29.10.2026    399    Ninel_S    0    

0

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С 8.5 Бесплатно (free)

Выгрузка типовой Бухгалтерии в XML через базу занимает больше четырёх минут. Я написал движок, который читает файл конфигурации напрямую и выгружает его за 35 секунд, совпадая с выгрузкой платформы байт в байт во всех 90 385 файлах. Загрузка обратно тоже работает: круг через платформу совпадает полностью. Рассказываю, как ускоряли, как проверяем и что при загрузке XML теряет сама платформа. А в конце спрашиваю, нужно ли это кому-то, кроме меня, и на какой конфигурации проверить следующей.

27.10.2026    1016    oyti    20    

16

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Разработчик 1С 8.3 Абонемент ($m)

Хук pre-commit проверяет полный снимок индекса Git в отдельной базе 1С. На «Нано-УТ» и платформе 8.3.27 повторила 12 попыток коммита: восемь прошли, четыре остановлены. Чистый коммит занял 31,8 с. Вызов несуществующего метода общего модуля хук останавливает только с ключом -ExtendedModulesCheck. В архиве версия 2, тесты, инструкция и журналы.

1 стартмани

26.10.2026    413    Ninel_S    2    

-1

Нейросети DevOps и автоматизация разработки Разработчик 1С 8.3 Абонемент ($m)

Я дала агенту Claude Code задачу словами: добавить в учебную конфигурацию документ «Внутреннее потребление товаров», который списывает товар по средней стоимости и не даёт уйти в минус. Три запуска с нуля, каждый принят проверкой на платформе 1С: 1 мин 49 с, 2 мин 33 с и 2 мин 56 с. Показываю, что агент поменял, где ошибался и почему на типовой УТ так быстро не будет.

1 стартмани

26.10.2026    744    Ninel_S    0    

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

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

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

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