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

29.07.25

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

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

Файлы

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

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

Подписка 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 обмен

См. также

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С v8.3 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

29040 руб.

12.06.2017    154028    905    304    

467

SALE! 10%

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

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

61356 55220 руб.

15.04.2019    79608    214    164    

153

SALE! 10%

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

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

58422 52580 руб.

03.12.2020    42470    122    75    

115

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С v8.3 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" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

52967 47670 руб.

25.02.2015    178655    330    278    

397

SALE! 10%

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

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

38000 34200 руб.

15.12.2021    30260    217    58    

161

SALE! 10%

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

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

61356 55220 руб.

29.10.2018    59620    68    122    

68

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Пользователь 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 24.09.2025, версия 9.12 - 10.4)

19200 руб.

20.11.2015    168624    418    389    

538

SALE! 10%

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

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

38000 34200 руб.

23.07.2020    62188    290    81    

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