Гарантированный обмен 1С с внешними системами через сервер очередей Microsoft MSMQ

22.09.24

Интеграция - Внешние источники данных

Описание решения задачи организации обмена 1С с внешними системами с условием гарантированной доставки сообщений и независимой поддержкой архивов сообщений. Быстрый ответ: сервер очередей Microsoft MSMQ.

Вводная:

Организовать обмен 1С с внешней системой со следующими условиями и ограничениями:

  • Гарантированная доставка сообщений, когда сообщение не может считаться принятым пока не придет ответ от второй системы
  • Сервис обмена должен поддерживать архивы сообщений и быть независим как от 1С, так и от внешней системы
  • Внешняя система не умеет работать с HTTP сервисами 1С (да бывает и такое)
  • 1 сообщение из 1С может быть предназначено сразу нескольким разным внешним системам

В процессе поиска подходящего решения наткнулся на интересные примеры в демо конфигураций 1С «Обмен данными», где приложены примеры работы с сервером очередей сообщений Microsoft MSMQ.

MSMQ – компонент любой современной ОС от Microsoft даже не серверной. Из преимуществ MSMQ: бесплатный, поддерживает транзакции, имеется архив принятых/переданных сообщений, параллельные очереди для разных систем и случаев, тригеры сообщений, возможность авторизации отправителей и получателей сообщений, включая доменную аутентификацию.

Описание решения

В первую очередь нужно инсталировать компонент MSMQ на том компьютере, где будет висеть служба сервера очередей, это может быть, как локальный компьютер, так и любой в сети.

После добавления компонента он будет доступен в разделе Управление компьютером – Службы и приложения – Очередь сообщений.

Создаем частную очередь – имя очереди на английском, без пробелов и спец символов. Как настроить сервер MSMQ: права доступа, место хранения, транзакции, триггеры, размер сообщений, размер хранилища – см. разделы помощи на сайте Microsoft и внимательно читайте в отладке какие ответы будете получать от сервера MSMQ в 1С. Так выглядит очередь сервера MSMQ в который мы из 1с отправили сообщение.

Как реализовано в 1С:

Регистрацию изменений я сделал на своем Плане обмена 1С с ручной регистрацией изменений. Далее примеры кода в модуле объекта Плана Обмена, когда произошло событие регистрации или по расписанию нужно прочитать изменения с сервера сообщений.

Формируем строку XML и передаем серверу MSMQ.

 
 Поместить Данные Обмена В Очередь MSMQ

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

 
 Получить Прочитать Сообщение Из Очереди MSMQ

В заключение:

Разработка велась на версиях Платформы 8.3.14.ххх. Приведенные примеры должны работать на любой конфигурации, желательно с БСП 2.4.4.166

Другие мои публикации на Инфостарте:

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

планобмена msmq обмен гарантированная доставка

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

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

См. также

Внешние источники данных Разработчик Аналитик Пользователь 1С:Предприятие 8 1C:Бухгалтерия Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

35000 руб.

15.11.2022    33785    53    49    

51

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 10 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

85400 руб.

05.10.2022    14552    17    8    

17

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Разработчик 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

122000 руб.

19.08.2020    30605    28    3    

29

Внешние источники данных Зарплата Бюджетный учет Разработчик Бухгалтер 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 7.хх учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

85400 руб.

24.04.2017    57637    99    165    

91

Производство готовой продукции (работ, услуг) Внешние источники данных 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Лесное и деревообрабатывающее хозяйство Россия Управленческий учет Платные (руб)

Обработка предназначена для загрузки файлов, выгруженных из системы Базис-мебельщик, в справочник 1С "Спецификации" для последующих процессов учета и диспетчирования полуфабрикатов и изделий.

10370 руб.

24.06.2021    26830    66    55    

48

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

Внешняя обработка «Загрузка документов из eФарма» создана для программы 1С:Бухгалтерия предприятия, редакция 3.0 (версии Базовая, Проф и Корп). Обработка позволяет загружать документы в базу 1С из файлов выгрузки, имеющих формат .DBF, которые создаются в программе eФарма или eФарма2, а также из любых других программ, формирующих файлы-выгрузки с таким же расширением.

9760 руб.

15.03.2024    2863    5    0    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Mkonst 58 10.02.20 04:57 Сейчас в теме
Надо было написать про ограничение на объем отправляемых данных через MSMQ....
2. da_1c 202 10.02.20 09:01 Сейчас в теме
(1) с каким Вы столкнулись ограничением?
6. =Kollega= 8 11.02.20 13:36 Сейчас в теме
(2) в документации написано, максимальный размер сообщения 4Мб. Можно ужать текст во временный файл zip, который потом уже преобразовать в текст.
PS. Месье знает толк в извращениях ©
devtelscargo; +1 – Ответить
9. da_1c 202 11.02.20 21:42 Сейчас в теме
(6) Проверил, да действительно до 4Мб пролазит, а если выше пишет "Недостаточно ресурсов для выполнения операции". Спасибо за информацию.
3. awk 745 10.02.20 09:24 Сейчас в теме
qinfo.FormatName = "DIRECT=OS:"+ОчередьОбменаMSMQ;


Это плохая идея. Т.к. вместо OS может стоять TCP, UDP, HTTP, HTTPS, плюс отправлять можно сразу в N очередей (если адреса перечислить через запятую).
4. kirill_sh 2 10.02.20 09:46 Сейчас в теме
лучше кролик использовать, с другой стороны это уже есть в системе.
5. kiruha 389 11.02.20 11:31 Сейчас в теме
Да, вопрос - почему не RabbitMQ?
Есть какие то причины ?
o.nikolaev; +1 – Ответить
7. =Kollega= 8 11.02.20 13:39 Сейчас в теме
(5) MSMQ уже есть в системе - стандартная штука. А RabbitMQ еще поставить надо.
8. =Kollega= 8 11.02.20 13:46 Сейчас в теме
Чтение сообщений для 1С с сервера MSMQ


Если обмен нечастый, то ИМХО лучше использовать триггеры, чем регламентное задание. Чтобы при появлении нового сообщения в очереди, происходил запуск 1с и его разбор. А не постоянно на сервере 1с болталось бы задание регулярно проверяя, а не пришло ли нам что-нибудь....
10. Cyberhawk 135 14.02.20 18:40 Сейчас в теме
Зачем у метода "ПоместитьДанныеОбменаВОчередьMSMQ" второй параметр?
11. da_1c 202 14.02.20 20:32 Сейчас в теме
(10) Спасибо, что заметил. ))) Примеры резал из реального проекта и не все "почикал". Используется так: из номера сообщения получаю представление, которое мне нужно для удобного разбора потом при поддержке и присваиваю это представление сообщению

т.е. код в примере статьи Сообщение.Label = "Message" + СокрЛП(УзелИсточник.Код) + "_" + СокрЛП(УзелПриемник.Код) + СокрЛП(Постфикс) + ".xml";

можно дополнять номером сообщения.
12. poyson 18.11.21 16:25 Сейчас в теме
Подскаите, а с Azure Queue Storage не работали случайно?
Для отправки сообщения требуется регистрация/авторизация