Имя: Пароль:
1C
1C 7.7
v7: ТСД Cipher 8000 с драйвером Scancode и 1С ТиС 7.70.921. Проблема выгрузки.
0 dimi3o
 
19.01.13
16:33
Всем привет!
Пытаюсь запустить работу ТСД CipherLab 8000-C на предприятии с 1С 7.7 ТиС 9.2 (7.70.921), который забросили в черный угол 8 лет назад. Использую прошивку Scancode.
Поставил ядро: K8000V334. Прошивку: U8000241-IG09. Задачу: 1c_8000 (от 12.08.2009). В задачу никаких изменений не вносил, просто загрузил и всё. Далее в 1С подключаю драйвер версии 6.0.4.0(Scancode). Тут все успешно (При включении 1С одинарный звуковой сигнал от ТСД). В настройках все параметры и порты верные.
Но при нажатии кнопки "Выгрузить в ТСД Cipher" в "Справочники.Номенклатура" вылезает следующая ошибка:

Документ = Форма.Параметр.Получить("Контекст");
{\EXTFORMS\PRNFORMS\CIPHERLAB.ERT(13)}: Поле агрегатного объекта не обнаружено (Получить)

Пробовал даже совсем старую версию драйвера Scancode для 1С от 2004 года. Там форма открывается и даже идет обработка ровно до момента передачи в ТСД, где выдает ошибку: "Терминал сбора данных: ошибка при выгрузке в базу Невозможно перевести терминал в режим загрузки!".

Если ввести штрих-код из нашей базы вручную в ТСД при вводе количества и потом заполнить реализацию, то всё без проблем передается и товар находит! Полдела уже есть и очень хотелось бы решить проблему с выгрузкой БД в ТСД.

Где то вычитал, что это проблема совместимости версий ТиС, типа редакция 7.70.921 не работает с драйвером последней версии Scancode.ru. Там вроде тестировалось все на 7.70.924 или 7.70.925. Но сейчас база уже работает и все переустановить проблемно. Может кто знает что нужно исправить в коде?

Нарыл что объект "параметры" не является списком значений в модуле Номенклатура:
Процедура ПоКнопкеПечать()
   
   Если  ПустоеЗначение(НомерТекущейФормы) = 1  Тогда
       НомерТекущейФормы = 1;
   КонецЕсли;
       
   Если НомерТекущейФормы = 1  Тогда
       // ЭТИКЕТКА
       ПечатьЭтикетки();
   ИначеЕсли НомерТекущейФормы = 2  Тогда
       // ЦЕННИК
       ПечатьЦенника();
   Иначе
       // внешняя обработка
       Параметры = глВзятьКонтекст(Контекст);  
       ОткрытьФорму("Отчет", Параметры, глКаталогПечФорм + ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы,"Файл"));
   КонецЕсли;
   
КонецПроцедуры // ПоКнопкеПечать()

Исправил:
Параметры = глВзятьКонтекст(Контекст);  
на
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение(глВзятьКонтекст(Контекст), "Контекст");

Но появилась новая ошибка:
Документ.ВыбратьСтроки();
{EXTFORMS\PRNFORMS\CIPHERLAB.ERT(15)}: Поле агрегатного объекта не обнаружено (ВыбратьСтроки)

