В платформе Mobile SMARTS есть возможность вызова серверных операций из конфигурации Mobile SMARTS. Серверная операция — это операция, выполняемая на сервере Mobile SMARTS, в отличие от обычной операции, которая выполняется на самом ТСД.
Серверные операции могут использоваться в следующих случаях:
-
в случае работы с коллективным документом — позволяет ускорить работу за счет замены множества одиночных вызовов на сервер одним, при котором целый кусок алгоритма отрабатывает на сервере. Дополнительно, используя блокировки, это позволяет решить проблемы несогласованного изменения данных в сложных случаях;
-
для явного вызова операции на сервере, даже если документ не коллективный, что дает возможность строить более гибкую логику работы;
-
в качестве обработчиков серверных событий (производить какие-то операции с данными при выгрузке или завершении документа).
Необходимо учитывать, что такие операции имеют ограничения на используемые действия. Никакие визуальные действия использоваться в серверных операциях не могут.
Коллективная работа
Для того, чтобы операция выполнялась на сервере, в панели управления в свойствах операции нужно установить настройку «Выполняется на сервере — Да».
При вызове такой операции её исполнение будет полностью происходить на сервере. Если же она будет вызвана в обычном, не коллективном документе, то она всё также будет исполняться на мобильном устройстве.
При разработке таких операций важно учитывать, что все данные, которыми она оперирует, должны быть переданы в качестве её параметров. Данные, не переданные явно, будут в операции недоступны.
Явный вызов операции на сервере
Но серверную операцию можно вызвать явно и для обычного, неколлективного, документа. Для этого можно воспользоваться расширением «Вызов серверных операций».
«Вызов серверных операций» всегда присутствует в конфигурации Mobile SMARTS в случае использования серверной базы в папке «Расширения».
Явный вызов необходимо выполнять с помощью действия «Вызов метода внешней системы».
Обработка событий сервера
Расширение «Вызов серверных операций» поддерживает обработку событий документов с помощью операции, выполняемой на сервере.
Это означает, что можно, например, написать операцию какой-то обработки документа, которая будет исполняться, когда завершенный документ будет приходить с мобильного устройства.
Прочие события (получение номенклатуры, запрос данных из таблиц онлайн) пока не поддерживаются.
Документ добавляется
Событие, возникающее в процессе добавления документа на сервере. Вызывается при выгрузке документа в базу Mobile SMARTS из внешней системы.
В серверную операцию передается добавляемый документ (переменная сессии Document). Если выполнение операции прерывается (переход [прервать операцию]), добавление документа на сервер отменяется, в лог сервера добавляется запись: «Документ отклонен обработчиком события». Если отмена добавления не требуется, операция должна завершиться по переходу [завершить операцию].
Параметры:
Имя | Тип | Описание |
Document | Объект документа | Добавляемый документ |
Возвращаемые значения:
Имя | Тип | Описание |
Error | строка |
Описание ошибки. Если значение заполнено, считается, что операция завершилась неудачно, вызывается исключение. |
Документ добавлен
Событие, возникающее после добавления документа на сервере. Вызывается при выгрузке документа в базу Mobile SMARTS из внешней системы.
В серверную операцию передается добавленный документ (переменная сессии Document). Обработчик может внести изменения в документ. После вызова обработчика документ сохраняется на сервере.
Параметры:
Имя | Тип | Описание |
Document | Объект документа | Добавленный документ |
Возвращаемые значения:
Имя | Тип | Описание |
Error | строка | Описание ошибки. Если значение заполнено, считается, что операция завершилась неудачно, вызывается исключение. |
Документ назначается пользователю
Событие о том, что документ готов передаваться на мобильное устройство. Вызывается при запросе с ТСД получения документа для работы.
В серверную операцию передается назначаемый пользователю документ (переменная сессии Document). Если выполнение серверной операции прерывается (переход [прервать операцию]), назначение документа пользователю ТСД отменяется. Если отмена назначения не требуется, операция должна завершиться по переходу [завершить операцию].
Операция может внести изменения в документ.
Параметры:
Имя | Тип | Описание |
Document | Объект документа | Назначаемый документ |
DeviceInfo | Объект DeviceInfo | Информация о состоянии ТСД. Можно получить ид. пользователя ТСД и др. |
Возвращаемые значения:
Имя | Тип | Описание |
NeedSave | булево | Указание серверу сохранить документ. Применяется при успешном завершении операции. |
NeedRestore | булево | Указание серверу загрузить документ из файла. Применяется при успешном завершении операции. Внесенные операцией изменения будут отменены. |
Error | строка | Описание ошибки. Если значение заполнено, считается, что операция завершилась неудачно, вызывается исключение. |
Документ назначен пользователю
Событие о том, что документ захвачен на обработку. Вызывается в момент, когда документ был передан на ТСД для работы с ним.
В серверную операцию передается добавленный документ (переменная сессии Document). Обработчик может внести изменения в документ. После вызова обработчика документ сохраняется на сервере и отдается на обработку.
Параметры:
Имя | Тип | Описание |
Document | Объект документа | Назначенный документ |
DeviceInfo | Объект DeviceInfo | Информация о состоянии ТСД. Можно получить ид. пользователя ТСД и др. |
Возвращаемые значения:
Имя | Тип | Описание |
Error | строка | Описание ошибки. Если значение заполнено, считается, что операция завершилась неудачно, вызывается исключение. |
Документ изменен
Событие об изменении документа. Вызывается при сохранении документа на сервер в процессе работы на ТСД при использовании в конфигурации Mobile SMARTS действия «Сохранение документа на сервер».
В серверную операцию передается измененный документ (переменная сессии Document).
Операция может внести изменения в документ.
Параметры:
Имя | Тип | Описание |
Document | Объект документа | Измененный документ |
DeviceInfo | Объект DeviceInfo | Информация о состоянии ТСД. Можно получить ид. пользователя ТСД и др. |
Возвращаемые значения:
Имя | Тип | Описание |
NeedSave | булево | Указание серверу сохранить документ. Применяется при успешном завершении операции. |
NeedRestore | булево | Указание серверу загрузить документ из файла. Применяется при успешном завершении операции. Внесенные операцией изменения будут отменены. |
Error | строка | Описание ошибки. Если значение заполнено, считается, что операция завершилась неудачно, вызывается исключение. |
Документ завершен
Событие о завершении обработки документа. Вызывается при получении сервером завершенного документа с ТСД.
В серверную операцию передается завершенный документ (переменная сессии Document).
Операция может внести изменения в документ.
Параметры:
Имя | Тип | Описание |
Document | Объект документа | Завершенный документ. |
DeviceInfo | Объект DeviceInfo | Информация о состоянии ТСД. Можно получить ид. пользователя ТСД и др. |
Возвращаемые значения:
Имя | Тип | Описание |
NeedSave | булево | Указание серверу сохранить документ. Применяется при успешном завершении операции. |
NeedRestore | булево | Указание серверу загрузить документ из файла. Применяется при успешном завершении операции. Внесенные операцией изменения будут отменены. |
Error | строка | Описание ошибки. Если значение заполнено, считается, что операция завершилась неудачно, вызывается исключение. |
Документ возвращен с ТСД без обработки
Вызывается когда документ с терминала был возвращен пользователем вызовом release (вернуть документ без изменений).
В серверную операцию передается возвращенный документ (переменная сессии Document).
Параметры:
Имя | Тип | Описание |
Document | Объект документа | Возвращенный документ |
DeviceInfo | Объект DeviceInfo | Информация о состоянии ТСД. Можно получить ид. пользователя ТСД и др. |
Возвращаемые значения:
Имя | Тип | Описание |
Error | строка | Описание ошибки. Если значение заполнено, считается, что операция завершилась неудачно, вызывается исключение. |
Документ удален
Событие об удалении документа с сервера. Удаление выполняется внешней системой.
В серверную операцию передается удаленный документ (переменная сессии Document). Отменить удаление нельзя.
Параметры:
Имя | Тип | Описание |
Document | Объект документа | Возвращенный документ |
DeviceInfo | Объект DeviceInfo | Информация о состоянии ТСД. Можно получить ид. пользователя ТСД и др. |
Возвращаемые значения:
Имя | Тип | Описание |
Error | строка | Описание ошибки. Если значение заполнено, считается, что операция завершилась неудачно, вызывается исключение. |
Получить список документов
Событие о запросе получения списка документов с сервера. Вызывается при заходе в список документов на терминале и периодически при нахождении внутри списка.
Для того, чтобы выполнялся вызов события, в настройках типа документа в панели управления должна быть включена настройка «Показывать в списке документы на сервере — Да».
Параметры:
Имя | Тип | Описание |
Result | Коллекция описаний документов DocumentDescriptionCollection | В параметр Result передается список описаний документов, полученный предыдущим обработчиком данного события в цепочке обработчиков. Если предыдущего обработчика нет или он вернул null, передается null. |
Document | Объект документа | Новый документ с тем типом, список документов которого был запрошен. |
DeviceInfo | Объект DeviceInfo | Информация о состоянии ТСД. Можно получить ид. пользователя ТСД и др. |
Возвращаемые значения:
Имя | Тип | Описание |
Result | Коллекция описаний документов DocumentDescriptionCollection | Операция может внести изменения в переданную коллекцию описаний документов или вернуть новую коллекцию |
Error | строка | Описание ошибки. Если значение заполнено, считается, что операция завершилась неудачно, вызывается исключение. |
Получить документ
Событие о запросе получения документа по идентификатору или штрихкоду с сервера. Событие может использоваться совместно с событием «Получить список документов».
Также получение документа может выполняться по штрихкоду, отсканированному в окне выбора документов. В этом случае в параметрах типа документа должна быть включена настройка «Выбирать по штрихкоду с сервера — Да».
Параметры:
Имя | Тип | Описание |
DocumentTypeName | строка | Имя типа запрошенного документа |
DocumentId | строка | Идентификатор или штрихкод запрошенного документа |
GetDocumentMode | целое число |
Режим получения документа: =0 — получить документ по ид; =1 — получить документ по штрихкоду. |
Document | Объект документа | Документ, полученный предыдущим обработчиком данного события в цепочке обработчиков. Если предыдущего обработчика нет или он вернул null, передается новый документ соответствующего типа. |
DeviceInfo | Объект DeviceInfo | Информация о состоянии ТСД. Можно получить ид. пользователя ТСД и др. |
Возвращаемые значения:
Имя | Тип | Описание |
Result | Объект документа | Документ, возвращаемый обработчиком на ТСД. Если документ не найден, нужно вернуть null. |
Error | строка | Описание ошибки. Если значение заполнено, считается, что операция завершилась неудачно, вызывается исключение. |