Обработчик «Перед началом работы с документом»

Последние изменение: 21.09.2017


Данный обработчик позволяет задать операцию, которая будет выполняться на ТСД перед открытием документа. При выполнении обработчика тело документа не скачивается с сервера Mobile SMARTS (при работе с сервером) и не загружается в память ТСД (как при открытии документа с сервера Mobile SMARTS, так и при открытии документа, хранящегося на ТСД). Загружается только заголовок документа.

Если из операции выполняется выход с помощью [завершить операцию], то документ будет открыт сразу (в случае документа, открываемого с сервера, сначала происходит его загрузка на ТСД). 

Если выход выполняется с помощью перехода [прервать операцию], то документ не открывается (таким путем можно реализовать отмену открытия документа).

Обработчик задается в Панели управления Mobile SMARTS для каждого типа документа:

В операцию не передаются параметры и возврат значений также не предусмотрен.

При этом в операции доступна переменная сессии Document, в которой содержится объект DocumentDescription  - объект, имеющий те же поля, что и шапка документа (как основные поля, так и дополнительные), но не имеющий строк.

В операции можно проставлять значения в свойства этого объекта Document. Например:

Document.ИмяПоля = Значение;


Если операция завершается успешно (по переходу [завершить операцию]), то проставленные значения будут переданы на сервер (в случае сервера), а затем переписаны в сам открываемый документ (как в случае сервера, так и в случае локального документа на ТСД).

Значения, присвоенные в Document в операции “Перед открытием документа”, могут быть получены во внешней системе в обработчике события сервера ПолучитьДокумент. Объект Document из события копируется в свойство DeviceInfo.Document, того самого DeviceInfo, который передается на сервер и оказывается доступен в обработчиках событий сервера в учетной системе.

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

Пример:

Допустим, с документом учетной системы “Поступление” может выполняться работа по двум разным бизнес-процессам ТСД (Поступление штучное и Поступление комплектов).  Предположим, что на ТСД это тоже один тип документа, но выгрузка из внешней системы документов Mobile SMARTS в этих двух случаях выполняется по-разному. 

Получение документов происходит онлайн с помощью событий сервера Mobile SMARTS.  

На терминале отображается список документов Поступление:

 

Список получен из внешней системы с помощью серверного события “Получить список документов”, сами документы еще не выгружены на сервер Mobile SMARTS, отображаются только их шапки, возвращенные событием “Получить список документов”.

При выборе документа из списка вызывается новая операция “Перед открытием документа”, в которой реализован такой алгоритм, который показывает список выбора для открываемого документа:

 

Выбранное из списка значение присваивается как 

Document.ИмяБизнесПроцесса = SelectedItem.Наименование;


Далее, после завершения операции “Перед открытием документа”, происходит получение документа из учетной системы с помощью вызова обработчика события сервера ПолучитьДокумент. 

По умолчанию в обработчике во внешней системе недоступны данные, передаваемые с ТСД.  Чтобы объект сессии передавался в вызовы событий, в Панели управления должна быть включена настройка:


Далее, в коде обработчика в учетной системе (например, в «1С:Предприятии»):

СессияСМАРТС = StorageConnector.FromXml(xmlСессии);
ИмяБП = СессияСМАРТС.DeviceInfo.Document.GetField("ИмяБизнесПроцесса");