Ваши комментарии

Как Вы определили, что номенклатура не выгружается? Посмотрите через Панель управления, а также файл 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, Цена );


Если Не мДрайверТСД.ДобавитьВВыгрузкуТоваров(мДанные) Тогда // Добавляем в выгрузку порцию данных

мДрайверТСД.ПолучитьОшибку(ОписаниеОшибки);

...

КонецЕсли;

КонецЦикла;


Если Не мДрайверТСД.ЗавершитьВыгрузкуТоваров() Тогда //завершаем выгрузку

мДрайверТСД.ПолучитьОшибку(ОписаниеОшибки);

...

КонецЕсли;

Да. При установке старая версия удалится, новая установится поверх.

Пока добавьте перед УдалитьДокументы

мОбъектТСД.Драйвер.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