1С:Шина – успешный опыт эксплуатации

08.08.24

Интеграция - Перенос данных 1C

1С:Шина – это больше, чем RabbitMQ. Это ESB-решение, с помощью которого можно заложить в процесс передачи данных свою логику – видоизменять сообщения и получателей, не внося изменений в обмен на стороне отправителя. О вариантах практического использования 1С:Шины и опыте ее эксплуатации под большой нагрузкой пойдет речь в статье.

Доклад называется «1С:Шина – успешный опыт эксплуатации». Это спойлер. Опыт действительно есть, он действительно успешный, мы действительно внедрили 1С:Шина в промышленную эксплуатацию.

Но почему мы решили внедрить именно 1С:Шина? Как мы решили, что этот продукт нам подходит? И какие задачи хотели с ее помощью решить? Чтобы ответить на эти вопросы, расскажу обо всем по порядку.

 

Изначально у нас в компании было:

  • Много сервисов, написанных на разных языках: PHP, Python, .NET

  • Эти сервисы общались между собой в основном через брокер очередей RabbitMQ.

  • Процесс интеграции контролировался через единую систему мониторинга, которую наши прекрасные DevOps-инженеры реализовали на Prometheus плюс визуализация на Grafana.

  • А логи этой интеграции хранились в единой системе хранения логов на базе ClickHouse – СУБД от Яндекс.

За последний год в нашей компании появилось много новых сервисов, основанных на 1С – как на типовых конфигурациях, так и на полностью самописных. Причем эти сервисы стали применяться в операционном контуре, и в случае их недоступности или деградации по производительности бизнесу приходилось страдать. Нам необходимо было найти решение для более глобальной интеграции продуктов 1С в весь IT-контур. А именно:

  • Обеспечить гарантированную доставку сообщений – чтобы сообщения, отправленные сервису 1С, всегда доходили до него, а ответы от сервиса 1С всегда достигали получателя.

  • Реализовать возможность асинхронного обмена сообщений – 1С без Шины не умеет асинхронно взаимодействовать.

  • Встроить 1С в единую систему мониторинга.

  • И интегрировать логи 1С в единую систему логирования.

Мы рассматривали множество различных вариантов решения, вплоть до «а давайте напишем свою шину». Но в начале 2021 года увидели новый продукт – 1С:Шина. Изучили документацию и заинтересовались – судя по описанию, 1С:Шина должна была решить все поставленные перед нами задачи.

 

Мы приобрели этот продукт, получили дистрибутив и развернули его в нашей инфраструктуре. Поскольку 1С:Шину можно установить как на операционной системе Windows, так и на Linux:

  • Dev-контур мы реализовали на операционной системе Windows Server 2019 – поставили туда 1С:Шину со средой разработки, а в качестве СУБД использовали файловую базу 1С.

  • А Prod развернули на виртуальной машинке Ubuntu – поставили 1С:Шину без среды разработки, а в качестве СУБД использовали PostgreSQL 13.6.

 

Схема гарантированной доставки 1С:Шина

 

Расскажу о возможности гарантированной доставки с помощью 1С:Шина немного подробнее – каким образом это решение гарантирует доставку.

 

На слайде – картинка из официальной документации 1С:Шины:

  • здесь отправитель и получатель – это конфигурации 1С;

  • интеграционная шина – это отдельное решение 1С:Шина, которое мы установили на Windows, в проде на Linux;

  • у отправителя есть свое хранилище – это СУБД;

  • у интеграционной шины есть свое хранилище – тоже СУБД, есть различные варианты – может быть PostgreSQL, MS SQL, файловая;

  • у получателя есть свое хранилище;

  • и между ними есть каналы интеграции.

 

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

Все, кто изучал новые версии платформы, видели, что в дереве метаданных появилась новая ветка объектов – Сервисы интеграции. С помощью метаданных этого вида можно взаимодействовать с инструментом 1С:Шина: создать свой сервис интеграции и прописать каналы, которые бывают двух типов – исходящие и входящие.

  • У нас в конфигурации-отправителе настроен исходящий канал «JournalLogs_ИзКонфигурацииВШину».

  • При создании такого канала в СУБД создается табличка _integchanneloutqueue52, где будут храниться сами сообщения и информация об этих сообщениях: ID-шники, тело, заголовки. Когда разработчик пишет на языке 1С:
    СервисыИнтеграции[Сервис][Канал].ОтправитьСообщение(СообщениеСервиса);
    сообщение в первую очередь попадает в эту таблицу, а далее по каналу передается в интеграционную шину.

  • Шина фиксирует это сообщение у себя в хранилище, производит с ним какой-либо процессинг, если нужно, определяет, кто будет получать это сообщение, и передает его в канал получателя.

  • А далее это сообщение принимает уже конфигурация-получатель, у которой есть входящий канал. При создании этого входящего канала в СУБД базы-получателя создается табличка _integchannelinqueue56 – входящая очередь. Она имеет точно такую же структуру, только добавляется новое бинарное поле _processed, которое отвечает за то, обработано сообщение или нет.

А теперь давайте посмотрим, что будет, если вдруг что-то где-то поломается.

 

Например, мы потушили Шину, выключили ее. При отправке на стороне отправителя никаких ошибок не будет – будет говориться о том, что сообщение отправлено, но все сообщения будут копиться в табличке _integchanneloutqueue52.

 

