|
Обмен данными между сеансами | ☑ | ||
---|---|---|---|---|
0
held88
04.09.17
✎
10:09
|
Добрый день!
Задача следующая. Есть оборудование подключенное к компьютеру по ком-порту. Есть два сеанса 1С которые должны видеть данные с порта. Чтобы получить данные туда нужно отправить команду. Если речь идет об одном сеансе то без проблем. Но вот как реализовать данную задачу для нескольких пользователей одновременно? На ум пришло два решения. 1. Написать сервер оборудования, к которому будет по TCP подключатся каждый клиент и читать с него данные. (появляется в промежутке стороняя программа, которую писать не хотелось бы). 2. Запустить опрос оборудования в регламентном задании, а ответ ложить в регистр сведений. Но тоже ряд вопросов. Первый: как обработать внешнее событие в регламентном задании. Потому что команды на оборудование посылаются компонентой, она же в случае ответа инициирует внешнее событие, не важно будь то прямое соединение с ком-портом или с сервером оборудования по TCP. Далее не будет ли замедляться сильно работа 1С если запись в данный регистр будет происходить раз в 0.1 секунду? Далее выключении последнего сеанса можно проверить наличие записей и почистить регистр. Как можно решить данную задачу? |
|||
1
Aleksey
04.09.17
✎
10:14
|
зачем второму сеансу знать что получил первый?
|
|||
2
held88
04.09.17
✎
10:16
|
Потому что оборудование подключенное к ком порту может выполнять одновременно два разных действия, но одно и тоже не может. И второй сеанс должен знать не начал ли какую то операцию первый сеанс и если начал когда.
|
|||
3
dezss
04.09.17
✎
10:17
|
ИМХО, только писать в промежуточную таблицу (РС, Документ, что-то еще). Одновременно подключаться к одному ком-порту из разных сеансов нельзя же. Если кто-то уже данные прочитал, то другой их уже не увидит.
|
|||
4
held88
04.09.17
✎
10:20
|
(3) Ну да. Это понятно. Тогда вопрос как обработать ВнешнееСобытие на вызванную процедуру из Регламентного задания? В таком случае можно записать в регистр сведений данные. А документ не подойдет. Они же одновременно его открыть и работать с ним не смогут.
|
|||
5
dezss
04.09.17
✎
10:21
|
(4) изменять не смогут, а посмотреть смогут.
|
|||
6
held88
04.09.17
✎
10:23
|
(5) Возможно ли обработать внешнее событие регламентным заданием?
|
|||
7
dezss
04.09.17
✎
10:28
|
(6) а...ты про это...
так какая нафиг разница...ты в рег. задании слушаешь порт, если что-то появилось, то читаешь и пишешь куда тебе надо. Что РС, что документ, у него будет какое-то время жизни-актуальности. В любом случае, создавать новые/изменять должен один процесс, а остальные только читать. |
|||
8
mehfk
04.09.17
✎
10:30
|
(0) Пиши свою внешнюю прогу, которая будет писать в свою БД, а уже из этой БП 1с-ка будет читать.
|
|||
9
Aleksey
04.09.17
✎
10:35
|
(2) Т.е. весь сыр бор только из-за того что нельзя одновременно опрашивать устройство?
|
|||
10
Aleksey
04.09.17
✎
10:38
|
Т.е. вопрос только в регламентном задании которое читает данные + варианты решения из соседней темы
Отмена регл. задания при условии уже работающего. |
|||
11
Tateossian
04.09.17
✎
10:51
|
(0) КОМ-порт по своей природе может работать только на одном канале. (2) Это типичный паттерн Медиатор: имеется один "контроллер" и множество взаимодействующих объектов.
|
|||
12
Serg_1960
04.09.17
✎
10:57
|
Принцип чёрного ящика: есть вход и выход, что внутри - неважно.
Все сеансы пишут во "вход" (например в регистр сведений), записывая при этом уникальный номер к записи; регламентное задание читает "вход", отрабатывает задачу и пишет на "выход" (в регистр, может быть в тот-же самый), не забывая указывать уникальный номер записи и стирает запись по номеру на "входе"; сеансы, записав во "вход", ожидают появление на "выходе" ответа по уникальному номеру; читают его и стирают запись. Ну вот как-то так, особо не задумываясь. |
|||
13
held88
04.09.17
✎
11:01
|
(11) Вопрос не в этом. Вопрос как передать данные между сеансами.
|
|||
14
mistеr
04.09.17
✎
11:18
|
(13) Через константу, например.
|
|||
15
Tateossian
04.09.17
✎
11:33
|
(13) Для этого есть база данных. Пиши туда. Это место, где все сеансы обмениваются информацией.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |