Реализация обмена в формате Protobuf

29.07.25

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Вариация на тему, как подружить ужа с ежом. А точнее - реализовать обмен JSON сообщениями через Kafka, используя протокол Protobuf.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Реализация обмена в формате Protobuf (платформа 8.3.26.1540)
.cf 123,35Kb
1 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Появилась потребность реализовать интеграцию с внутренними сервисами через Kafka, используя протокол Protobuf. Почему именно Protobuf? Потому что целевые сервисы-приемники реализованы на golang, для которого Protobuf как КД 2/КД 3 для 1С, и в целом в контуре был принят внутренний стандарт по использованию proto. Хотя скорее всего разработчики просто ленивые и не хотели сами писать парсер сообщений.

 

Что такое Protobuf?

Protocol Buffers (Protobuf) — протокол сериализации данных, разработанный компанией Google. Предназначен для эффективного и быстрого обмена структурированными данными между разными компьютерными системами, языками программирования и платформами.

Источник

 

Почему Protobuf?

  • Компактность по сравнению с текстовыми форматами, такими как XML или JSON.
  • Скорость сериализации и десериализации данных из-за оптимизированной структуры данных.
  • Языковая независимость — протокол поддерживает генерацию кода на множестве популярных языков программирования.
  • Обратная совместимость — можно добавлять новые поля или изменять схему данных, не разрушая работу уже существующих систем, которые используют старую версию схемы.

Источник

 

Как работает Protobuf?

Протокол работает в несколько этапов:

  1. Описание структуры данных в файле с расширением .proto. В этом файле используется простой синтаксис, независимый от языка программирования.
  2. Генерация кода с помощью компилятора protoc. Он генерирует код для работы с этой структурой на нужном языке.
  3. Сериализация и десериализация данных — после генерации кода можно работать с данными в бинарном формате, используя методы сериализации и десериализации, созданные компилятором.

Источник

Т.е. если вкратце, то протокол Protobuf - это такой стильный-модный-молодежный а-ля SOAP со строгой типизацией, структурой и т.д. Сам себя проверяет, позволяет генерировать парсеры сообщений под нужный стек на основании описанной структуры, сам моет сам убирает, короче огонь! Но тут на сцену выходит платформа 1С.. вся в белом желтом.. и средств для работы с протоколом конечно же нет. Почти.

На помощь загрустившим нам и платформе в желтом выходит, например, python + возможность вызывать скрипты средствами платформы.

Идея не новая, реализация следующая:

 
готовим скрипт на python, который на вход получает файл JSON + proto-описание сообщения
 
скрипт выполняет проверку входных данных и кодировку сообщения
 
на выходе получаем файл с двоичными данными результата кодировки

 

Вопрос из зала: "Почему тут везде всё на соплях файлах?". Потому что в моем случаем использовалась ОС Ubuntu Linux, а ее крутейшая парадигма гласит: "все есть файлы". Файлы - это файлы, каталоги - это файлы, устройства - это файлы, каналы/потоки ввода/вывода - это файлы, все есть файлы. В любом случае, даже если речь не о Linux, то проблемы не вижу. А для скорости достаточно выделить RAM-диск, через который гонять файлы.

Итак, что же у нас получилось?

Ставим python + protobuf. В зависимости от ОС есть варианты, но в моем случае это:

apt update
apt install -y protobuf-compiler
protoc --version
apt install python3
pip3 install protobuf
pip3 show protobuf

Обращаем внимание на версии протокола компилятора protoc и компонентов работы с протоколом того стека, под который будем писать скрипты. Бывают расхождения и неожиданности.

Создаем класс-обработку Protobuf. В макете такой обработки, например, можно хранить скрипты кодирования/декодирования, а так же proto-описание сообщений + сгенерированный код обработчиков. Опять же удобно хранить это все вместе с кодовой базой, а так же реализовывать версионирование.

 

 

 

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

 
 json2proto

 

 
 proto2json

 

Готовим proto-описание сообщения. Пусть это будет JSON-объект с единственным полем, содержащим числовое значение. 

 
 JSON

 

 
 testclass.proto

 

Кстати, для proto-сообщения, как уже было выше указано, важен порядок и типизация полей. Однако, допускается расширение состава полей путем их добавления "вниз", и все это без необходимости менять proto в приемнике. Хоть какая-то радость.

Сгенерируем код обработки нашего сообщения, и положим его в макет обработки. Генерация кода выглядит как:

