Операции, выполняемые на сервере

Последние изменения: 15.05.2020

В платформе 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 строка Описание ошибки. Если значение заполнено, считается, что операция завершилась неудачно, вызывается исключение.