|
Обработки обслуживания. Голову изломал. Как? | ☑ | ||
---|---|---|---|---|
0
abuca
16.01.17
✎
20:21
|
Есть, к примеру, Розница 2.2 или УТ 11
Как подключить самописную обработку обслуживания? Конкретно, дисплей покупателя POSUA lpos_usb_vfd Написал обработку, пишет, стирает, мультики показывает, анекдоты травит... Как прикрутить-то теперь? ЗЫ. Если раньше писали программы, то теперь сутками думаем, как сделать вызовы асинхронными, отвязать от модальности, передать на сервер... Подключить, блин, обработчик... |
|||
1
abuca
16.01.17
✎
21:01
|
Понял...
Путь только такой. Если Проф. Через расширение с заимствованием "ПодключаемоеОборудованиеУниверсальныйДрайверКлиент" и &Вместо("ВывестиСтрокуНаДисплейПокупателя") // использование аннотации &Вместо подменит их процедуру моей. Функция ВывестиСтрокуНаДисплейПокупателя_(ОбъектДрайвера, Параметры, ПараметрыПодключения, СтрокаТекста, ВыходныеПараметры) А здесь я уже постараюсь))) |
|||
2
abuca
16.01.17
✎
21:04
|
Не совсем обработка получилась.
Но так даже еще проще. Пиши в модулях, как по старинке, и подменяй. И радуйся. А подключается потом на раз-два. |
|||
3
vde69
16.01.17
✎
21:13
|
если есть событие внутри обьекта (внутри драйвера) его можно переопределить на процедуру в 1с...
я так делал например переопределение события ворда "при закрытии" |
|||
4
Torquader
16.01.17
✎
21:19
|
Там, насколько я помню, есть другое оборудование с возможностью указать внешнюю обработку обслуживания - по крайней мере в УТ11 такое было - будет работать внешняя обработка - для всего остального же будет внутренняя, то есть встроенная в конфигурации.
|
|||
5
abuca
16.01.17
✎
21:29
|
(4) Есть только: "Драйверы оборудования"- "Подключаемые по стандарту совместимо" - Туда загоняем dll-ки, которые лояльные производители лепят по требованиям 1С, чтобы работал общий модуль "ПодключаемоеОборудованиеУниверсальныйДрайверКлиент"
где перенаправляется команда на подключенную по стандарту DLL-ку В отладчике проследил всю цепочку. Т.е. работают встроенные модули с обработчиками (1С, Штрих, Атол, Сканчегототам) и Универсальный, который работает непосредственно с DLL Сейчас допилю, код скину расширения с дисплеем |
|||
6
abuca
16.01.17
✎
21:32
|
Вот!
Всего за полчаса собрал с расширением: #Область ПроцедурыИФункцииОбщиеДляДисплеевПокупателя // Функция осуществляет вывод списка строк на дисплей покупателя. // &Вместо("ВывестиСтрокуНаДисплейПокупателя") Функция ВывестиСтрокуНаДисплейПокупателя_Подменяемая(ОбъектДрайвера, Параметры, ПараметрыПодключения, СтрокаТекста, ВыходныеПараметры) Результат = Истина; нн= ПодключитьВнешнююКомпоненту("AddIn.lpos_usb_vfd"); Компонент= Новый("AddIn.lpos_usb_vfd_extension"); СтрОшибка = ""; ИДУстройства =1; МассивЗначений = Новый Массив(); КодоваяСтраница = 12; МассивЗначений.Добавить(КодоваяСтраница); Если (Компонент.Подключить(МассивЗначений, ИДУстройства) <> Истина) Тогда Компонент.ПолучитьОшибку(СтрОшибка); Результат = Ложь; Иначе СтрОшибка = "Ок"; КонецЕсли; Стр1 = ""; Стр2 = ""; МассивСтрок = Новый Массив(); СтруктураСтр1=Новый Структура; СтруктураСтр2=Новый Структура; СтруктураСтр1.Вставить("Текст", " "); СтруктураСтр2.Вставить("Текст", " "); СтруктураСтр1.Вставить("БегущаяСтрока", Ложь); // если флаг установлен, текст в строке прокручивается СтруктураСтр2.Вставить("БегущаяСтрока", Ложь); МассивСтрок.Добавить(СтруктураСтр1); МассивСтрок.Добавить(СтруктураСтр2); Если(Компонент.ВывестиСтрокуНаДисплейПокупателя(ИДУстройства, МассивСтрок) <> Истина) Тогда Компонент.ПолучитьОшибку(СтрОшибка); Результат = Ложь; Иначе СтрОшибка = "OK"; КонецЕсли; Разделитель = Найти(СтрокаТекста,Символы.ПС); Стр1 = Лев(СтрокаТекста,Разделитель-1); Стр2 = Прав(СтрокаТекста,СтрДлина(СтрокаТекста)-Разделитель); МассивСтрок = Новый Массив(); СтруктураСтр1=Новый Структура; СтруктураСтр2=Новый Структура; СтруктураСтр1.Вставить("Текст", Стр1); СтруктураСтр2.Вставить("Текст", Стр2); СтруктураСтр1.Вставить("БегущаяСтрока", Ложь); // если флаг установлен, текст в строке прокручивается СтруктураСтр2.Вставить("БегущаяСтрока", Ложь); МассивСтрок.Добавить(СтруктураСтр1); МассивСтрок.Добавить(СтруктураСтр2); Если(Компонент.ВывестиСтрокуНаДисплейПокупателя(ИДУстройства, МассивСтрок) <> Истина) Тогда Компонент.ПолучитьОшибку(СтрОшибка); Результат = Ложь; Иначе СтрОшибка = "OK"; КонецЕсли; Если не Результат Тогда ВыходныеПараметры.Очистить(); ВыходныеПараметры.Добавить(999); ВыходныеПараметры.Добавить(""); КонецЕсли; Возврат Результат; КонецФункции // Функция осуществляет очистку дисплея покупателя. // &Вместо("ОчиститьДисплейПокупателя") Функция ОчиститьДисплейПокупателя_Подменяемая(ОбъектДрайвера, Параметры, ПараметрыПодключения, ВыходныеПараметры) Результат = Истина; нн= ПодключитьВнешнююКомпоненту("AddIn.lpos_usb_vfd"); Компонент= Новый("AddIn.lpos_usb_vfd_extension"); СтрОшибка = ""; ИДУстройства =1; Если (Компонент.ОчиститьДисплейПокупателя(ИДУстройства) <> Истина) Тогда Компонент.ПолучитьОшибку(СтрОшибка); Результат = Ложь; Иначе СтрОшибка = "OK"; КонецЕсли; Если не Результат Тогда ВыходныеПараметры.Очистить(); ВыходныеПараметры.Добавить(999); ВыходныеПараметры.Добавить(""); КонецЕсли; Возврат Результат; КонецФункции #КонецОбласти |
|||
7
abuca
16.01.17
✎
21:34
|
Осталось только ошибки на подключение отловить, сунуть DLLку в макет и в случае нн = Ложь запускать установку DLL.
Хотя... Если подумать, надо ли... Все-равно сама не установится. Надо же с админскими правами ее устанавливать. |
|||
8
Torquader
16.01.17
✎
21:36
|
(7) Если очень захотеть, и писать не в систему, а в данные пользователя в реестре, то установится без админских прав.
|
|||
9
abuca
16.01.17
✎
21:37
|
(8) ...мм ...это мы еще не проходили.
(6) Да, кстати, Код пишется в заимствованном в расширениЕ общем модуле: "ПодключаемоеОборудованиеУниверсальныйДрайверКлиент". В него дописывается код, приведенный выше. Это для Розницы 2.2.5 |
|||
10
abuca
16.01.17
✎
21:39
|
(8) где-то на волшебном уже видел такую конструкцию. Если будем активно продавать украинское чудо-недотелевизор (ДП), буду пробовать. А так - 2 клиента с этими дисплеями, зависшими еще с НГ. Можно и так поставить.
|
|||
11
vis_tmp
24.01.17
✎
12:27
|
(9)Спасибо
|
|||
12
Torquader
25.01.17
✎
00:55
|
(10) У меня мой COM-объект для работы с данными (правда из VbScript) регистрировался на Windows 10 просто вызовом RegSvr32 без всяких админских прав и работал без проблем.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |