Воробьев Сергей

0
Рейтинг

Kembreg
Сергей Воробьев



  •   Регистрация: 26.01.2017 (6 лет назад)

  •   Был(а) на сайте: 23.05.2021

Подписчики 0

Комментарии

DevМногопоточность. Универсальный «Менеджер потоков» 2.1#70 20.05.21 14:58
(67) Пробую реализовать данный вариант - столкнулся с тем, что при данном варианте теряется часть "Обратной связи". Например перестают отрабатывать Сообщения пользователю в фоновом задании. В соответствующем окошке тишина. При вызове Функции ПриОбработкеПотоком(пПараметрыСобытия) если перед возвратом указываем

Код
 Сообщение = Новый СообщениеПользователю;
         Сообщение.Текст = СтрШаблон("Создан возврат %1",Документы.ВозвратТоваровОтКлиента.ПолучитьСсылку(Новый УникальныйИдентификатор(XmlСтрокаНаВозврат)));
         Сообщение.Сообщить();
         
         Возврат Документы.ВозвратТоваровОтКлиента.ПолучитьСсылку(Новый УникальныйИдентификатор(XmlСтрокаНаВозврат));


То строка появляется только при "обычном" вызове из формы, если мы выносим многопоточность в отдельное фоновое задание из транзакции проведения, то в окне сообщений тишина.

Я правильно понимаю, что пока единственный вариант контроля за результатом в режиме запуска в транзакции проведения, это всё-таки использование коллекций с автосборкой и возвратом результатов работы в удобной форме, и мириться со взаимоблокировками ресурсов, не используя обработку объекта и функцию ПриРасчетеРесурсов? Или всё таки есть способ увидеть результаты по всем ФЗ после обработки всех потоков обработки объектов?
DevМногопоточность. Универсальный «Менеджер потоков» 2.1#68 17.05.21 12:53
(67) Отличный вариант, благодарю
DevМногопоточность. Универсальный «Менеджер потоков» 2.1#65 14.05.21 16:46
(64)
В Журнале регистрации:

Фоновое задание. Запуск
Фоновое задание. Ошибка выполнения
{ОбщийМодуль.мпОбщееСервер.Модуль(133)}: Общий модуль "" не найден.
Сеанс. Завершение
Ошибка выполнения
{ОбщийМодуль.мпОбщееСервер.Модуль(133)}: "Менеджер потоков" - прервал выполнение

Нет, мы не планируем распараллеливать проведение документа. Данный документ у нас по сути выполняет функции Бизнес процесса, выполняет определенные действия над объектами, ссылки которых содержатся в табличной части в определенной последовательности, а флаг "проведён" устанавливается после успешного выполнения всех действий. И хотя данный функционал находится в обработке проведения, движений он не формирует, лишь свидетельствует об успешности. Для того чтобы избежать взаимоблокировок в процессе обработки объектов и используем вашу обработку, с табличной частью 3000 строк и более она дает отличные результаты ускорение в 3-4 раза, но пока не получается "последняя миля", место вызова

Прикрепленные файлы:

Untitled.png
DevМногопоточность. Универсальный «Менеджер потоков» 2.1#63 14.05.21 15:49
Добрый день.

Версия 2.1.0.1 (скачивали с другого аккаунта, ppeskov)

Есть ли какие то ограничения по месту вызова мпОсновнаяПрограммаВызовСервера.ИнициализироватьМенеджерПотоков(ПараметрыМП); ?

При размещении данного кода в модуле объекта в предопределенной процедуре ОбработкаПроведения инициализации не происходит, падает с ошибкой

Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.мпОбщееСервер.Модуль(133)}: "Менеджер потоков" - прервал выполнение
ВызватьИсключение ТекстСообщения;

ясности не прибавляет. Перенесли пока функционал в команду формы, работает без нареканий.

"Исторически так сложилось" что на основании табличной части документа в процессе проведения происходят "волшебные вещи", распараллеливание вашей конфигурацией творит в этом плане чудеса, хотелось бы все-таки попробовать перенести распараллеливание в проведение, не сильно при этом меняя текущую логику
DevШтрих-кодирование документов УТ 11#6 15.12.20 15:18
(5) Вам наверное уже неактуально, но вдруг искать кто будет - поиск это в нужном журнале сканируете номер и на нём сразу позиционируется
ВКPinkRabbitMQ - Native API компонента 1С с открытым исходным кодом, для обмена сообщениями через RabbitMQ#149 28.08.20 13:28
Попытки познать радость быстрого обмена на компоненте версии 1.9 пока ни к чему не привели.

Точки обмена создал, очереди связал. (листинг на Гите)
Попытка отправки и получения сообщения удивительно стабильна. Туда всё уходит, очередь при этом остается пустой.
Если используется листинг с сайта

Скрытый текст


то цикл беззастенчиво проскакивает, не заходя.

Если же убрать цикл и стукнуть просто

Код
Клиент.BasicConsumeMessage("", ОтветноеСообщение, ТегСообщения, 5)
 Клиент.BasicAck(ТегСообщения);
  Сообщить("Успешно! Из очереди прочитано сообщение " + ОтветноеСообщение);
 


то на выходе получим радостное "Успешно! Из очереди прочитано сообщение" без всяких следов ответа

ЧЯДНТ?
ВКPinkRabbitMQ - Native API компонента 1С с открытым исходным кодом, для обмена сообщениями через RabbitMQ#148 28.08.20 11:29
Обработка, приложенная к статье не работает с версией компоненты 1.9, из-за изменившегося третьего параметра в BasicConsumeMessage, вместо timeout там теперь MessageTag. Плюс на Гите в Readme.md есть замечательные рекомендации, которым почему то не следуют авторы в самой обработке и наконец приводят её к рабочему виду, которую уже можно показывать начальству и говорить "а давай мы данные во внешнюю систему логирования будем так передавать"