Не срабатывает внешнее событие

1. jaroslav.h 180 13.06.16 11:44 Сейчас в теме
Пустая конфигурация, сделал обработку на УФ (предприетие 8.3).

Хочу поолучить значение, которое считает Считыватель магнитных карт (СМК) с плластиковой карты.

Форма обработки пустая, в модуле формы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ПодключитьВнешнююКомпоненту("c:\ZR1C.dll", "Comp", ТипВнешнейКомпоненты.Native);
	
	ДемоКомп = Новый("AddIn.Comp.ZR1CExtension");
	ДемоКомп.Порт = "Com3";			
	//ДемоКомп.Лог = true;
	DevID = Неопределено;
	ДемоКомп.Подключить(DevID);	
КонецПроцедуры
Показать

а далее
в этом же модуле ставлю точку останова
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
КонецПроцедуры

и событие не срабатывает, не могу получить значения карты
pashamak; SmArtist; +2 Ответить
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. spacecraft 13.06.16 13:59 Сейчас в теме
(1) myr4ik07, ДемоКомп это реквизит формы? Если это только переменная в процедуре, то ее значение теряется сразу после экончания процедуры.
7. jaroslav.h 180 13.06.16 14:20 Сейчас в теме
(6) spacecraft, это переменная, а вот сделал через глобальную переменную http://paste1c.ru/MKj и аналогично
9. spacecraft 13.06.16 14:24 Сейчас в теме
(7) myr4ik07, можно и через глобальную переменную. Это даже правильно. Главное чтобы переменная не теряла после выхода из процедуры.
10. jaroslav.h 180 13.06.16 14:25 Сейчас в теме
(9) spacecraft, а как проверить, потеряла ли она значение?
12. spacecraft 13.06.16 14:29 Сейчас в теме
(10) myr4ik07, если это только локальная переменная (объявлена только в данной процедуре), то при окончании процедуры она "уничтожается" (можно так думать, хотя на самом деле все сложнее). В любом случае она больше не доступа, как и значение этой переменной.
13. jaroslav.h 180 13.06.16 14:43 Сейчас в теме
(12) spacecraft, короче такая фишка, на обычных формах, если пихать значение в реквизит объекта с типом Произвольный, а потом вызывать внешнее событие через СМК то работает, а вот на управляемых не хочет, а мне нужно только на управляемых, мне обычные и не нужны
14. spacecraft 13.06.16 14:54 Сейчас в теме
(13) myr4ik07,
&НаКлиенте
Перем ДемоКомп;

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    ПодключитьВнешнююКомпоненту("c:\ZR1C.dll", "Comp", ТипВнешнейКомпоненты.Native);
    
    ДемоКомп = Новый("AddIn.Comp.ZR1CExtension");
    ДемоКомп.Порт = "Com3";            
    //ДемоКомп.Лог = true;
    DevID = Неопределено;
    ДемоКомп.Подключить(DevID);    
КонецПроцедуры
Показать
pashamak; s512; jaroslav.h; +3 Ответить
15. jaroslav.h 180 13.06.16 15:00 Сейчас в теме
(14) spacecraft, красава, в точку :), ну молодець, ну спасибо от души!
8. jaroslav.h 180 13.06.16 14:21 Сейчас в теме
(6) spacecraft, если в реквизит пишу то
{Форма.Форма.Форма(6)}: Ошибка при установке значения атрибута контекста (Реквизит1)
	Реквизит1 = Новый("AddIn.Comp.ZR1CExtension");
по причине:
Тип "AddIn.Comp.ZR1CExtension" не может использоваться в данных формы
11. spacecraft 13.06.16 14:26 Сейчас в теме
(8) myr4ik07, все верно. Еще в качестве варианта можно использовать реквизит объекта, без вывода его на форму.
2. nni93 13.06.16 12:03 Сейчас в теме
В свойствах управляемой формы должен быть подключен обработчик события ВнешнееСобытие
3. jaroslav.h 180 13.06.16 12:10 Сейчас в теме
(2) nni93, я не нашел, это где? Я объявил событие

скриншот
4. nni93 13.06.16 12:28 Сейчас в теме
(3) myr4ik07, да так и должно быть
5. jaroslav.h 180 13.06.16 12:50 Сейчас в теме
16. jaroslav.h 180 13.06.16 15:22 Сейчас в теме
Может кому то пригодиться,
толстый уф
http://paste1c.ru/XDj
толстый об формы
http://paste1c.ru/J87
предварительно создав Реквизит объекта с типом произвольный
17. hroa 13.06.16 17:01 Сейчас в теме
(16) а тонкий? Толстый-то и ежу понятно, что сработает.
18. jaroslav.h 180 13.06.16 17:23 Сейчас в теме
(17) hroa, на тонком у меня валиться 1С-ка, не знаю, может из - за компоненты
19. FilatovRA 169 25.01.18 12:54 Сейчас в теме
Полный код, вдруг пригодится
&НаКлиенте
Перем ДемоКомп;
		
&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ОповещениеПодключениеКомпоненты = Новый ОписаниеОповещения("ПодключитьСканер", ЭтаФорма);
	НачатьУстановкуВнешнейКомпоненты(ОповещениеПодключениеКомпоненты, "ОбщийМакет.DLLВZIP");
	// В макете лежит zip архив с самой dll и манифестом
			
КонецПроцедуры

&НаКлиенте
Процедура ПодключитьСканер(Параметры) Экспорт
	
    ПодключитьВнешнююКомпоненту("ОбщийМакет.DLLВZIP", "ScanerRFID", ТипВнешнейКомпоненты.Native);
	ДемоКомп = Новый("AddIn.ScanerRFID.ZR1CExtension");	
    ДемоКомп.Порт = "Com4";            
    DevID = Неопределено;
    ДемоКомп.Подключить(DevID);    
		
КонецПроцедуры



&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
	Сообщить(Данные);
КонецПроцедуры
Показать
pashamak; SmArtist; Legavaz; agent00mouse; +4 Ответить
20. agent00mouse 253 18.05.18 08:54 Сейчас в теме
(19) Спасибо, переписал у себя код Legacy.
21. Legavaz 704 18.02.19 15:46 Сейчас в теме
22. SmArtist 98 17.08.20 14:55 Сейчас в теме
(19)
&НаКлиенте


Спасибо!!!
Не хватало "На клиенте" перед объявлением переменной))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот