Архитектура Mobile SMARTS

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

Архитектура Mobile SMARTS клиент-серверная, с толстым клиентом и возможностью работы в отсутствие сервера.

Для полноценной работы необходим сервер Mobile SMARTS, установленный на ноутбуке, на ПК, на севере или в облаке. 

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

Вне зависимости от того, используется сервер или нет, для работы нужна база данных Mobile SMARTS.

На мобильном устройстве работает толстый клиент Mobile SMARTS, который адаптирован под каждое конкретное совместимое оборудование, умеет управлять встроенным сканером штрихкода, беспроводной связью, камерой и т.д. (см. подробнее оборудование, поддерживаемое Mobile SMARTS).

Архитектура системы клиент-серверная, но клиент Mobile SMARTS может работать в полностью автономном режиме (оффлайн) вообще без какого-либо сервера.  Это удобно для решений в стиле загрузка/выгрузка файлов напрямую между ТСД и учетной базой (выездная торговля, выездная инвентаризация и т.п. без Wi-Fi и мобильного интернета).

Сервер Mobile SMARTS обязателен для беспроводных вариантов решения, когда используется Wi-Fi или мобильный интернет.  Основная задача сервера — обслуживание запросов на получение/отправку документов, номенклатуры и других данных от клиентов с мобильных ТСД. Сервер раздает клиентам документы/задания в соответствии с указаниями, очередностью, приоритетом, и получает от них результаты работы.  

Помимо этого сервер занимается хранением серверных справочников, хранением локальных справочников ТСД для отправки клиентам, а также временным хранением документов ТСД.

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




FILE: /var/www/clever_user/data/www/clever.invbl.ru/bitrix/modules/iblock/classes/mysql/iblockelement.php
LINE: 803
MySQL Query Error: SELECT BE.NAME as NAME,BE.ID as ID,DATE_FORMAT(BE.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X,UNIX_TIMESTAMP(BE.TIMESTAMP_X) as TIMESTAMP_X_UNIX,BE.MODIFIED_BY as MODIFIED_BY,DATE_FORMAT(BE.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE,UNIX_TIMESTAMP(BE.DATE_CREATE) as DATE_CREATE_UNIX,BE.CREATED_BY as CREATED_BY,BE.IBLOCK_ID as IBLOCK_ID,BE.IBLOCK_SECTION_ID as IBLOCK_SECTION_ID,BE.ACTIVE as ACTIVE,IF(EXTRACT(HOUR_SECOND FROM BE.ACTIVE_FROM)>0, DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y')) as ACTIVE_FROM,IF(EXTRACT(HOUR_SECOND FROM BE.ACTIVE_TO)>0, DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y')) as ACTIVE_TO,IF(EXTRACT(HOUR_SECOND FROM BE.ACTIVE_FROM)>0, DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y')) as DATE_ACTIVE_FROM,IF(EXTRACT(HOUR_SECOND FROM BE.ACTIVE_TO)>0, DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y')) as DATE_ACTIVE_TO,BE.SORT as SORT,BE.PREVIEW_PICTURE as PREVIEW_PICTURE,BE.PREVIEW_TEXT as PREVIEW_TEXT,BE.PREVIEW_TEXT_TYPE as PREVIEW_TEXT_TYPE,BE.DETAIL_PICTURE as DETAIL_PICTURE,BE.DETAIL_TEXT as DETAIL_TEXT,BE.DETAIL_TEXT_TYPE as DETAIL_TEXT_TYPE,BE.SEARCHABLE_CONTENT as SEARCHABLE_CONTENT,BE.WF_STATUS_ID as WF_STATUS_ID,BE.WF_PARENT_ELEMENT_ID as WF_PARENT_ELEMENT_ID,BE.WF_LAST_HISTORY_ID as WF_LAST_HISTORY_ID,BE.WF_NEW as WF_NEW,if (BE.WF_DATE_LOCK is null, 'green', if(DATE_ADD(BE.WF_DATE_LOCK, interval 60 MINUTE)<now(), 'green', if(BE.WF_LOCKED_BY=0, 'yellow', 'red'))) as LOCK_STATUS,BE.WF_LOCKED_BY as WF_LOCKED_BY,DATE_FORMAT(BE.WF_DATE_LOCK, '%d.%m.%Y %H:%i:%s') as WF_DATE_LOCK,BE.WF_COMMENTS as WF_COMMENTS,BE.IN_SECTIONS as IN_SECTIONS,BE.SHOW_COUNTER as SHOW_COUNTER,DATE_FORMAT(BE.SHOW_COUNTER_START, '%d.%m.%Y %H:%i:%s') as SHOW_COUNTER_START,BE.SHOW_COUNTER_START as SHOW_COUNTER_START_X,BE.CODE as CODE,BE.TAGS as TAGS,BE.XML_ID as XML_ID,BE.XML_ID as EXTERNAL_ID,BE.TMP_ID as TMP_ID,concat('(',U.LOGIN,') ',ifnull(U.NAME,''),' ',ifnull(U.LAST_NAME,'')) as USER_NAME,concat('(',UL.LOGIN,') ',ifnull(UL.NAME,''),' ',ifnull(UL.LAST_NAME,'')) as LOCKED_USER_NAME,concat('(',UC.LOGIN,') ',ifnull(UC.NAME,''),' ',ifnull(UC.LAST_NAME,'')) as CREATED_USER_NAME,L.DIR as LANG_DIR,B.LID as LID,B.IBLOCK_TYPE_ID as IBLOCK_TYPE_ID,B.CODE as IBLOCK_CODE,B.NAME as IBLOCK_NAME,B.XML_ID as IBLOCK_EXTERNAL_ID,B.DETAIL_PAGE_URL as DETAIL_PAGE_URL,B.LIST_PAGE_URL as LIST_PAGE_URL,B.CANONICAL_PAGE_URL as CANONICAL_PAGE_URL,DATE_FORMAT(BE.DATE_CREATE, '%Y.%m.%d') as CREATED_DATE,if(BE.WF_STATUS_ID = 1, 'Y', 'N') as BP_PUBLISHED FROM b_iblock B INNER JOIN b_lang L ON B.LID=L.LID INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID INNER JOIN ( SELECT DISTINCT BSE.IBLOCK_ELEMENT_ID FROM b_iblock_section_element BSE INNER JOIN b_iblock_section BS ON BSE.IBLOCK_SECTION_ID = BS.ID WHERE ((( (BS.LEFT_MARGIN >= 286 AND BS.RIGHT_MARGIN <= 287) ))) ) BES ON BES.IBLOCK_ELEMENT_ID = BE.ID LEFT JOIN b_user U ON U.ID=BE.MODIFIED_BY LEFT JOIN b_user UL ON UL.ID=BE.WF_LOCKED_BY LEFT JOIN b_user UC ON UC.ID=BE.CREATED_BY WHERE 1=1 AND ( ((((BE.IBLOCK_ID = '15')))) AND ((((BE.ACTIVE='Y')))) ) AND (((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL))) ORDER BY BE.NAME asc [[3] Error writing file '/tmp/MYifCPOA' (Errcode: 28 - No space left on device)]

DB query error.
Please try later.