Как только мы включаем Шину, она начинает слушать канал, и все сообщения переедут в хранилище интеграционной шины.

Если, например, база-получатель сейчас недоступна – мы ее обновляем в монопольном режиме – сообщения копятся, все хорошо.

Как только база получателя будет доступна, все сообщения переедут уже в табличку _integchannelinqueue56.

 

Сигнатура процедуры для обработки входящего сообщения на стороне 1С содержит два параметра – это сообщение и классическая служебная переменная «Отказ».

  • Если никаких исключений при обработке сообщения не возникло – мы доехали до конца процедуры и «Отказ» не стал Истина, сообщение пометится в колонке _processed как Истина, и будет считаться доставленным.

  • Если же произошла какая-то исключительная ситуация, _processed будет «Ложь», и через некоторое время произойдет повторная попытка доставки сообщения – это время настраивается уже в конфигурационном файле 1С:Шины.

 

Практика использования. Сбор метрик

 

Расскажу о кейсах, которые мы реализовали с помощью 1С:Шины.

У нас порядка 17 различных конфигураций – на слайде они условно называются база №1, база №2, база №3. Из всех этих баз нам нужно собирать метрики в единую систему мониторинга на базе Prometheus.

Для каждой базы наши разработчики и Product Owner-ы определили, какие метрики и health check’и должны быть получены, и регламентным заданием через Шину эти данные отправляются в отдельную базу «Агрегатор метрик».

Сам «Агрегатор метрик» опубликован на веб-сервере Apache, и туда настроен экспортер Prometheus – он забирает эти метрики себе, а Grafana все это визуализирует.

На слайде показаны графики с метриками для специальной конфигурации 1С, которая у нас слушает вебхуки Jira и производит процессинг по задачам. На графике выводится количество сообщений в планах обмена – можно увидеть, сколько за последнее время было событий и что вообще происходит. Получилось очень полезно. Кейс успешный.

 

Контроль доступности баз 1С

 

После этого мы пошли дальше и стали с помощью 1С:Шины измерять доступность баз.

Проще всего было отправлять в каждую базу пинг, получать от нее ответ и реализовать на основании этого дашборд – такой, как на слайде. Но это было бы не совсем справедливо, потому что чисто теоретически база может отправлять метрики, но не принимать в сообщениях какие-то значения. И тогда мы не можем сказать, что база доступна.

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

Мы в базу «Агрегатор метрик» добавили регламентное задание, которое периодически отправляет пинг в соответствующий канал 1С:Шины без указания получателя. На этот канал подписаны все наши решения. Они получают наш пинг, и отвечают, что все хорошо. Prometheus это видит, и эту метрику фиксирует.

На слайде я специально потушил сервис B3 – он вывел ALARM, и в Telegram пришло сообщение о том, что сервис недоступен.

Все получилось – мы убедились, что веерная отправка работает шикарно.

 

Выгрузка журнала регистрации

 

Дальше мы решили нагрузить 1С:Шину и реализовали через нее выгрузку журнала регистрации в единую систему хранения логов ClickHouse.

Для выгрузки журнала регистрации мы написали свою небольшую подсистему а-ля БСП – назвали ее «Оснастка» и установили на всех конфигурациях.

Эта подсистема читает инкременты журнала регистрации, парсит его в JSON и отправляет это сообщение в Шину. Отправили и после отправки очищаем – тем самым у нас журнал регистрации не пухнет.

Все сообщения 1С:Шина отправляет в специальную базу «Сбор логов», которая записывает их себе в регистр сведений, преобразует в формат для загрузки в ClickHouse, укладывает в ClickHouse и очищает кэш (удаляет записи из регистра сведений).

По данным ClickHouse мы в Grafana имеем красивый дашборд, который показывает абсолютно всю агрегационную информацию по журналу регистрации:

  • сколько у нас было соединений и фоновых заданий;

  • сколько у нас было транзакций – какие из них были зафиксированы, а какие откатились;

  • сколько раз поменялся тот или иной объект метаданных – документ, регистр сведений и прочее;

  • сколько у нас было авторизаций успешных, а сколько – неуспешных и т.д.

Через две минуты после того как событие произошло, оно попадает в ClickHouse, и мы его уже видим в Grafana. Очень удобно.

Например, мы выпустили новый релиз, столкнулись с деградацией производительности, смотрим на график и видим, что количество перезаписей регистра сведений выросло в 10 раз. Сразу нашли, что запись происходила в цикле. Очень визуально.

 

Производительность 1С:Шина

 

Хотя обычно журнал регистрации – это неподъемная штука, мы убедились, что через 1С:Шину можно прокачать значительный объем данных:

  • У нас одновременно собираются данные журнала регистрации от 17 достаточно нагруженных баз.

  • Все эти 17 баз генерируют порядка 10,5 миллиардов записей в месяц, что соответствует чуть более 4000 событий в секунду в среднем.

  • На уровне базы 1С «Сбор логов» у нас в пике заходит больше 200 пакетов в секунду, в среднем где-то 150.

  • В этих 150 пакетах – 30 тысяч событий журнала регистрации в секунду.

  • Если говорить об объемах данных, то это порядка 16 мегабайт в секунду.

И это все в один поток. А в 1С:Шине можно реализовать несколько потоков загрузки – в документации это описано. Мы не стали делать многопоточность, потому что у нас и так шестикратный запас по прочности. В принципе, производительность 1С:Шины меня приятно удивила. Я действительно считаю, что этот опыт успешный.

 

