![]() |
|
Доступ к внешней компоненте во всей конфигурации | ☑ | ||
---|---|---|---|---|
0
Alex_
Alexsin_2020 29.03.21
✎
15:03
|
Всем привет!
Подскажите можно ли и как) 1С 8,3 УФ конфигу пишу с 0 смысл таков пишу рабочее место кассира подключаю терминал так вот терминал нужно слушать вразных моудлях но при этом сессия (назовем ее так) должна быть одна смысл таков подключить и заюзать команду Соединить() я могу только один раз (конечно как Вариант всегд аюзать разьединить) но нельзя бы один раз гд ето в переменную поместить уже соединение ивызывать эту переменную в любом месте? Путь = "d:\yar\"; ProgID = "AddIn.YarusG"; Если подключитьВнешнююКомпоненту(ProgID) Тогда Ярус = Новый (ProgID); аа = Ярус.Соединить("192.168.001.152",3390,Путь); Сообщить(аа); Иначе Сообщить("Не удалось подключить драйвер"); Возврат; КонецЕсли; |
|||
1
Garykom
гуру
29.03.21
✎
15:08
|
>конфигу пишу с 0
>пишу рабочее место кассира пошел за попкорном |
|||
2
Garykom
гуру
29.03.21
✎
15:10
|
(0) Ты про клиент-сервер 1С хотя бы в курсе?
Сча модно 8.3 УФ даже файловые через веб-сервер |
|||
3
Garykom
гуру
29.03.21
✎
15:11
|
(0) А этот твой "192.168.001.152",3390 что сделает если к нему с двух одновременно стукнуться?
|
|||
4
Kassern
29.03.21
✎
15:11
|
(0) Можешь при начале сеанса твое оборудование подключить и в глобальную переменную его впихнуть, но я бы так делать не стал. Лучше пихай в РМКассира при открытии типо такого МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода"); Драйвер можешь пихнуть в макет общий и из него подключать. При закрытии формы МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
|
|||
5
Kassern
29.03.21
✎
15:13
|
(0) лучше возьми последнюю БСП и на ее базе пиши свою конфу "с 0"...
|
|||
6
Garykom
гуру
29.03.21
✎
15:14
|
(5) Лучше взять Розницу и ничего не писать почти
|
|||
7
Kassern
29.03.21
✎
15:16
|
(6) так не интересно, видно же ТС полюбаться с конфигуратором хочет и написать свою нетленку)
|
|||
8
sitex
naïve
29.03.21
✎
15:20
|
(3) Стукнуться и разойдутся :)
|
|||
9
Alex_
Alexsin_2020 29.03.21
✎
15:22
|
(3) Ругнется матом )
|
|||
10
Alex_
Alexsin_2020 29.03.21
✎
15:24
|
Ребята взять типовое не предлагать!
КОнфига уже разработана и работает с Сентой (кассой) все классно но хотят что бы я подрубил еще и терминал туда проблема вся в том что мне нужно мониторить то что делается на терминале и на кассе каждые nn сек и проще было бы реализовать отдельно от обработки методы подключения и работы с каждой операцией в общем модуле потом сервер с этими дравами не работает только на клиенте! |
|||
11
Alex_
Alexsin_2020 29.03.21
✎
15:25
|
я сырой в 8-ке
подскажите в общих модулях есть перечисление (Повторное использование возвращаемых значений) это может мне подойти и если да то подскажите как это юзать? |
|||
12
Kassern
29.03.21
✎
15:28
|
(10) я же тебе написал как делать в (4). При открытии формы подключай оборудование, при закрытии - отключай. Создай общий модуль, в котором будут экспортные функции для подключения/отключения оборудования. Драйвер желательно загрузи в макет, чтобы с любого места цепляться без проблем.
|
|||
13
Kassern
29.03.21
✎
15:28
|
(12) В ОбработкаОповещения модуле лови события с устройства.
|
|||
14
Alex_
Alexsin_2020 29.03.21
✎
15:31
|
(12) извините пока писал не заметил )
но это Вы мне типовое решение говорите у меня то самописная и этих модулей няма ( а вот если даже выдирать то я не понимаю типовых ( мне проще было написать нетиповую :-) |
|||
15
Alex_
Alexsin_2020 29.03.21
✎
15:33
|
нельзя ли в общем модуле
задать что то типа Перем Ярус; и далее функция Путь = "d:\yar\"; ProgID = "AddIn.YarusG"; Если подключитьВнешнююКомпоненту(ProgID) Тогда Ярус = Новый (ProgID); аа = Ярус.Соединить("192.168.001.152",3390,Путь); Сообщить(аа); Иначе Сообщить("Не удалось подключить драйвер"); Возврат; КонецЕсли; в (11) я писал о повторных вызовах можно ли вызывать только перем? тоесть я при начале работы выполняю функцию подключения и далее могу ли тупо получать перем? |
|||
16
Alex_
Alexsin_2020 29.03.21
✎
15:34
|
Можешь при начале сеанса твое оборудование подключить и в глобальную переменную его впихнуть, но я бы так делать не стал. (Почему)
и как впихнуть то в глобалную перем? и можно ли эту перем обнолвтяь? смысл в том что если провод вырвали? и затем нажмали переподключиться? |
|||
17
Масянька
29.03.21
✎
15:36
|
(16) 1. (да и все остальное) - это не семерка! Концепция другая.
|
|||
18
Alex_
Alexsin_2020 29.03.21
✎
15:39
|
(16) а семерка здесь причем?
|
|||
19
Alex_
Alexsin_2020 29.03.21
✎
15:39
|
что есть глобальная переменная?
|
|||
20
Kassern
29.03.21
✎
15:40
|
(16) Создаешь в модуле сеанса переменную экспортную типа глПодключаемоеОборудование. И ПриНачалеРаботыСистемы в процедуре инициализируешь
|
|||
21
Kassern
29.03.21
✎
15:41
|
(19) это переменная перед процедурами в модуле приложения типа Перем глПодключаемоеОборудование Экспорт;
|
|||
22
Kassern
29.03.21
✎
15:42
|
(10) ну раз касса уже работает, смотришь как реализованно подключение, и делаешь аналог, делов то
|
|||
23
Alex_
Alexsin_2020 29.03.21
✎
15:44
|
(1) попкорна много? :-)
я уж еуходит ьсобрался ) |
|||
24
Alex_
Alexsin_2020 29.03.21
✎
15:46
|
(22) прогу писал я и подключение делал в модуле формы обработки но получился оооочень длинный моудль у формы и мне уже трудно работать с кодом
хочу разделить код раоты кассы и терминала по разным общим модулям (20) модуле сеанса разв ене сервер ли? |
|||
25
Alex_
Alexsin_2020 29.03.21
✎
15:54
|
В общем создал общий модуль "МетодыРаботыСТерминалом" Устанвоил флаг Клиент (Упр.П)
создал экспортную функцию &НаКлиенте Функция ПодключитьТерминал() Экспорт Перем Ярус; Если Ярус = Неопределено Тогда Путь = "d:\yar\"; ProgID = "AddIn.YarusG"; Если подключитьВнешнююКомпоненту(ProgID) Тогда Ярус = Новый (ProgID); Ярус.Соединить("192.168.001.152",3390,Путь); Возврат Ярус; Иначе Возврат Ярус; КонецЕсли; КонецЕсли; Возврат Ярус; КонецФункции вроде работает ))) или я чт от оне верно сделал? |
|||
26
Kassern
29.03.21
✎
15:54
|
(24) ну так раздели, в чем проблема? Создаешь общий модуль для оборудования, может несколько (для клиента/сервера). Пихаешь туда свои процедуры подключения, делаешь их экспортными и вуаля. В модуле формы будет просто Ярус=ТорговоеОборудование.ПодлкючитьОборудование(ПараметрыПодключения)
|
|||
27
Kassern
29.03.21
✎
15:56
|
(25) А зачем тебе Путь = "d:\yar\"?
|
|||
28
Alex_
Alexsin_2020 29.03.21
✎
15:58
|
(27) туда библа ложит текстовой файл чека :-)
который я затем разбираю и печатаю ка кнефискальный чек на кассе (26) выше в (250 верно ли будет? прост омне не нужно постоянно подрубаться а только раз либо еще раз если отвалились |
|||
29
Kassern
29.03.21
✎
16:01
|
(28) В модуле приложения создай глобальную переменную и при начале работы системы в процедуре ее заполни типа, глЯрус=МетодыРаботыСТерминалом.ПодключитьТерминал(); А далее если глЯрус<> неопределенно тогда используй его в качестве подключения, иначе делай новое подключение.
|
|||
30
Kassern
29.03.21
✎
16:03
|
(28) и лучше переменные с путем и айпишник засунь в константы либо в какой нить регистр сведений. И сделай заполнение через пользовательский интерфейс. Завтра айпишник поменяется, у тебя все колом встанет, пока ты конфигуратор не обновишь.
|
|||
31
Kassern
29.03.21
✎
16:05
|
(25)
Перем Ярус; Если Ярус = Неопределено Тогда //// зачем это? У тебя Ярус всегда будет неопределено в таком случае. Ты только что создал переменную и проверяешь заполнена она или нет... |
|||
32
Alex_
Alexsin_2020 29.03.21
✎
16:06
|
(30) эти данные лежат в Настройках юзера а ссыль на него в в параметрах сеанса
а разве модуль приложения не Сервер? мне то клиент нужен |
|||
33
Alex_
Alexsin_2020 29.03.21
✎
16:07
|
(31) так работает же
сперва то Ярус = неопределено а затем я ее подключаю после если неравно то проходим мимо и возвращаем ее что не так? |
|||
34
fisher
29.03.21
✎
16:09
|
(25) Оно будет подключаться в том месте, откуда вызываешь. Если одновременно из двух открытых форм попробуешь работать - будет два подключения (если компонента это позволяет). Если хочешь именно одно подключение на сеанс, тогда надо через экспортную переменную модуля приложения работать, как выше советовали.
|
|||
35
Alex_
Alexsin_2020 29.03.21
✎
16:10
|
глЯрус то же работает спасибо!
но чем это чревато то? |
|||
36
Alex_
Alexsin_2020 29.03.21
✎
16:12
|
(34) именно так я и представил себе НО
создал вторую обработку сперва попробовал выполнить операцию оплаты предварительно поставил точки останова на возврате значений так вот затем открыл вторую обработку и вот что вышло пр иоткрытии первой я вошел на точку останова а при открытии второ нет но при этом из второй так же вс еработает |
|||
37
Alex_
Alexsin_2020 29.03.21
✎
16:14
|
в любом случае и при моей реализации как в (25) и при Модуле приложения все работает Спасибо за решение
до скорых встреч :-) |
|||
38
Alex_
Alexsin_2020 29.03.21
✎
16:14
|
это то что мне нужно было )
|
|||
39
Alex_
Alexsin_2020 29.03.21
✎
16:14
|
(1) как попкорн?
|
|||
40
Alex_
Alexsin_2020 29.03.21
✎
16:20
|
еще вопрос
могу ли я в переменную впихнуть не одну переменную а в ТЧ настройки пути, драва кассы и драва терминала структуру короче? |
|||
41
Kassern
29.03.21
✎
16:24
|
(39) Смотри что ты пишешь...
&НаКлиенте Функция ПодключитьТерминал() Экспорт Перем Ярус; Если Ярус = Неопределено Тогда Путь = "d:\yar\"; ProgID = "AddIn.YarusG"; Если подключитьВнешнююКомпоненту(ProgID) Тогда Ярус = Новый (ProgID); Ярус.Соединить("192.168.001.152",3390,Путь); Возврат Ярус; Иначе Возврат Ярус; КонецЕсли; КонецЕсли; Возврат Ярус; КонецФункции ////////////// По факту: 1)если ты пишешь Перем Ярус; в начале, то она будет равна Неопределено всегда! Следовательно дальше условие бесполезное, тебе надо использовать глобальную переменную, либо параметр функции. 2) Зачем ты 3жды возвращаешь ярус? Зачем так писать? ты в любом случае его вернешь последним возвратом. 3) у тебя явно прописан IP и путь. И это в маленьком куске кода... |
|||
42
Kassern
29.03.21
✎
16:26
|
(40) так и надо делать, присваиваешь своей переменной глЯрус к примеру структуру и заполняешь ее.
|
|||
43
Kassern
29.03.21
✎
16:28
|
(42) в типовой торговле переменная глПодключаемоеОборудование создается следующим образом.
глПодключаемоеОборудование = Новый Структура(); глПодключаемоеОборудование.Вставить("ДрайвераПодключаемогоОборудования", Новый Соответствие()); глПодключаемоеОборудование.Вставить("ПараметрыПодключенияПО" , Новый Массив()); глПодключаемоеОборудование.Вставить("ПоследнийСлипЧек" , ""); глПодключаемоеОборудование.Вставить("ЗавершениеРаботыСистемы" , Ложь); /// Далее уже при работе с оборудованием заполняется данная переменная |
|||
44
Alex_
Alexsin_2020 29.03.21
✎
16:29
|
(41) 3) у тебя явно прописан IP и путь. все верно я не стал заморачиваться и для теста написал статику
|
|||
45
Alex_
Alexsin_2020 29.03.21
✎
16:31
|
(43) все понял спасибо!
|
|||
46
Alex_
Alexsin_2020 29.03.21
✎
16:31
|
так и сделаю )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |