Ваши комментарии
Функции с указанным при вызове именем нет в конфигурации 1С или она не помечена как Экспорт. В какой ситуации возникает данная ошибка? Вы дорабатываете конфигурацию Mobile SMARTS и промежуточной базы 1С?
Добрый день!
Возможность добавлять объект сессии в вызовы событий появилась в платформе Mobile SMARTS версии 2.7. У Вас есть следующие варианты: 1) перейти на платформу 2.7 (дистрибутив можно скачать с сайта, http://www.cleverence.ru/downloads/?tags=Mobile+SMARTS&PAGEN_10=5)
2) остаться на 2.6 и использовать аргумент обработчика события UserId:
Функция ПолучитьТовар(Код, КодУпаковки, UserId, Режим) Экспорт
UserId - ид. пользователя ТСД
3) Если нужно передавать кроме UserId ид. терминала или другие параметры, на 2.6 это можно сделать так:
В вызов функции ПолучитьДопОписаниеТовара добавляем параметр ИдТСД = {Device.GetDeviceId()}
В 1С: Функция ПолучитьДопОписаниеТовара(КодТовара, ИдТСД) Экспорт
По ИдТСД получаем привязанный к данному ТСД (киоску) магазин, получаем цену, возвращаем цену через
InvokeResult.Add("Цена", цена), в конфигурации Mobile SMARTS присваивание SelectedProduct.Packing.price = ДопИнфо.Цена.
Добрый день!
Идентифицировать ТСД можно по его коду, также можно использовать для этого пользователя ТСД.
В панели управления в разделе События сервера Добавлять объект сессии в вызов событий - Да
Обработчик события ТоварНеНайден:
Функция ПолучитьТовар( Код, КодУпаковки, UserId, Режим, mXmlDoc=Неопределено) Экспорт
сессия = StorageConnector.FromXml(mXmlDoc);
ИдТСД = сессия.DeviceInfo.DeviceId;
ИдПользователя = сессия.DeviceInfo.UserId;
Добрый день!
a = CurrentDate.ToString("ddMMyyyyhhmmss")
Используются функции .NET, см. https://msdn.microsoft.com/ru-ru/library/system.datetime(v=vs.110).aspx
Добрый день!
Должны работать оба варианта. В чем именно у Вас ошибка?
Справка по объекту TerminalConnector v.3 здесь: http://www.cleverence.ru/devlib/TerminalConnector_v3/index.html
Лучше выполнять выгрузку с помощью функций НачатьВыгрузкуТаблицы, ДобавитьВВыгрузкуТаблицы, ЗавершитьВыгрузкуТаблицы
Для "Редактирования поля" используйте переменную SelectedItem, в свойствах действия в Панели управления нет настройки "Выбранная строка", используется фиксированное имя SelectedItem.
Добрый день
Если сканирование выполняется в действии "Просмотр записей", для перехода к нужной строке, требуется в свойстве действия "Выбранная строка" указать имя переменной, в которой будет содержаться нужная строка документа (SelectedItem, например), после сканирования и определения товара найти нужную строку с помощью действия "Выбор строки", присвоить значение в переменную SelectedItem. При переходе обратно к действию "Просмотр записей" курсор переместится на эту строку.
Возвращать можно простые типы данных (строки, числа) или объекты Mobile SMARTS сериализованные в xml (с помощью функции StorageConnector.ToXml). Передать можно всю строку документа Mobile SMARTS, в вызываемую функцию придет xml, из него нужно загрузить объект с помощью StorageConnector.FromXml. См. например в промежуточной базе функцию СформироватьЗаказ в модуле обработки ВнешниеВызовыУТ11. Если возвращаемое значение предполагается использовать для записи в документ Mobile SMARTS, нужно возвращать объект Cleverence.Warehouse.PackedProduct (см. например функцию ПолучитьТоварПоШтрихкоду), в конфигурации Mobile SMARTS возвращаемое значение нужно присвоить в SelectedProduct. Вообще, так делать необязательно, после сканирования ШК SelectedProduct уже есть, можно сделать вызов, получить нужные значения и присвоить их в поля SelectedProduct. Если требуется вернуть несколько значений, можно использовать объект Cleverence.Warehouse.InvokeResult, см. ПолучитьЦеныПоКодуТовара, добавление значений в InvokeResult: InvokeResult.Add("Имя", значение);
Можно передать все строки документа Mobile SMARTS в функцию, см. СформироватьЗаказ, параметр СтрокиДокументаXml. Если передавать ид. документа и загружать документ с сервера, в документе не будет изменений, сделанных на ТСД. Вернуть также можно объект строк документа Cleverence.Warehouse.DocumentItemCollection, на ТСД очистить имеющиеся строки документа и переписать в документ возвращенные строки. Но так лучше не делать, для записи в документ есть стандартный механизм - действие Запись в документ, а плановые строки на лету лучше не менять.
Выбрать строку из плановых строк, в которой есть недобор количества можно запросом с помощью действия Выбор строки: СтрокаПодбора = select (*) from Document.DeclaredItems where Item.Underload>0. Выбрали первую строку, в которой есть недобор, если нужно после этого получить ячейку из 1С, это можно сделать с помощью действия Вызов внешней системы, в функцию 1С можно передать ProductId и другие поля из выбранной строки, функция вернет данные о ячейке. Отобразили в шапке окна сканирования номенклатуры наименование товара из выбранной строки и данные по ячейке, пользователь сканирует ШК товара (или сначала ШК ячейки, если требуется), вводит кол-во, происходит запись в документ. Переходим снова к выбору строки, в которой есть недобор.
Сервис поддержки клиентов работает на платформе UserEcho
Номенклатура имеет основные поля, которые есть всегда. Список этих полей см. http://www.cleverence.ru/devlib/comconnector_v3/index.html объекты Clevrence.Warehouse.Product (Товар) и Clevrence.Warehouse.Packing (Упаковка). Также в конфигурации могут быть определены произвольные дополнительные поля:
В редакторе строк обращение как к основным, так и к дополнительным полям выполняется через точку: SelectedProduct.Product.Id, SelectedProduct.Packing.price