Преимущества при внедрении 1С:Шина

 

Давайте поговорим, какие экономические преимущества дает внедрение 1С:Шина.

  • Во-первых, нам не пришлось разрабатывать что-то свое или искать какие-то внешние инструменты.

  • По 1С:Шине мы можем получить поддержку у вендора, и мы ее получали достаточно оперативно. У нас было несколько вопросов, представители фирмы «1С» оперативно проконсультировали нас по продукту.

  • Когда все сервисы 1С появились в нашей единой системе мониторинга и в единой системе сбора логов, это дало нам возможность быстро расследовать инциденты и понимать, как вылечить ту или иную проблему – это повысило стабильность наших систем.

  • Время доступности сервисов тоже увеличилось за счет асинхронной реализации. Мы можем спокойно обновлять одну базу, при этом на стороне тех, кто запрашивает данные, ошибок не возникает – как только база обновится и станет доступна, все ответы придут.

 

Преимущества по инфраструктуре:

  • Для обмена данными между базами 1С через 1С:Шина нет необходимости публиковать базы 1С на веб-сервере или реализовывать HTTP/веб-сервисы, которые будут взаимодействовать с внешними приложениями.

  • Это позволяет нам переносить базу на другой сервер, не задумываясь о перепрописывании путей.

  • При обновлении платформы нет зависимости от минорных версий – нет необходимости ставить на веб-сервере dll той же версии, что требует платформа 1С.

  • Сервисы интеграции на конкретной базе можно легко включить-выключить. Это делается в режиме 1С:Предприятия через встроенную обработку «Управление сервисами интеграции» – там можно включить или выключить активность того или иного канала.

 

Преимущества при разработке решений:

  • Больше нет риска «потерять» сообщение, это дает нам возможность не придумывать на каждое решение какие-то внутренние очереди. Не нужно сохранять сообщения куда-нибудь в кэш, в другую базу, сообщать об этом пользователю». Такой задачи нет. Мы все спокойно отправили, а 1С:Шина уже разрулит.

  • Возможность верной отправки сразу нескольким получателям – о ней рассказал ранее.

  • 1С:Шина – это не просто брокер очередей, не аналог RabbitMQ. Это действительно ESB-решение, на котором можно процессить – видоизменять сообщения и получателей. Если сообщение было адресовано одному получателю, но мы по телу поняли, что эта информация необходима и другим получателям – можно это все сделать на уровне Шины, а не на уровне отправителя.

На этом наш успешный опыт эксплуатации 1С:Шины на текущий момент закончился, но не закончились задачи для Шины – хочу поделиться нашими идеями о том, что еще можно сделать с помощью 1С:Шина.

 

Новые задачи для 1С:Шина

 

1С:Шину можно использовать как своеобразный уловитель Web-Hook и CallBack.

В нашем интеграционном контуре есть много разных систем, которые умеют отправлять сообщения через REST-интерфейс по любому адресу – куда вы им скажете. Сложность в том, что, как правило, отправителю неважно, получили вы сообщение или нет. Та же Jira вебхучит куда угодно, но если вдруг тот сервис недоступен, повторного вебхука не будет. А база 1С, как мы знаем, периодически обновляется и не всегда доступна.

На 1С:Шине можно реализовать HTTP-сервис, который будет слушать и обрабатывать любой GET-запрос. На уровне внешнего приложения мы настраиваем, чтобы оно отправляло свои вебхуки по REST-интерфейсу в 1С:Шину. Оно отправляет данные в 1С:Шину, а она уже в зависимости от того, кто является отправителем, определяет, какая из баз будет получателем.

 

Второй вариант использования 1С:Шины – это процессинг.

Например, у нас есть 1С:Документооборот, в котором появляется карточка нового контрагента, и связанные с ним файлы – сканы договора, сертификатов и прочее. Все это можно объединить в один объект и отправить в Шину, а уже на уровне Шины разложить, что:

  • карточка с установленными лимитами должна попасть в 1С:Управление Холдингом;

  • карточка с реквизитами контрагента – в 1С:Бухгалтерию предприятия;

  • а все файлы должны отправиться в хранилище S3.

 

Думаю, у многих возник вопрос: зачем нам эти промежуточные базы 1С – «Агрегатор метрик», «Сборщик логов»? Мы их сделали, потому что так было быстрее и удобнее. Но по большому счету 1С:Шину можно настроить так, что она сама будет укладывать данные в ClickHouse, и сама будет сообщать экспортеру Prometheus о тех или иных метриках.

В планах у нас отказаться от этих прослоек – баз 1С «Агрегатор метрик» и «Сборщик логов» – и реализовать это все на уровне Шины, тем самым еще больше упростить процесс.

 

Заключение

 

Я рассказал, какие плюсы от внедрения 1С:Шина получила компания. А какие плюсы получил я сам?

 

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

 

Вопросы и ответы

 

Задача мониторинга сервисов 1С и агрегации свода данных в базах 1С прекрасно решается и без использования 1С:Шины. И сервисы 1С можно интегрировать с Prometheus и Grafana напрямую. Но вы зачем-то используете 1С:Шину. Объясните подробнее, почему?

Действительно, все это можно сделать и без 1С:Шины. Но у нас системы высоконагруженные, и большие требования к доступности.

