Написал такую обработку.
Процедура ОбработкаВнешнегоСобытия полностью
взята из вашего примера.
Я так понимаю после выполнения процедуры ПодключитьТСД()
терминал должен входить в режим ввода данных
т.е. должна на нем появиться надпись "Введите код",
а там только ожидание связи.
Посмотрел как работает с обработкой С# и Эксель из вашего примера
там и в том, и в другом случае есть функция Start() которая запускает
сервер, а в примере с 1С вызова этой процедуры нет.
Правильно ли это?
И еще вопрос - по какому пути компонента сбрасывает файл и как он называется
в режиме "Записывать данные в файл".
[code]
Перем Объект; // Отвечает за компоненту CipherLabTCP
//*******************************************
Процедура Сформировать()
КонецПроцедуры
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные) Экспорт
Перем ВремТовар, ВремЕдиница, ВремКоличество, ВремЦена, ВремВалюта;
Перем НомерТСД, НомерБД, НомерФормы;
Перем Поле1, Поле2, Поле3, Поле4, Поле5, Поле6, Поле7, Поле8;
// Все методы объекта начинаются с "НомераТСД", т.е. его IP-адреса.
// IP-адрес сообщается в переменной "Данные"
Сообщить("Событие: "+Источник);
Если Источник = "CPT_TCP" Тогда
//Объект = глТерминал;
НомерТСД = Данные;
// Получим данные от ТСД, приславшего внешнее событие
Объект.ПолучитьДанные(НомерТСД, НомерБД, НомерФормы,
Поле1, Поле2, Поле3, Поле4, Поле5, Поле6, Поле7, Поле8);
/////////////////////////////////////////////////////////////////////////////
// Если было событие о начале подбора (создание документа) от радиоТСД, то....
/////////////////////////////////////////////////////////////////////////////
// Входящие данные:
// Поле1 = тип документа,
// Поле2 = номер документа,
// Поле3 = номер пользователя 1С (если включена настройка в ТСД),
// Поле4 = пароль в 1С (если включена настройка в ТСД).
// Выходные данные:
// Поле1 = номер документа
/////////////////////////////////////////////////////////////////////////////
Если Событие = "Make" Тогда
Сообщить("Терминал номер "+НомерТСД);
Сообщить("Создал накладную "+Поле1+" типа, с именем "+Поле2);
// Возвращаю тоже самое имя или можно поменять на свое имя
Объект.Ответ(НомерТСД,Поле2,,,,,,,);
КонецЕсли;
// Если было событие об окончании подбора от радиоТСД, то....
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Входящие данные:
// Поле1 = тип документа,
// Поле2 = номер документа,
// Поле3 = номер пользователя 1С (если включена настройка в ТСД),
// Поле4 = пароль в 1С (если включена настройка в ТСД).
// Выходные данные:
// Поле1 = 1 - подтвердим получение (любое не пустое значение).
/////////////////////////////////////////////////////////////////////////////
Если Событие = "Close" Тогда
Сообщить("Терминал номер "+НомерТСД);
Если Объект.МетодЗаписи = 1 Тогда
Сообщить("Закрыл накладную с именем "+Поле1);
Иначе
Сообщить("Закрыл файл с именем "+Поле1);
КонецЕсли;
Объект.Ответ(НомерТСД,1,,,,,,,); // Без данных, только чтобы ТСД понял, что документ закрыт
КонецЕсли;
// Если было событие (поиск) от радиоТСД, то....
/////////////////////////////////////////////////////////////////////////////
// Входящие данные:
// Поле1 - Data, где Data-данные (ключевое поле);
/////////////////////////////////////////////////////////////////////////////
// Выходящие данные:
// Поле1-Поле8 - заполнить полями БД ТСД
Если Событие = "Query" Тогда
Если глПолучитьТоварПоШтрихкоду(Поле1, ВремТовар, ВремЕдиница, ВремКоличество) 0 Тогда
ЦенаИзСправочника = глПользователь.ОсновнойТипЦенПродажи;
ВыбСклад = глПользователь.ОсновнойСклад;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Количество)
//|Период с (ТекущаяДата()) по (ТекущаяДата());
|ОбрабатыватьДокументы все;
|Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
|ТипыЦен = Регистр.ОстаткиТМЦ.ЦенаПрод;
|Склад = Регистр.ОстаткиТМЦ.Склад;
|Количество = Регистр.ОстаткиТМЦ.Количество;
|Функция КоличествоКонОст = КонОст(Количество);
|Группировка Номенклатура без групп;
|Условие(Номенклатура в ВремТовар);
|Условие(Склад в ВыбСклад);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Запрос.Группировка(1);
// Поле1 = Данные;
Поле2 = Запрос.Номенклатура.Наименование;
Поле3 = глВернутьЦену(ВремТовар, ЦенаИзСправочника, РабочаяДата(), ВремЦена, ВремЕдиница, ВремВалюта);
Поле4 = Запрос.КоличествоКонОст;
Сообщить("Отсылаю: "+Поле1+" "+Поле2+" "+Поле3+" "+Поле4+" "+Поле5+" "+Поле6+" "+Поле7+" "+Поле8);
Объект.Ответ(НомерТСД,Поле1, Поле2, Поле3, Поле4,,,,);
Иначе
// После заполнения данных, ТСД вернет событие "Insert".
// Если разкомментировать строки ниже, то ТСД ответит событием "Update"
// Поле1 = Данные;
// Поле2 = "Новый товар";
// Поле3 = 0;
// Поле4 = 0;
//Объект.Ответ(НомерТСД,Поле1,Поле2,Поле3,Поле4,,,,);
Объект.ПослатьСообщение(НомерТСД, "Такого штрихкода нет в базе!");
Объект.Ответ(НомерТСД,,,,,,,,);
КонецЕсли;
КонецЕсли;
// Если было событие для обновления данных, то....
/////////////////////////////////////////////////////////////////////////////
// Входящие данные:
// Поле1-Поле8 - Поля БД терминала;
/////////////////////////////////////////////////////////////////////////////
// Выходящие данные:
// Поле1 = 1 - подтвердим получение (любое не пустое значение).
Если Событие = "Update" Тогда
// Здесь нужно вставить код для обновления базы
Сообщить("От ТСД №"+НомерТСД+" пришли данные для обновления "+Поле1+
" "+Поле2+" "+Поле3+" "+Поле4+" "+Поле5+" "+Поле6+" "+Поле7+" "+Поле8);
Объект.Ответ(НомерТСД,1,,,,,,,); // Без данных, только чтобы ТСД понял, что данные обновлены
КонецЕсли;
// Если было событие для вставки данных, то....
/////////////////////////////////////////////////////////////////////////////
// Входящие данные:
// Поле1-Поле8 - Поля БД терминала;
/////////////////////////////////////////////////////////////////////////////
// Выходящие данные:
// Поле1 = 1 - подтвердим получение (любое не пустое значение).
Если Событие = "Insert" Тогда
// Здесь нужно вставить код для вставки новых данных в базу
Сообщить("От ТСД №"+НомерТСД+" пришли данные для вставки "+Поле1+
" "+Поле2+" "+Поле3+" "+Поле4+" "+Поле5+" "+Поле6+" "+Поле7+" "+Поле8);
Объект.Ответ(НомерТСД,1,,,,,,,); // Без данных, только чтобы ТСД понял, что данные вставлены
КонецЕсли;
Иначе
Сообщить("Ну тогда в главный модуль");
глОбработкаВнешнегоСобытия(Источник, Событие, Данные);
КонецЕсли;
КонецПроцедуры // ОбработкаВнешнегоСобытия()
Процедура Пинг()
СтатусВозврата(1);
результат = Объект.Пинг("192.168.1.107",1,100);
Если результат = 1 Тогда
Сообщить("Пинг успешный");
Иначе
Сообщить("Пинг неуспешный");
КонецЕсли;
СтатусВозврата(0);
КонецПроцедуры // ПолучитьОписаниеРезультата()
Процедура СообщениеВТСД()
Объект.ПослатьСообщение("","Полетела жопа");
Сообщить("Результ: "+Объект.Результат);
Сообщить("Описание результа: "+Объект.ОписаниеРезультата);
КонецПроцедуры
Процедура ПодключитьТСД()
Компонента = "CipherLabTCP.dll";
ПрогИд = "CipherLabTCP";
Если ЗагрузитьВнешнююКомпоненту(Компонента) = 0 Тогда
ОписаниеРезультата = "ошибка загрузки внешней компоненты """ + Компонента + """";
Возврат;
Иначе
Объект = СоздатьОбъект("AddIn." + ПрогИд); // Создание объекта внешней компоненты
//Если ПустоеЗначение(Объект) = 1 Тогда
// Сообщить("Не создан Объект с идентификатором AddIn." + ПрогИд);
// Возврат;
//Иначе
// Если Объект.Подключить()=0 Тогда
// Сообщить("К созданном объекту с идентификатором AddIn." + ПрогИд + "не могу подключить терминал");
// Возврат;
// КонецЕсли;
//КонецЕсли;
КонецЕсли;
Объект.Подключить();
Сообщить("Запущен сервер Радио-ТСД Cipher");
Сообщить("Включен: "+Объект.Включен);
Сообщить("Результ: "+Объект.Результат);
Сообщить("Описание результа: "+Объект.ОписаниеРезультата);
Сообщить("Метод записи: "+Объект.МетодЗаписи);
Сообщить("Порт: "+Объект.Порт);
Сообщить("Разделитель: "+Объект.Разделитель);
КонецПроцедуры
Процедура ОтключитьТСД()
Если ПустоеЗначение(Объект) = 0 Тогда
Объект.Отключить();
КонецЕсли;
Сообщить("Остановлен сервер Радио-ТСД Cipher");
КонецПроцедуры
[/code]