Нужная информация в нужное время — смертельнее любого оружия.
Мир Дикого Запада (Westworld)
Человеку свойственно ошибаться,
но по настоящему всё запутать может только компьютер
ПЯТЫЙ ЗАКОН НАДЁЖНОСТИ
Расширение RMQ позволяет отсылать в RabbitMQ информацию из документов и справочников в реальном времени. Виды документов и справочников и реквизиты для передачи настраиваются на уровне пользователя без необходимости кодировать в 1С.
Несмотря на явную приверженность фирмы 1С к «монолитам» (посмотрите на ERP, например), процессы интеграции и обмена данными являются практически обязательными элементами любой более-менее крупной информационной структуры. И если вопрос обмена данными между типовыми конфигурациями можно решить встроенными средствами, то вот обмен с нетиповыми или вообще не с 1С приходится решать самостоятельно.
Вариантов обмена достаточно много, каждый имеет свои плюсы и минусы. Обмен через брокер сообщений RabbitMQ является очень привлекательной альтернативой «типовым» обменам через COM или файл. RabbitMQ бесплатен, жрет немного ресурсов, несложен в настройке и администрировании, есть версии и под windows и под linux. Кроме того, поддержка RabbitMQ есть на многих языках и платформах, 1С в данном вопросе скорее исключение, чем правило.
Конечно же, это не «1С-Шина», но «шина» и стоит как самолет, да и избыточна в большинстве сценариев интеграции.
Надо отметить, что для приверженцев http-сервисов выкусить кусок отправки данных в RabbitMQ и воткнуть туда post-запрос не составит особых затруднений. Функционал настройки состава отправляемых данных нисколько от этого не пострадает :-).
Представленное расширение RMQ работает на любой конфигурации на платформе 8.3.18+. В типовых конфигурациях обработка «Настройка RMQ» попадет в подсистему администрирование. В нетиповых конфигурациях расширение надо будет добавить через конфигуратор и при добавлении подсистему «Администрирование» из расширения удалить. Тогда обработка «RMQ настройка» будет доступна только из «Функции для технического специалиста».
Немного про возможности расширения. Для каждого вида документа можно настроить свой набор реквизитов для передачи, а так же свою очередь в RabbitMQ. Кроме того для данных типа «справочник» можно настроить набор параметров «по умолчанию». Это позволяет кроме передачи данных документа, передать и данные справочника. Для особо запущенных случаев, когда нужно собрать данные из нескольких документов, можно отсылать результат выполнения запроса (консоль запросов встроена в расширение). Для документов отрабатываются события «Проведение» и «Отмена проведения», для справочников «Запись» и «Удаление». И данные отправляются автоматически. Есть передача данных в ручном режиме. В этом случае кроме документов и справочников можно посылать документ или пакеты документов, элемент справочника или весь справочник (это может быть полезным при начале работы с интеграцией). Кроме того в «ручном» режиме можно посылать в RabitMQ результаты запросов, реестры переданных данных. Режим «сверка» позволяет сформировать пакет в котором в сокращенном виде будет присутствовать все настроенные документы.
Видео с примером настройки.
Поскольку 1С не поддерживает протокол AMQP, то приходится использовать внешнюю компоненту. Огромное спасибо Begemoth80.
Так же для получения данных из RabbitMQ необходимо использовать внешнюю компоненту. Кроме того необходимо написать код на принимающей стороне для обработки XML. Дополнительная обработка для Бухгалтерии, которая создает счета и акты из информации полученной из внешней системы, входит в комплект. На основе ее можно сделать и другие, необходимые Вам, обработки.
B надо не забыть раздать права пользователям. Для тех кто отсылает данные «RMQ_ОсновнаяРоль», для того, кто настраивает - «RMQ_Админ». Или настроить может Администратор системы с Полными правами.
За код прошу строго не ругать, по мере сил причесал, но писалось для себя, поэтому особо не заморачивались.
Проверялось на платформах: 8.3.23.1865, 8.3.22.1851.
Расширение работает в "боевом режиме" достаточно давно на типовых конфигурациях 1С:Бухгалтерия и 1С:ЗУП.