Завершен

Заполнение таблицы в Этикетке

Алексей Ш. 8 лет назад обновлен Алексей (Рук. ТП) 8 лет назад 7

Здравствуйте!


Подскажите как мне заполнять Таблицу в Этикетке. В документации не нашел примеров.


Для чего это нужно. Хочу печатать с ТСД опись паллеты, т.е. все строки документа содержащие в SSC выбранную паллету. Это можно сделать из терминала отправляя данные в этикетку? Или надо использовать вызов внешней системы? Жду ответа


Здравствуйте,

печать через сервер Mobile SMARTS позволяет печатать этикетки, для сложных документов с таблицами и разбивкой на несколько страниц это не подходит, лучше использовать вызовы внешней системы.

Хорошо. А направьте пожалуйста в нужном направлении. Как мне передать таблицу строк документа во внешнюю систему не завершая документ на терминале?

В вызов внешней системы передать Document.CurrentItems, придет строка c xml, загрузить объект из строки так: StorageConnector.FromXML

Спасибо за подсказку. Но не все работает. Не могу получить значение дополнительного поля через Вызов внешней системы.

Делаю вот так. Но процедура спотыкается на выделенной строке. Если ее убрать, то все работает, т.е. основные поля получаю. При этом если из 1С делать запрос к дополнительному полю строки, то эта конструкция работает.


СтрокиДокумента = мStorageConnector.FromXml(Stroki);
Для Инд = 0 По СтрокиДокумента.Count-1 Цикл
СтрокаДокумента = СтрокиДокумента.Элемент(Инд);

ТаблицаТоваров.НоваяСтрока();
ТаблицаТоваров.Номенклатура = СокрЛП(СтрокаДокумента.Product.Name);

ТаблицаТоваров.Количество = СокрЛП(СтрокаДокумента.CurrentQuantity);


ТекСерия = СтрокаДокумента.GetField("СерияНоменклатуры");

КонецЦикла;


Вот логи:


5; 10; 13.04.2017 20:58:53.718 ERROR
ADDITION TEXT: Метод: OneC_DriverConnector:ПечатьОписи, Аргументы: Stroki6038993594455600030000100355000368145 Рн-МС00013472017-04-11T00:00:00True016-1-41008164607007360029000300355000368145 Рн-МС00013472017-04-11T00:00:00True0Barcode_korob990100000000000004
MESSAGE: Неизвестное имя. (Исключение из HRESULT: 0x80020006 (DISP_E_UNKNOWNNAME))
TYPE: System.Runtime.InteropServices.COMException
SOURCE: mscorlib
TARGETSITE: InvokeDispMethod
[STACK TRACE]
в System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
в System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
в Cleverence.Connectivity.OneC.V77.OneC_77_Connector.DoInvokeMethod(String methodName, Object[] args)
в Cleverence.Connectivity.OneC.V77.OneC_77_Connector.InvokeMethod(String methodName, Object[] args)
в Cleverence.Connectivity.ConnectivityManager.InvokeMethod(String methodName, Object[] args)
в Cleverence.Warehouse.ServerEvents.Invoke(String methodName, Object[] args, DeviceInfo dInfo, Boolean& isDemo)
в Cleverence.Warehouse.DataStorage.InvokeRemoteMethod(String methodPath, String invokeArgs, String deviceInfoXml)
[STACK TRACE]
ERRORCODE: -2147352570
DATA: System.Collections.ListDictionaryInternal



Я не так доп.поле получаю? Спасибо. Жду ответа.


Вместо GetField через ПолучитьПоле можно попробовать еще так: СтрокаДокумента.Fields.FindByFieldName("СерияНоменклатуры").Value

Возможно с чем-то пересекается GetField

Переделал так:


Пока НомСтр+1<=КолвоСтрок Цикл



СтрокаДокумента = СтрокиДокумента.Элемент(НомСтр);

ТаблицаТоваров.НоваяСтрока();
ТаблицаТоваров.Номенклатура = СтрокаДокумента.productId;
ТаблицаТоваров.Количество = СтрокаДокумента.currentQuantity;
ТаблицаТоваров.Серия = СтрокаДокумента.ПолучитьПоле("СерияНоменклатуры");
НомСтр = НомСтр + 1;

КонецЦикла;


И все заработало. Оказывается имя Товара не перегружалось. Спасибо за помощь.

Сервис поддержки клиентов работает на платформе UserEcho