Изначально нам нужно было организовать обмен между разными базами 1С именно бизнесовых данных, и мы решили реализовать этот обмен на базе 1С:Шины. Но тогда этот продукт только появился – никто не знал, как она себя поведет. Запускать этот обмен было просто страшно.

Поэтому мы решили начать с метрик. Если вдруг метрики перестанут собираться, или журнал регистрации перестанет парситься и передаваться по Шине – да, это неприятно, но бизнес при этом не пострадает. Мы просто хотели нагрузить 1С:Шину реальными данными – не какой-то синтетический тест запустить, а проверить на реальных данных, посмотреть ее стабильность.

За год ее работы она ни разу не упала. Было такое, что канал переставал слушать, но это решалось просто перезапуском активности конкретного слушателя на конкретной базе.

И сейчас мы уже настраиваем, чтобы через 1С:Шину передавались бизнесовые данные. Пока это будет обмен между базами 1С. Но дальше мы планируем выводить это за инфраструктуру 1С на весь IT-ландшафт.

1С:Шина увязана с другими технологиями 1С. В каком формате вы передаете данные? Вы сами создаете структуру пакетов, которые у вас летят в 1С:Шину, или используете формат Enterprise Data?

По Шине передаются в основном либо пакеты двоичных данных, либо текст. Что вы в текст положите – JSON или XML – это уже не важно.

Вопрос в том, как вы эти пакеты делаете? Сами?

Сами. Можно сериализовать любой объект в xml-строку и отправить по Шине.

В докладе прозвучало, что много подписчиков могут забрать одно сообщение в канале исходящих из Шины. Они забирают это сообщение из одной очереди или из нескольких?

Если вы указали конкретного получателя, сообщение попадает одно в канал и выслушивается конкретным получателем. Пока этот получатель не подключится к Шине и не начнет слушать по этому каналу, никто другой это сообщение не получит.

Но если вы не указали получателя, это сообщение полностью задублируется для каждого, кто этот канал слушает. Пока каждый получатель не вычитает, это сообщение будет ждать его в очереди.

А кто вообще может слушать канал, какая информационная система – это указывается в панели администрирования Шины.

Канал входящий в Шину или исходящий?

Как входящий, так и исходящий. Кто может пушить в канал, и кто может слушать канал.

Один канал для получателя может быть забит сообщениями для других получателей?

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

Какой максимальный размер пакета данных можно передавать через канал?

Я думаю, что это можно посмотреть в конфигурационном файле. 30-40 мегабайт мы спокойно передавали. Передавать 1,5 Тб или 1,5 Гб еще не пробовали. Эмпирически не могу сказать, насколько большим может быть пакет. Если учесть, что у 1С:Шины своя СУБД и там сообщения хранятся в бинарном виде, наверное, максимальный размер зависит от настроек СУБД.

Какие типы источников могут использоваться в 1С:Шина? FTP, HTTP и так далее.

Протокол AMQP можно нативно использовать как с 1С-интеграциями через сервисы интеграции, так и для RabbitMQ. Также можно использовать файловые, GMC, FTP и HTTP каналы – исходящие так и входящие.

Подразумевает ли 1С:Шина кастомизацию? Можно ли создавать свои коннекторы – к примеру, для S3, Redis или для чего-нибудь еще?

Если напишете. 1С:Шина написана на 1С:Элементе, там есть свой язык разработки. Вы можете ее кастомизировать, писать свои препроцессоры – хоть бизнес-логику там реализовать.

По вашему мнению, фирма «1С» даст добро на тиражное использование этих коннекторов? Я сравниваю с Mule ESB – это тоже аналог Шины на Java, на Eclipse. Там в комплект стандартной поставки входят коннекторы, которые изначально были разработаны сообществом.

Я думаю, что вопрос больше к фирме «1С». Не вижу никакой причины, почему бы они не пошли на это.

Создание коннектора подразумевает снятие 1С:Шины с поддержки?

В 1С:Элементе нет такого понятия.

На слайде была фраза «невозможно потерять сообщение». А вы каким-то образом проверяли или пробовали специально потерять сообщение?

Да. Я показывал на слайде – мы гасили Шину, а потом гасили получателя и смотрели, как ведут себя сервисы интеграции.

А как гасили Шину?

Через ребут.

Я пробовал передавать большой файл и в процессе делал hard reset Шины – в итоге получал потерю данных сообщения: часть данных ушла из отправителя, часть попала в Шину, часть потерялась безвозвратно, и исходящая очередь стала колом, пока ручками не стерли в табличке очереди эту сбойную запись.

Вы отправляли файл единым пакетом, не чанками?

Я просто отправлял сообщение, там был бинарь 4 гига. Специально взял такой объем.

А само сообщение в табличке out появилось?

Да, и там эта строчка осталась, потому что сообщение не ушло до конца. Чанки уходили, но в процессе я ее потушил.

Т.е. Шина разбила ваше сообщение на несколько?

Я заметил, что все больше 1 мегабайта она отправляет по кусочкам. Смысл в том, что данные потерялись и обмен на отправку тупо встал – при попытке коннекта она спотыкалась об это сообщение и больше ничего не уходило.

А какая версия?

Примерно последняя, где-то несколько месяцев назад на тот момент (прим. ред. доклад от 7 октября 2022 года).

Мы ловили подобную ошибку на тестовой версии, 1.1. Но там это была не проблема битого сообщения, а проблема задвоенных идентификаторов.