Вот код "CIPHERLAB.ERT" в \PRNFORMS\:
Процедура ПриОткрытии()
   Перем Данные;
   
   Параметры = СоздатьОбъект("СписокЗначений");
   Параметры.Установить("Процесс", "выгрузить");
   Параметры.Установить("Объект" , глТерминал);
   
   Документ = Форма.Параметр.Получить("Контекст");
   Если ПустоеЗначение(Документ) = 0 Тогда
       Документ.ВыбратьСтроки();
       Данные = СоздатьОбъект("ТаблицаЗначений");  
       Данные.НоваяКолонка("ШтрихКод");
       Данные.НоваяКолонка("Номенклатура");
       Данные.НоваяКолонка("Цена");
       Данные.НоваяКолонка("Количество");
       
       Пока Документ.ПолучитьСтроку() = 1 Цикл
           Баркод = Документ.Номенклатура.БазоваяЕдиница.Штрихкод;
           Если ПустоеЗначение(Баркод) = 1 Тогда
               Сообщить("Для " + Документ.Номенклатура.Наименование + " нет штрихкода - не выгружаем");
               Продолжить;
           КонецЕсли;

           Данные.НоваяСтрока();
           Данные.ШтрихКод = Баркод;
           Данные.Номенклатура = Документ.Номенклатура.Наименование;
           Данные.Цена = Документ.Цена;
           Данные.Количество = Документ.Количество;
           
           //Если ПроверитьШтрихкод(Форма.Штрихкод) = 0 Тогда
           //    Сообщить("У товара """ + Форма.Наименование + """ штрихкод не задан или имеет неверный формат!");
           //Иначе
           //        
           //
           //КонецЕсли;
       КонецЦикла;    
       Параметры.Установить("Данные" , Данные);
   Иначе
       Параметры.Установить("Данные" , "");
   КонецЕсли;
   //ааа = Форма.Параметр.Получить("Контекст");
       
   РезТекст = глОборудованиеКоманда("Терминал", глТерминалОбработка, Параметры);
   Если ПустоеЗначение(РезТекст) = 0 Тогда
       Сообщить(РезТекст);
   Иначе
       Если Параметры.Получить("Результат") = 0 Тогда
           Сообщить("Терминал сбора данных: ошибка при выгрузке в базу");
           Сообщить(Параметры.Получить("ОписаниеРезультата"));
       КонецЕсли;
   КонецЕсли;
       
   // закрываем фому
   СтатусВозврата(0);

КонецПроцедуры // ПриОткрытии

Заранее спасибо за помощь!
1 jbond
 
19.01.13
16:44
напиши собственную прошивку на CipherBasic, будь мужиком, пля!
2 dimi3o
 
19.01.13
16:47
(1) Я уже подумываю об этом, потратив полдня на изучение настройки и полдня на поиск решения моей проблемы. Вопрос всё еще в воздухе...
3 jbond
 
19.01.13
16:56
(2) - а мы ровно год потратили впустую на внедрение г0вн0софта для WiFi ТСД CipherLab, потом плюнули и написали свое.

чем раньше ты поймешь главную мысль: "нужно все писать самому", тем меньше времени ты потеряешь впустую.

стандартные прошивки - это полный отстой, что тайваньский, что московские (да и те с привязкой к железу).

Шаг влево, шаг вправо - расстрел на месте, разозленные клиенты, и единственный ответ "я не знаю, почему это не работает, я не могу что-то здесь поменять, т.к. прошивку писал не я, у меня нет доступа к исходным текстам, я не имею доступа к программистам, которые это написали (их может быть вообще уволили), Я НИЧЕГО МОГУ СДЕЛАТЬ"

Со своей прошивкой у тебя будет более-менее полный контроль. Ну еще нужно учитывать пару особенностей CipherBasic.
4 dimi3o
 
19.01.13
17:05
(3) Абсолютно с тобой согласен, только техническими вопросам по 1С и торг.оборудованию в фирме занимаюсь только я. И сколько же интересно я времени потрачу на написание прошивки, задачи, драйвера и всех обработок для 1С? - Очень много!
5 jbond
 
19.01.13
18:14
(4) - а это уже проблемы твоей фирмы. У нашей фирмы, внедряющей ERP системы, интеграцией с торговым оборудованием занимается один человек - я. Про остальное я понятия не имею.
6 dimi3o
 
20.01.13
17:26
(5) Помогла замена файла CIPHERLAB.ERT из папки \PRNFORMS, на файл CIPHERLAB.ERT для драйвера Scancode от 2004 года.
7 dimi3o
 
21.01.13
19:40
Решение оказалось следующим. Заменить это:

Параметры = глВзятьКонтекст(Контекст);

на это:

Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение(ТекущийЭлемент(), "Номенклатура");

в основном модуле номенклатуры "ФормаСписок".
В модуле внешней обработки CipherLab.ert ничего не нужно было менять!
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.