Ваши комментарии
Да. При установке старая версия удалится, новая установится поверх.
Можете обновить Mobile SMARTS http://www.cleverence.ru/files/11827/EGAIS.InstallWizard.exe
Пока добавьте перед УдалитьДокументы
мОбъектТСД.Драйвер.SetOneCVersion("v8");
Соберем сегодня новый релиз, в котором нормально должен работать вариант с подключением через ПодключитьВнешнююКомпоненту
Сделайте так:
Если Не мОбъектТСД.Драйвер.УдалитьДокументы(СписокИд) Тогда
ОписаниеОшибки = "";
мОбъектТСД.Драйвер.ПолучитьОшибку(ОписаниеОшибки);
Сообщить("Ошибка: " + ОписаниеОшибки);
Иначе
Сообщить("Нет ошибки");
КонецЕсли;
Так будет понятно, возникает ли ошибка при удалении документа.
См. также логи в C:\ProgramData\Cleverence\Logs или <Папка базы Mobile Smarts>\Logs
База Mobile Smarts серверная или работа происходит с терминалом напрямую?
Удаляемый документ не открыт на терминале?
Проверьте также, что передается верный Id документа.
УдалитьДокументы принимает список значений:
СписокИд = Новый СписокЗначений;
СписокИд.Добавить(ДокументТерминала.Ид);
мОбъектТСД.Драйвер.УдалитьДокументы(СписокИд);
Попробуйте не использовать ПодключитьВнешнююКомпоненту, а объект создавать так:
мДрайверТСД = Новый COMОбъект("AddIn.Cl.TerminalConnector");
Также если получение цен будет всегда происходить через сервер, можно не выгружать цены куда-либо, а получать он-лайн прямо из 1С. Для этого нужно использовать коннектор к 1С (см. http://www.cleverence.ru/support/category:%D0%92%D0%BD%D0%B5%D1%88%D0%BD%D0%B8%D0%B5%20%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2%D1%8B/). В случае серверной базы 1С, думаю, по быстродействию это будет сопоставимо с получением из SQL-таблицы. Номенклатуру тоже можно получать он-лайн прямо из базы 1С (если нет необходимости, чтобы на терминале можно было работать без связи с сервером). Все это реализовано в нашем продукте Драйвер 1C Wi-Fi ПРОФ (http://www.cleverence.ru/software/mobile-smarts/MS-1C-WIFI-DRIVER-PRO/), в самой платформе mobile smarts 2008 также есть коннекторы к 1С, т.е. там тоже это все можно сделать.
Добрый день!
У Вас:
documentItem.ProductId = requestId;
и
product.Id = new Guid(requestId).ToString();
Т.е. в документе и в справочнике номенклатуры будут разные товары, т.к. Id разный. Соответвенно, если стоит настройка Ограничивать товарами документа, товар не находится по ШК. И в строке документа packingId нужно заполнять:
documentItem.PackingId = "requestPack";
Вообще, если нужно ограничить сканирование только строками документа, номенклатуру можно вообще не использовать.
Можно в строках документа выгружать специальный "неизвестный товар", а штрихкод записывать в доп. поле:
documentItem.ProductId = "*"; // ид. неизв. товара
documentItem.PackingId = "шт";
documentItem.SetField("Barcode", BarCode;); // добавьте в строка документа в конфигурации поле Barcode
documentItem.SetField(... // другие поля, если требуется
В конфигурации для сканирования используйте действие Редактирование поля (в нем сканер работает). Для поиска строки документа Выбор строки с поиском по полю Barcode.
Но Ваш вариант тоже должен работать, если documentItem.ProductId и product.Id будут одинаковые.
Сервис поддержки клиентов работает на платформе UserEcho
Как Вы определили, что номенклатура не выгружается? Посмотрите через Панель управления, а также файл Cleverence.Warehouse.ProductsBook.xml в папке <папка базы Mobile Smarts>\Documents
Получить описание ошибки можно так:
Описание = "";
мДрайверТСД.ПолучитьОшибку(Описание);
Сообщить("Ошибка: " + Описание);
Перед выгрузкой происходит подключение к базе Mobile SMARTS?
Подключение и выгрузка:
ПодключитьВнешнююКомпоненту("AddIn.Cl.TerminalConnector");
мДрайверТСД= Новый ("AddIn.Cl.TerminalConnector");
СписБаз = Новый Массив;
СписБаз.Добавить(<Строка с Ид базы Mobile SMARTS>);
мДрайверТСД.Подключить(СписБаз,"");
мДанные = Новый Массив(15); // например, 15 полей
мДанные.Установить( 0, "Product.Ид" );
мДанные.Установить( 1, "Product.Marking" );
мДанные.Установить( 2, "Product.Barcode" );
....
мДанные.Установить( 14, "Packing.price" );
Если Не мДрайверТСД.НачатьВыгрузкуТоваров(мДанные) Тогда // Начинаем выгрузку установив список полей
ОписаниеОшибки = "";
мДрайверТСД.ПолучитьОшибку(ОписаниеОшибки);
...
КонецЕсли;
Для Каждого СтрокаТовара Из МассивВыгрузки Цикл
...
мДанные.Установить( 0, ИдТовара ); // Заполняем массив значениями полей
мДанные.Установить( 1, Артикул );
мДанные.Установить( 2, Код );
....
мДанные.Установить( 14, Цена );
Если Не мДрайверТСД.ДобавитьВВыгрузкуТоваров(мДанные) Тогда // Добавляем в выгрузку порцию данных
мДрайверТСД.ПолучитьОшибку(ОписаниеОшибки);
...
КонецЕсли;
КонецЦикла;
Если Не мДрайверТСД.ЗавершитьВыгрузкуТоваров() Тогда //завершаем выгрузку
мДрайверТСД.ПолучитьОшибку(ОписаниеОшибки);
...
КонецЕсли;