Как лечилось?

Через TRUNCATE.

Вы сказали, что готовите сообщения средствами 1С. Но 1С:Шина превосходит по производительности источники и приемники, поэтому при отправке сообщений на стороне базы-источника может возникнуть узкое бутылочное горлышко. Как вы решаете эту проблему?

Вопрос в том, как те же журналы сообщений собирать и укладывать в код 1С. Если мы будем каждую запись пытаться записать как одно сообщение, база действительно не вывезет. Но мы получаем сразу массив данных через BULK и его записываем. Поэтому здесь уже вопрос производительности больше к дисковой подсистеме, а не к 1С.

Все, что мы реализовали, это исключительно нативно – никаких внешних компонент, никаких сторонних решений. Журнал регистрации парсится, разбирается, собирается JSON для ClickHouse и так далее, исключительно средствами 1С.

 

*************

Статья написана по итогам доклада (видео), прочитанного на конференции Infostart Event 2022 Saint Petersburg.

См. также

SALE! 10%

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

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

55778 50200 руб.

04.08.2015    166775    334    278    

375

SALE! 10%

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

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

35000 31500 руб.

15.12.2021    24192    171    51    

130

SALE! 15%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 руб.

12.06.2017    141848    799    297    

420

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.19.x).

35000 31500 руб.

23.07.2020    51570    228    70    

187

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 | Можно проверить на вашем сервере перед покупкой

55778 50200 руб.

15.04.2019    72212    182    150    

124

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" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171312    302    257    

378

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С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

55778 50200 руб.

29.10.2018    56303    59    105    

61

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

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 руб.

18.02.2016    187032    590    509    

527
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. puzo50 09.08.24 08:04 Сейчас в теме
спасибо. очень понравилась статья.
выходит, что можно с ней справиться, с этой шиной.

п.с.
хотел поставить плюсик. но чтобы поставить плюсик - надо заплатить денег (кек. чо правда?? втф?)
поэтому не поставлю плюсик теперь никому никогда.
Gorod111; +1 Ответить
2. Sibars 373 09.08.24 09:19 Сейчас в теме
(1) Да, шина показала себя очень хорошо, за последние 2 года мы внедрили ее в нескольких компаниях - полет нормальный.
+ Продукт развивается, уже добавлена нативная поддержка Kafka
...
Также полностью закрыли вопросы мониторинга шины (написали небольшой проект на самой шине), в том числе смотрим и в служебные таблицы сообщений самих баз-участников.
7. mefalcon 36 09.08.24 11:55 Сейчас в теме
(2)
мониторинга шины (написали небольшой проект на самой шине), в том числе смотрим и в служебные таблицы сообщений самих баз-участников.

Добрый день, Дмитрий. Спасибо за подробный доклад.
То есть штатных средств для мониторинга у 1с:шины, как например у датареон, нет? Правильно услушал?
Или в новых релизах уже есть штатные средства? Спрашиваю потому что чтобы почитать документацию к 1С:шине, ее нужно сначала купить((
Спасибо
8. Sibars 373 09.08.24 12:07 Сейчас в теме
(7) Шина имеет на своем борту следующие возможности:
1. визуальный (интерактивного) контроль за состоянием каналов, вплоть до конкретного сообщения
2. Возможность получать (и создавать свои) метрики по API
3. Вести файловое логирование событий шины (настраивается)
...
Мы писали свою схему-проект, чтобы "уложить" значения метрик шины в едину систему мониторинга на VictoriaMetric (Prometheus) + Prometheus Alerting + Grafana
BibaZavr1; mefalcon; +2 Ответить
3. deevil 161 09.08.24 09:49 Сейчас в теме
Отчасти решал тебе потребности и кажется несколько странным зачем для передачи логов и мониторинга использовать шину.

Тот же журнал регистрации прекрасно выгружается в кликхаус с помощью OneSTools.EventLog (я сделал в него несколько изменений, для поддержки нескольких баз и т.д..)
Работает стабильно (но мониторить его все же нужно).

Доступность 1с очень изящно можно мониторить через http сервис...

А шина кажется нужна до бизнес данных. И честно говоря ожидал в статье увидеть такие кейсы)
4. Sibars 373 09.08.24 09:58 Сейчас в теме
(3) Это был тест решения, и не хотелось экспериментировать с бизнес-данными. Поэтому передавали логи, так как это достаточно большая и стабильная нагрузка.
Сейчас шина используется в основном для бизнес-кейсов:
1. Все интеграции (передачи данных между 1С) - череш шину.
2. Все запросы во внешние СУБД - через шину, так как в основном на 1С linux, где COM - недоступен, а внешние источники данных работают через ODBC драйвер и не всегда их удобно и можно использовать (те же логины/пароли находятся в базе 1С), а у шины прекрасно зарекомендовавший себя драйвер JDBC, + можно подкидывать свои, просто добавив файл.
3. Вызовы во внешние API (которые долго могут отвечать (дольше 10 сек)) - через Шину
4. Вызовы API информационной базы 1С (тоже через шину), так как она имеет большую доступность, чем база (периоды обновлений и обслуживания)
По поводу мониторинга и логирования систем 1С используем коробочное решение: Оркестратор 1С систем
5. deevil 161 09.08.24 10:00 Сейчас в теме
(4) ждём тогда 2, 3, ... части)
6. Sibars 373 09.08.24 10:02 Сейчас в теме
(5) Как только будет что-то интересное и об этом можно будет рассказать - всенепременно)
Если есть конкретные вопросы - welcome в личку)
20. Deon 13.08.24 13:57 Сейчас в теме
(4)
2. Все запросы во внешние СУБД - через шину, так как в основном на 1С linux, где COM - недоступен, а внешние источники данных работают через ODBC драйвер и не всегда их удобно и можно использовать (те же логины/пароли находятся в базе 1С), а у шины прекрасно зарекомендовавший себя драйвер JDBC, + можно подкидывать свои, просто добавив файл.


