Гарантированный обмен 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 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

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

28500 руб.

15.11.2022    20696    21    49    

38

Поиск данных Внешние источники данных Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Если вам нужно автоматически генерировать представления (view) к вашей базе данных 1С (есть две версии - для СУБД MS SQL Server и для PostgreSQL) по структуре метаданных 1С, то вам необходима данная обработка. Наш "Генератор View", другими словами - это коннектор к данным 1С для Power BI - незаменимый помощник для бизнес-аналитиков, работающих с базами 1С из Yandex Datalens/Power BI и т.д. Работает для обычных и управляемых форм под 1С 8.3

230000 руб.

31.07.2020    13748    13    48    

25

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

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

48000 руб.

24.04.2017    51071    101    165    

89

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

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

60000 руб.

05.10.2022    10795    13    8    

15

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

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

84000 руб.

19.08.2020    25062    23    1    

25

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

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

10200 руб.

24.06.2021    20712    57    53    

35
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Mkonst 57 10.02.20 04:57 Сейчас в теме
Надо было написать про ограничение на объем отправляемых данных через MSMQ....
2. da_1c 188 10.02.20 09:01 Сейчас в теме
(1) с каким Вы столкнулись ограничением?
6. =Kollega= 5 11.02.20 13:36 Сейчас в теме
(2) в документации написано, максимальный размер сообщения 4Мб. Можно ужать текст во временный файл zip, который потом уже преобразовать в текст.
PS. Месье знает толк в извращениях ©
devtelscargo; +1 Ответить
9. da_1c 188 11.02.20 21:42 Сейчас в теме
(6) Проверил, да действительно до 4Мб пролазит, а если выше пишет "Недостаточно ресурсов для выполнения операции". Спасибо за информацию.
3. awk 744 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 188 14.02.20 20:32 Сейчас в теме
(10) Спасибо, что заметил. ))) Примеры резал из реального проекта и не все "почикал". Используется так: из номера сообщения получаю представление, которое мне нужно для удобного разбора потом при поддержке и присваиваю это представление сообщению

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

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