Запуск обработки 1С в режиме онлайн-обмена
Данная процедура выполняется только для глобального ядра, так как в онлайн-режиме 1С происходит запуск через внешнее соединение с помощью COM-коннектора.
При установлении сервером Mobile SMARTS внешнего соединения к 1С посредством COM-коннектора срабатывает обработчик глобального ядра «ИнициализацияПодключенияСМАРТС()», которому передаётся параметр «mXmlDoc» — строка в формате JSON с информацией о текущей сессии Mobile SMARTS (при включённом режиме JSON в настройках Mobile SMARTS). Функция возвращает строку «xml», «json» либо логическое «Истина» в зависимости от входных данных. В рамках обработчика вызывается метод глобального ядра «ГлЯдро_Инициализация()», работа которого по сути повторяет аналогичный метод локального ядра «_ЛокКонтекст.ЛокЯдро_Инициализация()».
-
Инициализируем переменную ядра «АдресаПеременных».
-
Извлекаем из хранилища общих настроек 1С (ХОН) значения ядровых переменных «ПараметрыПодключенияMS» и «ТипИнтерфейса», сохраняем их также в структуру «АдресаПеременных» под соответствующими ключами.
-
Устанавливаем в «АдресаПеременных» флаг «ИспJSON_mXmlDoc», обозначающий использование REST_API и JSON-формата для обмена данными.
-
Очищаем переменные ядра «COMЧастнойБазыMS / COMВременнойБазыMS / COMБазыMS».
-
Выполняем попытку соединения с базой Mobile SMARTS через метод «ГлЯдро_ПроверитьСоединениеССерверомSMARTS()»; при неудаче прекращаем инициализацию, при успехе — переходим дальше.
-
Загружаем настройки Mobile SMARTS для конфигурации ядра: используем кэш, если с момента последнего обновления прошло не более 900 секунд и настройки не изменились, иначе запрашиваем актуальные данные из базы Mobile SMARTS.
Процесс инициализации ядра
-
В переменную ядра «КатегорииНастроекMS» загружаем категории настроек: сериализуемые, узловые, подключения, справочники и номенклатура.
-
Создаём пустую структуру настроек в переменной «ТекущиеНастройкиMS», содержащую все возможные ключи (например, «ВыгружатьНоменклатуруСразу», «НастройкиОбменаСправочников», «НастройкиБизнесПроцессов»).
-
Получаем актуальные значения настроек из базы Mobile SMARTS и заполняем ими структуру. Если установлен текущий узел для 1С, берем настройки из соответствующей базы Mobile SMARTS (может быть как частная база, так и основная).
Для онлайн-режима дополнительно сохраняем эти данные в ХОН для ускорения доступа в будущем.
-
В переменную ядра «СтруктураМетаданных» заносим метаданные 1С-документов, MS-документов, пользователей MS, устройств MS, таблиц MS и UniПолейНоменклатуры.
Для онлайна также сохраняем эти сведения в ХОН для последующего быстрого доступа.
-
В переменную ядра «ДанныеТекущегоУзла» записываем ID, имя узла и ID базы MS, связанной с данным узлом.
-
В переменную ядра «ПраваПользователя» загружаем права пользователя, например, «Администратор» или «Пользователь». Данный механизм пока на стадии разработки и служит основой для будущей системы разграничения прав.
-
В «АдресаПеременных» копируем значения «КатегорииНастроекMS», «ТекущиеНастройкиMS», «СтруктураМетаданных», «ДанныеТекущегоУзла».
-
Производим обновление структуры настроек, если она была изменена (подробности механизма описаны в статье).
-
Временная мера: объединяем произвольные коды из четырёх ключей:
ПроизвольныеКоды_Выгрузка_ШапкаДокумента, ПроизвольныеКоды_Выгрузка_ТабличнаяЧастьДокумента, ПроизвольныеКоды_Загрузка_ШапкаДокумента, ПроизвольныеКоды_Загру зка_ТабличнаяЧастьДокумента
-
Проверяем актуальность типовых бизнес-процессов.
-
Объединяем настройки бизнес-процессов из ключей «НастройкиБизнесПроцессов_ПоУмолчанию», «НастройкиБизнесПроцессов_Пользовательские», «НастройкиБизнесПроцессов_ПользовательскиеНастройки» в единый ключ «НастройкиБизнесПроцессов» и сохраняем в кэш.
-
Аналогично объединяем произвольные коды из ключей «ПроизвольныеКоды_ПоУмолчанию», «ПроизвольныеКоды_Пользовательские» в общий ключ «ПроизвольныеКоды» и помещаем в кэш.
Завершение инициализации ядра
-
Фиксируем в ХОН дату и время последнего обновления настроек из базы Mobile SMARTS по ключу «Cleverence_ДатаАктуальностиКэша».
-
Запускаем подключение интеграционной обработки через метод «ГлЯдро_ПодключитьИнтеграционнуюОбработку()», ре зультаты сохраняем в структуру «АдресаПеременных»; под ключом «ИнтеграционнаяОбработка» фиксируем адрес интеграционной обработки во временном хранилище, путь к файлу и имя ИО. По ключу «ИнтеграционнаяОбработкаПодключена» ставим значение «Истина».
Для онлайн-режима существует отдельная переменная глобального ядра «КэшАдресаПеременных», которая представляет собой копию локальной переменной «АдресаПеременных».