Дмитрий, а как обходили асинхронность? Например, формирую отчет, который получает информацию из внешней СУБД. При компоновке результата кидаю нужный запрос в шину, а ответ придет асинхронно уже в другом сеансе. Как мне в запрашивающем сеансе получить этот ответ?
22. Sibars 373 13.08.24 15:14 Сейчас в теме
(20)
Для кейса получения отчета из внешней СУБД шина действительно не подходит. Обычно для таких кейсов мы используем системы BI и выгружаем данные из 1С в другие Strorage, в которые попадают необходимые данные и из других СУБД, а уже из них формируем отчеты.

По поводу асинхронности. С сервера можно оповестить клиента нативно только через настроенный сервер взаимодействия 1С.

В 26-ой платформе (пока тестовая), появилась возможность платформы вызвать оповещение с сервера 1С.

https://its.1c.ru/db/v8326doc#bookmark:dev:TI000002786
9. user2100248 09.08.24 22:39 Сейчас в теме
Здравствуйте!
Может есть успешный кейс внедрения шины для доставки данных в хранилища данных?
С инкрементом и блекджеком.
11. Sibars 373 10.08.24 20:56 Сейчас в теме
(9) Реального кейса не покажу, но был опыт настройки следующей схемы:

1. Из брокера сообщений RabbitMQ в шину поступает сообщение с телом JSON.
2. Шина разбирает, валидирует объект из полученного JSON, если объект невалиден - формирует сообщение в RabbitMQ.
3. Если валиден, то Шина формирует запрос в S3 хранилище (ceph) и отправляет его по http
4. В шине формируется новый объект с ограниченным количеством атрибутов в 1С канал и передает в базу 1С, вместе с ID расположения файла в бакете S3
10. gybson 10.08.24 17:24 Сейчас в теме
Который год уже ничего обнадеживающего по шине. Все статьи очень долго излагают простой тезис : "Она работает, но зачем еще не придумали". IBM например, сделали SOAP over MQ, на минуточку. Apache выкатил Qpid Proton и Flink. Т.е. вот вот обмен сообщениями в очередной раз скакнет. И эти с кроликом, который и без шины прекрасно работает.
12. Sibars 373 10.08.24 21:03 Сейчас в теме
(10) Мы нашли применение шины и она нас очень выручает при построении архитектуры в распределенном как географически, так и в используемых продуктах в ИТ ландшафте.
По сути Шина стала единой точкой входа в 1С и выхода из 1С данных, которая их валидирует, маршрутизирует и трансформирует.
Это позволило:
1. Исключить необходимость публикации баз 1С на веб-серверах (независимость размещения, легкость поддержки и обновлений, безопасность)
2. Исключить использование прямых запросов к другим СУБД из 1С (безопасность, удобство администрирования без доступа к базам 1С)
3. Не использовать внешние компоненты (COM, Native) (легкость в миграциях, обновлениях, автоматических раскаток образов машин 1С)
13. gybson 10.08.24 23:02 Сейчас в теме
(12) Нашли применение до покупки или после? Это важно.

Первый вопрос - исходящая информация, как она формируется. Дальше маршрутизация. Дальше 0 вопрос, как все системы могут понять информацию, какой существует общий словарь. Дальше вопрос коллективной разработки. Ну например в КД2 это боль, а в КД3 уже есть совместная разработка правил. Далее тестирование и отладка.

А далее то, до чего не многие доходят - как развернуть интеграцию для эксплуатации и тестов быстро в любом контуре.

Как до реальной работы доходит - про шину информации 0. Пустота. Все о чем Вы говорите, было сделано 20 лет назад, неинтересно, осуждено и исключено из пользования. Вы как будто с 7.7. перешли в 2024 году и Вам нормально.

Про отказ от внешних компонент вообще смешно. В недавнем релизе 1С разучилась с архивами ZIP работать и приехали, все переписывать.

Шина опоздала на 15 лет и это очень сложно изменить.
olexi2012; gofrom; +2 Ответить
15. Sibars 373 11.08.24 07:54 Сейчас в теме
(13)

Под данную архитектуру приобреталась шина, а не наоборот под шину делалась архитектура.
...
Про разворачивание, не вижу никаких слдожностей, для автоматической раскатки шины, что на windows, что на linux.
Хоть саму шину (как инстанс), хоть проект, в том числе добавление и передачу параметров.
...
Информации мало, потому что продукт молодой еще. В основном критика от тех, кто ее не пробовал, или пробовал, но не разобрался в ее работе.
18. gybson 11.08.24 11:58 Сейчас в теме
(15) Проблема не в том, что информации мало. Её не становится больше. С годами! Она еще не вышла толком, а уже легаси.
14. gybson 10.08.24 23:06 Сейчас в теме
(12)
Мы нашли применение шины и она нас очень выручает при построении архитектуры в распределенном как географически, так и в используемых продуктах в ИТ ландшафте.
По сути Шина стала единой точкой входа в 1С и выхода из 1С данных, которая их валидирует, маршрутизирует и трансформирует.
Это позволило:


