Синтаксис Mobile Smarts

Чухно Евгений 8 лет назад обновлен Евгений Алиев 8 лет назад 4

У нас при работе с нетиповым документом используется проверка с таким выражением

Item.NSSerial==Серия.Substring(4,12) && Item.NSStatus=="" && Item.NSGUID== SelectedProduct.Product.Id

В логах стала появляться такая ошибка

MobileSMARTS.exe; (OperationAction) "1"; 22/10/2016 12:08:42.000 ERROR

ADDITION TEXT: ActionSession.EvaluateExpression(Item.NSSerial==Серия.Substring(4,11) && Item.NSStatus=="" && Item.NSGUID== SelectedProduct.Product.Id):
MESSAGE: Ошибка вычисления выражения 'Item.NSSerial==Серия.Substring(4,11) && Item.NSStatus=="" && Item.NSGUID== SelectedProduct.Product.Id'
TYPE:System.Exception

---

Не поменялось ли чего в синтаксисе? Плюс, попутно, спросить хочется-так ли в последей версии добавляются строки в таблицу документа?

НоваяСтрокаСерии = Document.SerialTovar.Rows.AddNew()

НоваяСтрокаСерии.NSGUID=SelectedProduct.Product.Id

и т.д.


Проблема в том, что теперь не добавляются записи в доп. таблицы.
Вопрос очень важный. Либо алгоритм затыкается на проверке выражения, мною упомянутого, либо что-то изменилось в методах работы с таблицами в версиях 3* (в мануалах древние записи о 2.7 версии)

Пришлите лог полностью, вы только кусок его прислали.

Вот полный лог первой ошибки

MobileSMARTS.exe; (OperationAction) "1"; 19/10/2016 18:44:41.000 ERROR

ADDITION TEXT: SelectLine
MESSAGE: Ошибка вычисления выражения 'Item.NSSerial==Серия.Substring(4,11) && Item.NSStatus=="" && Item.NSGUID== SelectedProduct.Product.Id'
TYPE:System.Exception
[STACK TRACE]
at Cleverence.Parsing.CompiledExpression.Evaluate(ILocalScope localScope, IGlobalScope globalScope, IMath math)
at Cleverence.Parsing.CompiledExpression.Evaluate()
at Cleverence.Warehouse.Compact.ActionSession.EvaluateExpression(String expression, Boolean fDoNotDebug, AssignChange& change)
at Cleverence.Warehouse.Compact.ActionSession.EvaluateExpression(String expression, AssignChange& change)
at Cleverence.Warehouse.Compact.DocumentQuery.SelectLine(IList allLines, ActionSession session)
at Cleverence.Warehouse.RowCollection.GeneralRowCollection.SelectLine(ILocalScope localScope, DocumentQuery dq)
at Cleverence.Warehouse.Compact.DocumentQuery.SelectLine(ActionSession session)
at Cleverence.Warehouse.Compact.SelectDocumentLineAction.Begin()
at Cleverence.Warehouse.Compact.ActionsApplication.StartApplication()
[STACK TRACE]

--INNER EXCEPTION--
MESSAGE: Specified argument was out of the range of valid values.
TYPE:System.ArgumentOutOfRangeException
[STACK TRACE]
at System.String.Substring(Int32 startIndex, Int32 length)
at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark)
at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean verifyAccess, StackCrawlMark& stackMark)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at Cleverence.Reflection.InvokeMethod(Object obj, MethodBase mi, Object[] args)
at Cleverence.Parsing.CompiledExpression.Operator.MethodCall.InvokeMethod(Object obj, String methodName, MethodCallFrame mcf)
at Cleverence.Parsing.CompiledExpression.Operator.MethodCall.op(EvaluationFrame frame)
at Cleverence.Parsing.CompiledExpression.Evaluate(ILocalScope localScope, IGlobalScope globalScope, IMath math)
at Cleverence.Parsing.CompiledExpression.Evaluate()
at Cleverence.Warehouse.Compact.ActionSession.EvaluateExpression(String expression, Boolean fDoNotDebug, AssignChange& change)
at Cleverence.Warehouse.Compact.ActionSession.EvaluateExpression(String expression, AssignChange& change)
at Cleverence.Warehouse.Compact.DocumentQuery.SelectLine(IList allLines, ActionSession session)
at Cleverence.Warehouse.RowCollection.GeneralRowCollection.SelectLine(ILocalScope localScope, DocumentQuery dq)
at Cleverence.Warehouse.Compact.DocumentQuery.SelectLine(ActionSession session)
at Cleverence.Warehouse.Compact.SelectDocumentLineAction.Begin()
at Cleverence.Warehouse.Compact.ActionsApplication.StartApplication()

