Разделение таблиц на части с помощью TableSlicerConnector

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

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

Например, у нас есть большая таблица на 1 000 000 записей по остаткам товаров на 10 магазинов. В случае необходимости TableSlicerConnector поделит эту таблицу на несколько частей поменьше, например, на 10 файлов, и при обмене с ТСД будет отправлена информацию только по тому магазину, к которому привязан пользователь. 

Как добавить новый коннектор

Для того, чтобы создать новый TableSlicerConnector, необходимо:

  1. В панели управления Mobile SMARTS выбрать пункт «Внешние соединения» → «Добавить внешнее соединение». 

  2. Из открывшегося списка выбрать TableSlicerConnector. Выбрать «ОК».

  3. Далее, во вкладке «Свойства» необходимо указать все критерии, по которым происходит «вырезание» нужной табличной части (подробнее читайте ниже, в пункте «Настройки»).

Если нужно разделить несколько таблиц, то необходимо создать столько же коннекторов в панели управления с отдельными настройками для каждого настройками.

 

Настройки для TableSlicerConnector:

 

  1. «Наименование таблицы» -  задается наименование таблицы, которую нужно разбить на части.

  2. «Наименование столбца» - задается имя столбца, по содержимому которого будет происходить деление на дополнительные файлы. При этом на диске создается папка с названием таблицы и подпапки со значениями из этого столбца.

  3. «Вычисляемое выражение» - выражение, с помощью которого определяется часть таблицы для отправки на конкретный ТСД. Данное значение вычисляется клиентом во время запроса при обновлении таблицы. Значение поля получается из объекта DeviceInfo. Например, если указано Item.WarehouseId, то будет получено значение поля DeviceInfo.WarehouseId. В данном примере для отправки на ТСД будут отобраны строки, в которых значение в столбце, выбранном в свойстве «Наименование столбца» будет равно значению поля DeviceInfo.WarehouseId.

  4. «Поведение при ошибке» - определяет дальнейший алгоритм действий в случае если возникла ошибка при вычислении выражения и получении урезанного файла.

    Если указано «Отдавать таблицу целиком», то клиенту отправляется полная таблица. При этом необходимо помнить, что в таком случае все клиенты начнут качать полную таблицу и легко могут перегрузить сеть.

    Если указано «Ничего не отдавать», то при возникновении ошибки таблица не отправится клиенту, и на ТСД останутся необновленные данные. 

Пример использования TableSlicerConnector

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

ТСД привязан к складу, на котором он используется, и к его ID. Поэтому с помощью TableSlicerConnector из полной таблицы можно вырезать строки с ID нужного склада, и при запросе с ТСД отправлять туда именно их.

Для этого коннектору нужно указать таблицу (в нашем случае «Остатки»), наименование столбца, по которому будет происходить вырезание (ИдСклада1С), и задать значение переменной в строке «Вычисляемое выражение» (Item.WarehouseId).

 

Исходная таблица остатков:

ИдСклада1С ИдНоменклатуры Характеристика Количество
СК000001 НМ0000001 3
СК000001 НМ0000002 5
СК000001 НМ0000003 24 размер 2
СК000001 НМ0000003 20 размер 15
СК000002
НМ0000001 красный 10
СК000002 НМ0000001 зеленый 8
СК000002 НМ0000002 24
СК000002 НМ0000003 7
СК000002 НМ0000004 9

Результат разделения таблицы по колонке «ИдСклада1С» можно увидеть в каталоге базы в папке Documents → Tables.

1 - целая таблица «Остатки» до разделения.

2 - папка, которая содержит составные части первоначальной таблицы в виде подпапок. Каждая подпапка хранит остатки по определенному складу.

Данные в папке СК000001:

ИдСклада1С ИдНоменклатуры Характеристика Количество
СК000001 НМ0000001 3
СК000001 НМ0000002 5
СК000001 НМ0000003 24 размер 2
СК000001 НМ0000003 20 размер 15

Данные в папке СК000002: 

ИдСклада1С ИдНоменклатуры Характеристика Количество
СК000002 НМ0000001 красный 10
СК000002 НМ0000001 зеленый 8
СК000002 НМ0000002 24
СК000002 НМ0000003 7
СК000002 НМ0000004