Вы извините, но тут сразу читается пустая бравада, которая вызывает большое недоверие.
16. Sibars 373 11.08.24 08:06 Сейчас в теме
(14) Можно воспринимать как угодно, но если по пунктам, то, где мы заблуждаемся?

1. Если есть шина, и базы 1С могут с ней работать (реализованы сервисы интеграции), то публиковать эти базы на веб-сервере нет необходимости, если не используется web-client, так как http сервисы реализуются и публикуются на стороне шины.
После переезда базы 1С в другое место или при обновлении платформы, связь с шиной остается, без дополнительной конфигурации веб-сервера и файлов публикации.
2. Используя в шине JDBC коннектор и параметризируя подключения мы делаем запросы в СУБД на стороне шины, преобразуем результат и передаем в соответствующий канал 1С. Это позволяет отказаться от прямых запросов в другие СУБД из базы 1С.
Инициация запросов реализуется как служебными сообщениями из базы 1С в шину, либо по таймеру.
Соответственно мы не храним креды доступов к СУБД на стороне базы 1С - безопасность.
При необходимости модифицировать запрос - это делается на стороне шины, а не базы 1С.
3. Нет прямых запросов - нет внешних компонент, соответственно меньше зависимостей.
17. gybson 11.08.24 11:55 Сейчас в теме
(16) Вы зациклены на транспорте, который не является проблемой и задачей уже очень давно.

Перенос JDBC в шину это какой-то прикол наверное. Его вообще нельзя использовать, это очень сильная связанность, как куски ассемблера вставлять. А вы его еще и убрали подальше, где не каждый может посмотреть, проанализировать, исправить. Как это эксплуатировать?

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

Про безопасность тоже странно говорить. Чем защищенное хранилище в шине лучше защищенного хранилища сервера 1С, криптография сильнее или в чем преимущество?
19. RustIG 1749 13.08.24 11:30 Сейчас в теме
Для каждой базы наши разработчики и Product Owner-ы определили, какие метрики и health check’и должны быть получены

1. что за метрики?

2. ради чего затевалось использование 1с-шины?

3.
По данным ClickHouse мы в Grafana имеем красивый дашборд, который показывает абсолютно всю агрегационную информацию по журналу регистрации:

сколько у нас было соединений и фоновых заданий; - зачем это видеть?

сколько у нас было транзакций – какие из них были зафиксированы, а какие откатились; зачем это видеть?

сколько раз поменялся тот или иной объект метаданных – документ, регистр сведений и прочее; для отладки кода удобно - но если у вас типовая 1с - то вам это зачем?

сколько у нас было авторизаций успешных, а сколько – неуспешных зачем это ?.


в итоге все свелось к созданию http-сервисов ? - только на промежуточной базе (называемой 1С-Шина), хотя можно было в каждой базе этот сервис развернуть и использовать без 1с-шины...

Какие конкретно задачи были решены с помощью 1с-шины? Экономический эффект положительный от запуска 1с-шины? Мне показалось, что потратили ресурсов/денег много, а результат не описан - для каких подразделений это нужно было?

Например, у нас есть 1С:Документооборот, в котором появляется карточка нового контрагента, и связанные с ним файлы – сканы договора, сертификатов и прочее. Все это можно объединить в один объект и отправить в Шину, а уже на уровне Шины разложить, что:

карточка с установленными лимитами должна попасть в 1С:Управление Холдингом;

карточка с реквизитами контрагента – в 1С:Бухгалтерию предприятия;

а все файлы должны отправиться в хранилище S3.


это можно без шины реализовать - напрямую для трех баз расписать логику - правила хранить в справочнике УХ, согласно которым раскидывать по остальным базам нужную информацию....

Честно? - у вас получилась красивая презентация...
Но кажется вам доверили неограниченный бюджет для тестов и наладки.... Что далеко оторвано от жизни многих предприятий...

Что за предприятие у вас? - Боюсь, что это большой секрет....
21. Sibars 373 13.08.24 15:00 Сейчас в теме
(19)
в итоге все свелось к созданию http-сервисов ?

На момент выступления, в той организации, где это внедрялось и тестировалось было 17 рабочих (продовых) баз 1С на 6-ти кластерах - конфигурации как типовые, так и полностью самописные.

Предприятие финтех отрасли.

Шина нужна была для организации обмена с гарантированной доставкой сообщений, возникаемых при регистрации финансовых операций.

Логи гоняли для теста шины, о чем и рассказали в этой статье.
Дальше - запуск в шину бизнес событий.

Экономику предлагаю оставить за рамками данной публикации, но могу сказать, что затраты на конкретной организации себя полностью оправдали.

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

сколько у нас было транзакций – какие из них были зафиксированы, а какие откатились; - что операции выполняемые внутри фоновых заданиях выполнены в нужном объеме и без ошибок.

сколько раз поменялся тот или иной объект метаданных – документ, регистр сведений и прочее; - У нас нетиповые конфигурации или типовые, но переписанные. Показывает, что реализация нового функционала не дала излишнюю транзакционную нагрузку на базу.

