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