Архитектура решения для работы продуктов на платформе Mobile SMARTS с «1С: Предприятием»
Сердце обработки 1С от «Клеверенс» — это ядро обработки, программный интерфейс, обеспечивающий взаимодействие между товароучетными решениями на базе 1С и приложениями платформы Mobile SMARTS («Магазин 15»). Именно ядро определяет алгоритмы выполнения всех ключевых операций в рамках обработки: обмен справочниками, обмен документами, различные конфигурации и параметры.
Прямое редактирование ядра невозможно — для его взаимодействия с конфигурацией 1С применяется интеграционная обработка, в которую и вносятся все необходимые изменения.
Этот раздел создан для того, чтобы объяснить, как устроено ядро и по каким принципам работает сама обработка.
Ядро и формы обработки 1С
Ядро
Ядро — это интерфейс, позволяющий наладить связь между учетной системой на базе 1С и программами «Магазин 15», построенными на Mobile SMARTS.
Ядро не зависит от конкретной конфигурации 1С — оно поставляется отдельно, а интеграция осуществляется за счёт специальной обработки, содержащей запросы справочников и механизмы импорта документов из Mobile SMARTS в 1С.
Изменения в ядре разрешено вносить исключительно разработчикам «Клеверенс». Интеграция ядра и конфигурации выполняется через интеграционную обра ботку. В результате всегда используется одна версия ядра, отличия же кроются в конфигурациях интеграции и настройках в Mobile SMARTS. Этот подход схож с принципами платформы «1С:Предприятие», где платформа задаёт правила, а конфигурации — адаптируются к нуждам пользователей.
Ядро делится на два контекста:
- Глобальный контекст (ядро) — запускается на сервере 1С. Включает модули, реквизиты и таблицы. Здесь размещены ключевые механизмы работы с базой Mobile SMARTS, настройками, обработкой данных. В режиме онлайн также хранятся активные параметры системы.
- Локальный контекст (ядро) — форма, содержащая упрощённую версию ядра. Содержит функции и методы, отвечающие за взаимодействие с COM-объектами Mobile SMARTS.
Для обоих контекстов формируется кэш — наборы данных, получаемых из баз 1С и Mobile SMARTS при запуске ядра.
Локальное ядро необходимо только при размещении сервера Mobile SMARTS на локальной машине. Во всех остальных вариантах используется только глобальное ядро.
Технически взаимодействие организовано через реквизиты «ЯдроОбщее» и «ЯдроКомпоненты», создаваемые в каждом объекте и форме. Эти реквизиты обеспечивают ссылки на соответствующий контекст:
- «ЯдроОбщее» — содержит ссылку на «ОбработкаОбъект» (глобальный контекст).
- «ЯдроКомпоненты» — может содержать либо ссылку на «ОбработкаОбъект» (если компонент размещён на сервере), либо ссылку на форму с локальным контекстом (если компонент работает на клиенте).
Обращение к ядру строго регламентировано:
- В модуле объекта используется
ЭтотОбъект.ЯдроОбщееилиЭтотОбъект.ЯдроКомпоненты. - В модулях форм —
ЭтаФорма.ЯдроОбщееилиЭтаФорма.ЯдроКомпоненты.
Методы локального ядра аналогичны методам глобального — разница только в способе вызова, например: ЭтотОбъект.ЯдроОбщее.ПолучитьНастройку(...) или ЭтаФорма.ЯдроКомпоненты.СохранитьДокументНаСервереSMARTS().
Обмен данными между глобальным контекстом и другими элементами происходит через механизм временного хранилища 1С.
Последователь ность инициализации контекста:
- При старте системы глобальный контекст инициализируется:
ЭтотОбъект.ЯдроОбщее = ЭтотОбъект. - Читается настройка местоположения сервера SMARTS.
- Если он размещён на сервере —
ЭтотОбъект.ЯдроКомпоненты = ЭтотОбъект. - Если на клиенте — локальный контекст инициализируется только при открытии формы.
- Если он размещён на сервере —
- Если локальный контекст доступен — из Mobile SMARTS читаются настройки и помещаются в кэш глобального контекста.
- В онлайн-режиме на этом всё, в остальных случаях (батч, автообмен) процесс продолжается.
- При открытии главной формы заново инициализируется глобальный контекст:
ЭтаФорма.ЯдроОбщее = ЭтотОбъект. - Повторно читается настройка местоположения сервера Mobile SMARTS.
- Если он на сервере —
ЭтаФорма.ЯдроКомпоненты = ЭтотОбъект. - Если на клиенте —
ЭтаФорма.ЯдроКомпоненты = ПолучитьФорму("ФормаЛокальногоКонтекста").
- Если он на сервере —
Реквизиты «ЯдроОбщее» и «ЯдроКомпоненты» передаются в подчинённые формы при их открытии.
Локальный контекст не имеет доступа к глобальному — все нужные параметры нужно передавать напрямую при вызове методов.
Формы
Формы не входят в состав ядра напрямую. Они реализуют пользовательский интерфейс для трёх основных функций:
- управление настройками;
- обмен справочниками;
- обмен документами.
Категории форм:
- Ключевые формы — главная, обмен документами, список отборов справочников, локальный контекст.
- Формы списков — используются для отображения таблиц (узлы, бизнес-процессы, отборы, параметры и др.), доступны только для просмотра (кроме списка отборов справочников); возможно экспортировать/импортировать данные.
- Формы настроек — карточки, открывающиеся из списка, позволяют редактировать и сохранять данные.
- Формы просмотра — используются только для отображения документов MS.
- Служебные формы — выборы, загрузка новых ШК, параметры подключения, выбор документа/пользователя, редактирование запроса и др.
Методы работы с данными 1С или Mobile SMARTS не должны находиться в формах. Работа с 1С выполняется в глобальном ядре, с Mobile SMARTS — в локальном. Вся промежуточная логика — также в глобальном ядре.
Функциональность ядра обработки 1С
Основной функционал ядра делится на три блока:
- Управление параметрами обмена (настройки бизнес-процессов, торговых объектов, глобальные параметры, отборы и т.д.).
- Выгрузка справочников — онлайн, оффлайн, по расписанию.
- Выгрузка/загрузка документов между 1С и Mobile SMARTS.
Остальной функционал — вспомогательный.
-
Тран зитный блок — находится на клиенте, передаёт управление на сервер, использует временное хранилище для передачи параметров и результатов.
-
Блок работы с ХОН (хранилищем общих настроек) — сохраняет/восстанавливает настройки подключения и параметры текущего узла. Работа возможна только на сервере, доступ с клиента — через транзитный блок.
-
Прямой интерфейс работы с Mobile SMARTS (API) — доступен как на сервере, так и на клиенте. Работает через COM-объекты и включает:
- управление настройками;
- выгрузку справочников;
- обмен документами;
- получение информации о базах, ошибках, пользователях, шаблонах весового товара и др.
-
Обёртки над API (клиент/сервер) — инициализируют кэши, читают и сохраняют настройки, работают с файлами форм списков и карточек настроек (только на клиенте).
-
Методы выгрузки справочников и номенклатуры:
- работа с данными 1С только на сервере;
- формирование запросов, работа с СКД, постобработка — только сервер;
- API-взаимодействие — и клиент, и сервер.
-
Работа с документами 1С — аналогично справочникам, методы получения, записи и список документов доступны только на сервере.
-
Внешние вызовы — работают только на сервере или в внешнем соединении, обеспечивают онлайн-работу терминалов:
- выгрузка справочников и документов;
- получение списков;
- загрузка документов обратно в 1С.
Хранение объектов и переменных
Переменные ядра
Переменные ядра — это место хранения данных, к которым часто требуется обращаться из различных методов ядра. Их задача — обеспечить быстрый доступ к данным без необходимости постоянного получения информации из баз Cleverence 1С.
Данные, которые попадают в переменные ядра при запуске обработки (в режиме онлайн или интерактивно), поступают из разных источников: метаданных базы Cleverence, конфигурационных настроек, общих настроек 1С (ХОН), а также формируются программно или заполняются значениями по умолчанию.
В локальном ядре используются:
- Клиентские переменные формы "ЛокальныйКонтекст" — доступны во всех клиентских методах формы.
- Реквизиты формы "ЛокальныйКонтекст" — доступны как в клиентских, так и в серверных методах формы.
| Имя переменной | Назначение | Источник | Изменяемость |
| Клиентские переменные формы "ЛокальныйКонтекст" | |||
| РасположениеКомпонент | Строка: «НаКлиенте» или «НаСервере». Указывает, откуда будет идти взаимодействие с базой Cleverence: с клиентской и ли серверной части 1С. При обмене через COM важна регистрация внешней компоненты. При работе через REST API ничего дополнительно настраивать не требуется. | ХОН | Да, через форму настроек подключения |
| ДанныеТекущегоУзла | Структура с ID узла, наименованием (например, «Магазин на Ленина») и ID базы Cleverence. Используется для определения, какая именно база (основная или частная) участвует в обмене. Частная база содержит документы и справочники, а основная — только настройки. | Настройки базы Cleverence | Да, на главной форме при выборе торговой точки |
| КатегорииНастроекMS | Структура, включающая: - сериализуемые настройки — таблицы, сохраняемые в файл; - узловые настройки — параметры, зависящие от узла (магазина, склада); - подключение — ID базы, строка подключения и пр.; - справочники — флажки выгрузки объектов; - настройки номенклатуры — шаблоны, префиксы и др. | Программно | Нет |
| НастройкиИнициализированы | Булево: показывает, загруже ны ли настройки из базы Cleverence. Если нет, требуется повторная загрузка. | Программно | Да, при потере соединения |
| ПараметрыПодключенияMS | Структура: ID базы, имя, строка подключения, QR, токен, путь и тип ИО, версия продукта и др. | ХОН | Да, через форму настройки |
| СтруктураМетаданных | Структура: метаданные документов 1С и MS, пользователи и устройства MS, таблицы и поля. | Метаданные базы 1С и MS, настройки Cleverence | Нет |
| COMЧастнойБазыMS | COM-объекты (TerminalConnector, StorageConnector) для частной базы. Актуально при использовании COM. При REST API не используется. | Программно | Да, при смене базы обмена |
| COMВременнойБазыMS | Используется только на форме подключения, чтобы проверить соединение, не влияя на рабочие базы. | Программно | Да, служебная переменная |
| COMБазыMS | Как и COMЧастнойБазыMS, но применяется для основной базы MS. | Программно | Да, при смене базы обмена |
| ТекущиеНастройкиMS | Структура: содержит пары Ключ-Значение для акти вной базы Cleverence, например: ВыгружатьНоменклатуруСразу = Истина. | Настройки базы MS | Да, редактируется из разных форм |
| ПутьКОбработке | НЕ ИСПОЛЬЗУЕТСЯ! Используется поле ПутьИнтеграционнойОбработки из ПараметрыПодключенияMS. | — | — |
| КОМсоздан | Булево: подтверждает, что COM-объекты (TerminalConnector и StorageConnector) созданы. | Программно | Да, при потере связи |
| ПраваПользователя | Строка: роль в 1С, например, «Администратор» или «Пользователь». Определяет доступность элементов интерфейса. | Метаданные базы 1С | Нет |
| ФормаИнтеграционнойОбработки | Тип — форма клиентского приложения. Используется для вызова обработчика "После открытия формы документа 1С". | Программно | Да, в форме настройки ИО |
| Реквизиты формы "ЛокальныйКонтекст" | |||
| _ИнтеграционнаяОбработкаАдрес | Строка: путь к интеграционной обработке во временном хранилище, откуда она потом вызывается сервером. | Программно | Да, через форму настройки ИО |
| АдресаПеременных | Структура: хранит адреса других переменных ядра во временном хранилище, для возможности передачи в глобальное ядро. Содержит, в том числе: - ДанныеТекущегоУзла - ИнтеграционнаяОбработка - ПараметрыПодключенияMS - ТипИнтерфейса и др. | Программно, через уже инициализированные переменные | — |
| ЕстьЧастнаяБаза | Булево: показывает, привязан ли к текущей 1С базе узел с частной базой Cleverence. | Программно | Да, при выборе узла |
| ИмяИнтеграционнойОбработки | Строка или СправочникСсылка: - для внешней обработки — путь к файлу; - встроенной — имя встроенной обработки; - справочной — ссылка на элемент справочника. | ХОН | Да, в форме настройки ИО |
| ИнтеграционнаяОбработкаПодключена | Булево: показывает, была ли успешно подключена интеграционная обработка. | Программно | Да, при потере соединения |
| ПолноеИмяОбъекта | Строка: полное имя ядра обработки, например, ВнешняяОбработка.КлеверенсТСД_ОсновнаяОбраб отка. | Программно | Нет |
| ТипОбработки | Строка: определяет, откуда берется ИО — «ФайлНаДиске», «Встроенная» или «СправочникСсылка». | Настройки базы MS | Да, в форме настройки ИО |
Для глобального ядра доступны следующие данные:
-
реквизиты обработки, которые можно использовать из любого метода модуля объекта;
- ЭтоWebСервис – логический признак, определяющий, работает ли ядро через веб-сервис;
- COMЧастнойБазыMS, COMВременнойБазыMS, COMБазыMS – дублируют аналогичные переменные локального ядра.
-
серверные переменные, доступные во всех методах модуля объекта;
- КэшАдресаПеременных – локальная копия переменной АдресаПеременных, используется только в онлайн-режиме, когда требуется сохранить значения переменных ядра между вызовами.
-
переменная АдресаПеременных из локального ядра, которая передается в глобальные методы ядра и обеспечивает доступ к основным локальным переменным.