protoc --python_out=. testclass.proto
 
 На выходе получаем файл vb2 примерно такого содержания

Ничего непонятно, но очень интересно.

Далее как в туториалах по рисованию: рисуем первый кружок, потом второй кружок, потом ахалай-махалай, и вуаля: у нас получается обработка, которая умеет вызывать скрипт на python, передавать в него параметрами входные данные, и читать результат кодирования/декодирования.

 
 Ладно-ладно.. примерно такой ахалай-махалай получается. Не все сервисные методы приведены, сорян, но по смыслу названия вроде понятны, можно заменить на аналоги. 

 

Тестируем наше чудо-юдо. Все норм.

 

 

В нашем примере размер исходных JSON-данных 13 байт, а размер закодированного сообщения 2 байта. Разница существенная с точки зрения трафика и хранения, но есть и цена.

Для ориентира скорострельности: имеем среднее значение по кодированию JSON-сообщений в proto на продуктовой среде порядка 40-50 rps. Предел специально не замеряли.

Отправку сообщений в Kafka реализуем абсолютно аналогично: скрипт + входной файл + выходной файл результата. Ахалай-махалай и вот это все.

В итоге констатируем успех реализации и использования в бою обмена Protobuf -> Kafka под 1С-ный проект. Схема платформа + pyhton|go|Исполнитель|что-то еще вполне норм.

Со смешанными чувствами констатируем успехи ИИ по написанию кода. Рабочая стратегия: сидеть на берегу реки и ждать... осталось узнать, кто проплывет.

Вступайте в нашу телеграмм-группу Инфостарт

protobuf proto kafka обмен

См. также

НДС 22% Учетные задачи ККМ Файловый обмен (TXT, XML, DBF), FTP 1С 8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Бухгалтерский учет Налоговый учет НДС Платные (руб)

Готовое обновление для конфигурации 1С:Управление торговлей 10.3, 1С:Комплексная автоматизация 1.1 , 1С:Управление производственным предприятием 1.3 обеспечивающее полную поддержку новой ставки НДС 22%. Для 1С:УТ 10.3 реализована поддержка печати чеков ККМ, а также Правила обмена с 1С:БП 3.0. Решение встраивает необходимые изменения в перечисления и документы, включая торговые операции и печатные формы.

12200 руб.

16.12.2025    6052    76    0    

69

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

50050 руб.

25.02.2015    180378    348    283    

406

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

22650 руб.

12.06.2017    156936    936    306    

474

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.262.x) и БП 3.0 (3.0.190.x). Правила подходят для версии ПРОФ и КОРП.

38000 34200 руб.

15.12.2021    31967    234    61    

174

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.25.x).

38000 34200 руб.

23.07.2020    64722    303    83    

243

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)

Перенос данных из ЗУП 3 в ЗУП 3 | из ЗУП 3 в КА 2 | из ЗУП 3 в ERP | Оперативно обновляется при выходе новых релизов 1С | Готовые правила конвертации (КД 2) для перехода с "ЗУП 3" на "УП ред. 3" / "КА, ред. 2" / "ERP, ред. 2" |Переносится нормативно-справочная информация и документы с движениями

55200 руб.

11.01.2021    36882    32    56    

34

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

58000 руб.

29.10.2018    60818    73    125    

71

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Перенос данных из КА 1.1 в КА 2 | из КА 1.1 в УТ 11 | Воспользовались более 367 компаний! | Переносятся все возможные виды документов, начальных остатков и вся справочная информация из "1С:КА 1.1" в "1С:КА 2.х" / "1С:УТ 11" | Разработан в формате КД 2 (правила конвертации данных) | Фильтр по организациям при выгрузке | Выбор разных алгоритмов выгрузки начальных остатков | Можно проверить перенос до покупки!

58000 руб.

04.12.2015    197920    260    354    

413
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Avatarzorro 68 30.07.25 06:49 Сейчас в теме
все идет к тому, что 1снеГи скоро будут самыми топовыми бойцами со знанием питона\с++\с#\пхп\го\луа\дот нэт\jave\javasript и тд + само собой odin ass
2. comptr 57 30.07.25 09:11 Сейчас в теме
(1) а под капотом будет chat-gpt Claude/Gemini :)
3. Avatarzorro 68 30.07.25 09:34 Сейчас в теме
(2) по капотом будет команда стажёров на практике
Для отправки сообщения требуется регистрация/авторизация