Гарантированный обмен 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 обмен гарантированная доставка

См. также

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

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

28500 руб.

15.11.2022    22013    23    49    

39

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

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

84000 руб.

24.04.2017    52027    104    165    

91

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

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

120000 руб.

19.08.2020    25901    25    1    

27

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

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

84000 руб.

05.10.2022    11350    13    8    

15

Внешние источники данных Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Готовая интеграция для управляемых форм. Встраивается в вашу 1С как расширение. Реализует автоматический обмен данными между 1С (1С:Фитнес клуб и аналогов) и СКУД RusGuard, автоматизирует бизнес-процессы по созданию и учету сотрудников в СКУД. Значительно упрощает работу специалистов отдела кадров и отдела безопасности: избавляет от двойного ввода информации в 1С и СКУД.

94999 руб.

11.07.2024    1039    1    0    

3

Зарплата Внешние источники данных Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

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

120000 руб.

07.06.2021    13485    2    3    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Mkonst 57 10.02.20 04:57 Сейчас в теме
Надо было написать про ограничение на объем отправляемых данных через MSMQ....
2. da_1c 189 10.02.20 09:01 Сейчас в теме
(1) с каким Вы столкнулись ограничением?
6. =Kollega= 5 11.02.20 13:36 Сейчас в теме
(2) в документации написано, максимальный размер сообщения 4Мб. Можно ужать текст во временный файл zip, который потом уже преобразовать в текст.
PS. Месье знает толк в извращениях ©
devtelscargo; +1 Ответить
9. da_1c 189 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 388 11.02.20 11:31 Сейчас в теме
Да, вопрос - почему не RabbitMQ?
Есть какие то причины ?
o.nikolaev; +1 Ответить
7. =Kollega= 5 11.02.20 13:39 Сейчас в теме
(5) MSMQ уже есть в системе - стандартная штука. А RabbitMQ еще поставить надо.
8. =Kollega= 5 11.02.20 13:46 Сейчас в теме
Чтение сообщений для 1С с сервера MSMQ


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

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

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