![]() |
![]() |
![]() |
|
Подскажите как связать 1Сv8 и MSMQ | ☑ | ||
---|---|---|---|---|
0
serp1
25.12.07
✎
14:31
|
Всем привет!
Научился создать очередь: qinfo = Новый COMОбъект("MSMQ.MSMQQueueInfo"); qinfo.PathName = ".\private$\Test"; qinfo.Create(); а дальше не могу понять как отправить сообщение в очередь и как прочитать. Пробую: qinfos = Новый COMОбъект("MSMQ.MSMQQueueInfos"); query = Новый COMОбъект("MSMQ.MSMQQuery"); qinfos = query.LookupQueue("Test"); qinfo = qinfos.Next; Если qinfo = null Тогда Сообщить("Очередь не найдена") КонецЕсли; на строке: qinfos = query.LookupQueue("Test"); вылезает ошибка: Ошибка при вызове метода контекста (LookupQueue): Произошла исключительная ситуация (MSMQQuery): Недопустимая строка с указанием класса Помогите кто может простеньким примерчиком. Спасибо. |
|||
1
Биньковский Виталий
25.12.07
✎
14:39
|
||||
2
serp1
25.12.07
✎
15:23
|
да по этой статье и учусь, но непонятно
Dim query As New MSMQQuery Dim qinfos As MSMQQueueInfos Set qinfos = query.LookupQueue(Label:="Test") Label это вроде метка очереди но как последнюю строку переписать на 1С? |
|||
3
SilentMan
25.12.07
✎
15:27
|
На ИТС есть пример работы с MSMQ и ВебСферой в контексте отправки и приема сообщений распределенки ...
|
|||
4
Кураж
25.12.07
✎
15:29
|
(0) "Проф. разработку" читал?...
|
|||
5
serp1
25.12.07
✎
15:43
|
спасибо SilentMan нашел пример
|
|||
6
serp1
25.12.07
✎
15:44
|
(4) а что такое "Проф.разработка"?
|
|||
7
Кураж
25.12.07
✎
15:46
|
(6) Книжка такая толстая по восьмерке, там на эту тему есть, если не ошибаюсь...
|
|||
8
serp1
25.12.07
✎
15:47
|
спасибо попробую найти, посмотреть
|
|||
9
Биньковский Виталий
25.12.07
✎
15:52
|
лови сырцы из проф. разработки
Процедура КнопкаВыполнитьНажатие(Кнопка) // Флаги MQ_SEND_ACCESS = 2; MQ_DENY_NONE = 0; qinfo = Новый COMОбъект("MSMQ.MSMQQueueInfo"); ОчередьОбменаMSMQ = ".\MyLocale"; ИмяФайлаСообщения = "data.xml"; // Формируем путь к очереди на удаленном компьютере qinfo.PathName = ОчередьОбменаMSMQ + "_" + "ЦентрОфис"; // Если очередь не создана, создаем Попытка qinfo.Create(); Исключение КонецПопытки; // Открываем очередь на запись Очередь = qinfo.Open(MQ_SEND_ACCESS, MQ_DENY_NONE); ДанныеОбмена = Новый ЧтениеТекста; ДанныеОбмена.Открыть("c:\out.xml"); // Создаем сообщение, содержащее данные обмена Сообщение = Новый COMОбъект("MSMQ.MSMQMessage"); Сообщение.Label = ИмяФайлаСообщения; Сообщение.Body = ДанныеОбмена.Прочитать(); Сообщение.ResponseQueueInfo = qinfo; // Помещаем сообщение в очередь Сообщение.Send(Очередь); Сообщить(" - Помещен файл " + ИмяФайлаСообщения + " в очередь " + ОчередьОбменаMSMQ); Очередь.Close(); ДанныеОбмена.Закрыть(); КонецПроцедуры |
|||
10
Биньковский Виталий
25.12.07
✎
15:53
|
ещё
Процедура Загрузить(Кнопка) // Флаги MQ_DENY_NONE = 0; MQ_RECEIVE_ACCESS = 1; MQ_NO_TRANSACTION = 0; ОчередьОбменаMSMQ = ".\MyLocale"; qinfo = Новый COMОбъект("MSMQ.MSMQQueueInfo"); // Находим позицию начала имени очереди в АдресОбменаMSMQ // Хотя в нашем случае могли установить Индекс=2 Индекс = СтрДлина(ОчередьОбменаMSMQ); Пока (Индекс <> 0) Цикл Если Сред(ОчередьОбменаMSMQ, Индекс, 1) = "\" Тогда Прервать; КонецЕсли; Индекс = Индекс - 1; КонецЦикла; // Собираем путь к очереди для чтения данных обмена // В нашем случае qinfo.PathName = ".\MyLocale_ЦентрОфис" qinfo.PathName = ".\" + Прав(ОчередьОбменаMSMQ, СтрДлина(ОчередьОбменаMSMQ) - Индекс) + "_" + "ЦентрОфис"; Попытка qinfo.Create(); Исключение КонецПопытки; // Открываем очередь Очередь = qinfo.Open(MQ_RECEIVE_ACCESS, MQ_DENY_NONE); // Временный объект необходим для поиска последнего сообщения СообщениеВрем = Новый COMОбъект("MSMQ.MSMQMessage"); // Читаем первое сообщение СообщениеВрем = Очередь.Receive(MQ_NO_TRANSACTION, , , 0); Пока (СообщениеВрем <> Неопределено) Цикл Сообщение = СообщениеВрем; // Читаем последующие сообщения, если они присутствуют СообщениеВрем = Очередь.Receive(MQ_NO_TRANSACTION, , , 0); КонецЦикла; // Закрываем очередь Очередь.Close(); // Если получили сообщение, разбираем его и передаем данные обмена // дальше для обработки Если Сообщение <> Неопределено Тогда ИмяФайлаСообщения = Сообщение.Label; ФайлОбмена = Новый ЗаписьТекста("c:\input.xml"); ФайлОбмена.Записать(Сообщение.Body); ФайлОбмена.Закрыть(); Сообщить(" - Принят файл обмена данными " + ИмяФайлаСообщения + " из очереди " + ОчередьОбменаMSMQ); КонецЕсли; КонецПроцедуры |
|||
11
Биньковский Виталий
25.12.07
✎
15:55
|
больше там ничего нет, есть WSMQ
|
|||
12
serp1
25.12.07
✎
16:04
|
Спасибо всем, разобрался
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |