Имя: Пароль:
1C
1С v8
COM объекты, фоновые задания итд. Помогите подобрать оптимальное решение.
0 cube033
 
25.07.19
06:54
Самописная конфигурация. Платформа 8.3. Управляемые формы.
Много лет работает АРМ Весовщика автомобильных весов, суть которого проста: Программа получила данные весов, оператор заполнил несколько полей, нажал кнопку машина взвешана.
Реализовано это через обработчик ожидания (2 сек) и глобальную переменную, которая хранит COM объект весов. Каждая итерация состоит из опроса оборудования и логики.
Со временем это стало обрастать как логикой (контроль всего подряд, наряды итд) так и оборудованием: датчики позиционирования, идентификации, внешние табло итд
И вот я чувствую, что из-за обилии логики, работа с оборудованием задушена и идет медленнее, чем может. Хочу вынести её (работу с оборудованием) отдельно.
Первое решение, которое пришло в голову: фоновое задание и промежуточный регистр с результатами работы оборудования. Минус - негде хранить COM объекты и постоянно приходиться создавать/убивать экземпляры драйверов. Это работает, но не всегда хорошо, так как в самих драйверах работа завязана на таймерах и от момента создания до опроса - часто драйвер сам не успевает опросить оборудования - надо переписывать.
Как вариант можно запускать параллельный сеанс, который будет работать с оборудованием и в своем контексте хранить драйвера, но это дикий костыль.
Меня бы устроила просто многопоточность на клиенте, но толком не нашел примеров реализации.
Есть вроде вариант запускать с клиента (который хранит в контесте СОМ объекты) фоновые задания с передачей своих параметров, но там вроде передаются только сериализуемые объекты, если верить СП.
Может у кого-нибудь есть идеи как запареллелить работу логики и оборудования, сохраняя экземпляры драйверов между итерациями.
1 cube033
 
25.07.19
07:55
Забыл еще вариант, от которого меня коробит. При старте программы запускать фоновое задание, которое создаст все необходимые экземпляры драйверов и уйдет в бесконечный цикл с входом в тело по таймеру и выходом из цикла по внешнему условию (типа проверка константы или значения записи регистра). И хранение объектов есть и параллельная работа. Еще из плюсов - частота итераций не ограничена одной секундой как в случае с регламентными заданиями. Из минусов - бесконечный цикл кажется мне безусловным злом.
2 cube033
 
25.07.19
10:57
ап