[STACK TRACE]


А вот еще одна ошибки, лог ими просто забит (опять же, их не было ранее, на ранних 3* версиях)


MobileSMARTS.exe; 2104273202; 24/10/2016 22:23:19.000 ERROR

ADDITION TEXT: DisposingAction error. Number = 60 name= Количество 1; Operation = Подбор заказа
MESSAGE: ArgumentOutOfRangeException
Parameter name: index
TYPE:System.ArgumentOutOfRangeException
[STACK TRACE]
at System.Collections.ArrayList.get_Item(Int32 index)
at Cleverence.Warehouse.Compact.SimpleQuantityAction.BeforeLeave(Boolean temporarily)
at Cleverence.Warehouse.Compact.SimpleQuantityAction.BeforeLeave()
at Cleverence.Warehouse.ActionCollection.LeaveAndDispose(String documentTypeName)
at Cleverence.Warehouse.Compact.ActionsApplication.UnUseWorkflowActionCollections(IActionWorkflow wf)
at Cleverence.Warehouse.Compact.ActionWorkflow.Dispose()
at Cleverence.Warehouse.Compact.ActionForm.Close(Boolean disposeWorkflow)
at Cleverence.Warehouse.Compact.ActionForm.Close()
at Cleverence.Warehouse.Compact.ActionForm.workflow_Ended(Object sender, WorkflowEventArgs e)
at Cleverence.Warehouse.Compact.ActionWorkflow.OnEnded(ApplicationState state)
at Cleverence.Warehouse.Compact.ActionWorkflow.<>c__DisplayClass2.<app_Finished>b__1()
at Cleverence.CompactForms.FormStack.<>c__DisplayClass2.<Invoke>b__0()
at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark)
at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean verifyAccess, StackCrawlMark& stackMark)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at System.Windows.Forms.Control.TASK.Invoke()
at System.Windows.Forms.Control._InvokeAll()
at System.Windows.Forms.Control.WnProc(WM wm, Int32 wParam, Int32 lParam)
at System.Windows.Forms.ContainerControl.WnProc(WM wm, Int32 wParam, Int32 lParam)
at System.Windows.Forms.Form.WnProc(WM wm, Int32 wParam, Int32 lParam)
at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)
at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
at System.Windows.Forms.Application.Run(Form fm)
at Cleverence.Warehouse.Compact.Start.Main2(String[] args)
at Cleverence.Warehouse.Compact.Start.Main(String[] args)
[STACK TRACE]


MobileSMARTS.exe; -1653823182; 24/10/2016 23:52:43.000 Loaded assembly: Cleverence.Compact.Core.Mobilebase.DS5, Version=1.0.6108.32174, Culture=neutral
MobileSMARTS.exe; -1653823182; 24/10/2016 23:53:00.000 Cleverence.Compact.Core.dll version 3.0.0.167
MobileSMARTS.exe; (OperationAction) "ПросмотрПланФактНексофт"; 25/10/2016 04:06:31.000 ERROR
ADDITION TEXT: AssignAction.Begin
MESSAGE: (0,33): error: (0,33): Invalid mathematical operator term ']'
TYPE:Cleverence.Parsing.ParsingException
[STACK TRACE]
at Cleverence.Parsing.Parser.Parse(CodeReader codeReader)
at Cleverence.Parsing.Parser.Parse(String code)
at Cleverence.Parsing.CompiledCode.Compile(String expression)
at Cleverence.Warehouse.Compact.ActionSession.EvaluateCode(String code)
at Cleverence.Warehouse.Compact.AssignAction.Begin()
at Cleverence.Warehouse.Compact.ActionsApplication.StartApplication()
[STACK TRACE]
PROBLEMS: (0,33): error: (0,33): Invalid mathematical operator term ']'



вот суть ошибки:


Specified argument was out of the range of valid values.

TYPE:System.ArgumentOutOfRangeException

at System.String.Substring(Int32 startIndex, Int32 length)


очевидно Серия.Substring(4,11) - не может выполниться, потому что значение серии слишком короткое и не может вырезать начиная с пятого еще 11.


По этому:

at System.Collections.ArrayList.get_Item(Int32 index)at Cleverence.Warehouse.Compact.SimpleQuantityAction.BeforeLeave(Boolean temporarily)


уже в курсе, будет исправление в ближайшее время





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