сколько у нас было авторизаций успешных, а сколько – неуспешных - это уже вотчина информационной безопасности, что никто не пытается получить несанкционированный доступ или получает доступ из несанкицонированного места, не в то время и/или нев том количестве.

Метрики различные, например: количество активных сущностей в финансовом биллинге.

в итоге все свелось к созданию http-сервисов ? - нет, получилось много каналов, которые вообще не работают с http, например 1с - шина - 1С, 1С - шина - rabbit
23. Slava_prog 14.08.24 17:13 Сейчас в теме
Спасибо за статью!
Материал интересный и стиль изложения приятный !

Можно несколько вопросов/замечаний.
1. Хотелось бы скринов как выглядит интерфейс, база шины.
2. Упоминается возможность изменения сообщений. Там есть какой-то язык программирования ?
3. Скорость обработки сообщений - нет сравнения с другими системами и на каком железе замерялась.
Мне не кажется большой величина 16Мб в секунду, но я не знаю может это хороший показатель.
24. Sibars 373 14.08.24 18:35 Сейчас в теме
(23) Спасибо за приятную обратную связь)

1. Скринов уже не предоставлю этот проект завершен и доступа у нас к нему нет. Но в свободном доступе достаточно скринов рабочих областей шины.
2. Да, там реализован язык программирования 1С:Элемент
3. 16МБ текста это примерно объем всего текста книги "Война и Мир" в двух экземплярах :-) или 16*8 = 128 мегабит в сек.
25. Deon 22.08.24 08:33 Сейчас в теме
Дмитрий, столкнулся с такой проблемой:
При передаче данных через Шину, сообщения пролетают от отправителя до получателя, но сохраняются в виде файлов в Объектом хранилище приложения. И потом никаким образом не удаляются. Естественно, место на диске сервера шины быстро выедается.
Как боролись с такой проблемой?
26. Sibars 373 22.08.24 08:50 Сейчас в теме
(25)
Добрый день.
Длительность хранения сообщений, настраивается в панели управления приложением, в карточке процесс интеграции, в свойствах узла
...
Возможно, вы используете канал, хранящий сообщения, о его настройках можно посмотреть в документации здесь: ИТС: Документация
27. Deon 22.08.24 09:10 Сейчас в теме
(26)
В свойствах самого узла такой настройки не нашел.
Есть в настройках процесса интеграции в свойствах всей схемы: "Длительность хранения недоставленных сообщений в формате ДД.ЧЧ". Но ведь это про хранение именно недоставленных сообщений.

Черную стрелку в схеме интеграции проверил, галочка "канал, хранящий сообщения" не включена.
28. Sibars 373 22.08.24 09:31 Сейчас в теме
(27)
Приложил скриншот
Прикрепленные файлы:
29. Deon 22.08.24 09:54 Сейчас в теме
(28) А, понял о чем речь.
Во 2й версии Шины такой настройки нет )
30. Salimbek 13 29.08.24 13:30 Сейчас в теме
(29) Читаю сейчас документацию по Шине, там есть такой пункт:
https://its.1c.ru/db/esbdoc#content:60595:hdoc
В самом низу:
Удаление двоичных данных
После загрузки в хранилище двоичные данные не могут быть изменены. Допускается только изменение прикладных свойств данных.

Удалить двоичные данные может только «1С:Шина» в результате сборки мусора. Она автоматически контролирует время жизни данных. Как только на двоичные данные не остается хранимых ссылок (ДвоичныйОбъект.Ссылка), «1С:Шина» удаляет такие двоичные данные. Удаление выполняется с помощью функции сборки мусора, которая выполняется на сервере (вручную или по расписанию).
33. Deon 05.09.24 13:59 Сейчас в теме
(30) Да, спасибо, это оно.
Обновил шину на 4ю.
В объектное хранилище точно так же падают разные файлы сообщений и не удаляются сами.

В панели управления приложения у объектного хранилища можно выбрать "Выполнить сборку мусора". Файлы успешно удаляются.

Осталось только понять, как этот процесс можно сделать по расписанию? В самой панели управления шины никаких расписаний нет. Видимо, задание должно каким-то образом запускаться на сервере. прошерстил документацию, не нашел ничего.
31. kar911 04.09.24 22:05 Сейчас в теме
Подскажите какие системные требования вы выделяли под сервер прод, каких размеров достигает база шины?
Правильно ли я понимаю что в субд шины хранится конфигурация и сами сообщения пока их полностью не прочитают?
32. Sibars 373 04.09.24 22:16 Сейчас в теме
(31)
Характеристики прода были: 8 core (2,4Ghz), 10GB Ram, 150 Gb SSD
OS: Ubuntu 22.04
..
Конфигурация хранится в СУБД либо в файловом варианте (зависит от типа установки)
..
Сами сообщения хранятся на сервер шины (не в СУБД). Могут оставаться, даже после прочтения, настраиваемый параметр.
34. lada2011 06.09.24 09:20 Сейчас в теме
Продукт интересный. Хорошо работает, если есть готовые правила обмена между базами. В случае, если правила приходится создавать случаются проблемы. Возникают проблемы со "сквозным" обменом, например есть промежуточная база, которая собирает документы и передает из в другую базу. Приходится переделывать последовательный обмен в параллельный, т е схема 1 -2 - 3 переделываем в схему 1-2, 2-3. Из главных плюсов отказываемся от большого числа WEB -сервисов.
Оставьте свое сообщение