Перейти к основному содержимому

Запуск обработки 1С в режиме онлайн-обмена

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

При установлении сервером Mobile SMARTS внешнего соединения к 1С посредством COM-коннектора срабатывает обработчик глобального ядра «ИнициализацияПодключенияСМАРТС()», которому передаётся параметр «mXmlDoc» — строка в формате JSON с информацией о текущей сессии Mobile SMARTS (при включённом режиме JSON в настройках Mobile SMARTS). Функция возвращает строку «xml», «json» либо логическое «Истина» в зависимости от входных данных. В рамках обработчика вызывается метод глобального ядра «ГлЯдро_Инициализация()», работа которого по сути повторяет аналогичный метод локального ядра «_ЛокКонтекст.ЛокЯдро_Инициализация()».

  1. Инициализируем переменную ядра «АдресаПеременных».

  2. Извлекаем из хранилища общих настроек 1С (ХОН) значения ядровых переменных «ПараметрыПодключенияMS» и «ТипИнтерфейса», сохраняем их также в структуру «АдресаПеременных» под соответствующими ключами.

  3. Устанавливаем в «АдресаПеременных» флаг «ИспJSON_mXmlDoc», обозначающий использование REST_API и JSON-формата для обмена данными.

  4. Очищаем переменные ядра «COMЧастнойБазыMS / COMВременнойБазыMS / COMБазыMS».

  5. Выполняем попытку соединения с базой Mobile SMARTS через метод «ГлЯдро_ПроверитьСоединениеССерверомSMARTS()»; при неудаче прекращаем инициализацию, при успехе — переходим дальше.

  6. Загружаем настройки Mobile SMARTS для конфигурации ядра: используем кэш, если с момента последнего обновления прошло не более 900 секунд и настройки не изменились, иначе запрашиваем актуальные данные из базы Mobile SMARTS.

Процесс инициализации ядра

  1. В переменную ядра «КатегорииНастроекMS» загружаем категории настроек: сериализуемые, узловые, подключения, справочники и номенклатура.

  2. Создаём пустую структуру настроек в переменной «ТекущиеНастройкиMS», содержащую все возможные ключи (например, «ВыгружатьНоменклатуруСразу», «НастройкиОбменаСправочников», «НастройкиБизнесПроцессов»).

  3. Получаем актуальные значения настроек из базы Mobile SMARTS и заполняем ими структуру. Если установлен текущий узел для 1С, берем настройки из соответствующей базы Mobile SMARTS (может быть как частная база, так и основная).

    Для онлайн-режима дополнительно сохраняем эти данные в ХОН для ускорения доступа в будущем.

  4. В переменную ядра «СтруктураМетаданных» заносим метаданные 1С-документов, MS-документов, пользователей MS, устройств MS, таблиц MS и UniПолейНоменклатуры.

    Для онлайна также сохраняем эти сведения в ХОН для последующего быстрого доступа.

  5. В переменную ядра «ДанныеТекущегоУзла» записываем ID, имя узла и ID базы MS, связанной с данным узлом.

  6. В переменную ядра «ПраваПользователя» загружаем права пользователя, например, «Администратор» или «Пользователь». Данный механизм пока на стадии разработки и служит основой для будущей системы разграничения прав.

  7. В «АдресаПеременных» копируем значения «КатегорииНастроекMS», «ТекущиеНастройкиMS», «СтруктураМетаданных», «ДанныеТекущегоУзла».

  8. Производим обновление структуры настроек, если она была изменена (подробности механизма описаны в статье).

  9. Временная мера: объединяем произвольные коды из четырёх ключей:

    ПроизвольныеКоды_Выгрузка_ШапкаДокумента, ПроизвольныеКоды_Выгрузка_ТабличнаяЧастьДокумента, ПроизвольныеКоды_Загрузка_ШапкаДокумента, ПроизвольныеКоды_Загрузка_ТабличнаяЧастьДокумента

  10. Проверяем актуальность типовых бизнес-процессов.

  11. Объединяем настройки бизнес-процессов из ключей «НастройкиБизнесПроцессов_ПоУмолчанию», «НастройкиБизнесПроцессов_Пользовательские», «НастройкиБизнесПроцессов_ПользовательскиеНастройки» в единый ключ «НастройкиБизнесПроцессов» и сохраняем в кэш.

  12. Аналогично объединяем произвольные коды из ключей «ПроизвольныеКоды_ПоУмолчанию», «ПроизвольныеКоды_Пользовательские» в общий ключ «ПроизвольныеКоды» и помещаем в кэш.

Завершение инициализации ядра

  1. Фиксируем в ХОН дату и время последнего обновления настроек из базы Mobile SMARTS по ключу «Cleverence_ДатаАктуальностиКэша».

  2. Запускаем подключение интеграционной обработки через метод «ГлЯдро_ПодключитьИнтеграционнуюОбработку()», результаты сохраняем в структуру «АдресаПеременных»; под ключом «ИнтеграционнаяОбработка» фиксируем адрес интеграционной обработки во временном хранилище, путь к файлу и имя ИО. По ключу «ИнтеграционнаяОбработкаПодключена» ставим значение «Истина».

    Для онлайн-режима существует отдельная переменная глобального ядра «КэшАдресаПеременных», которая представляет собой копию локальной переменной «АдресаПеременных».

В этой статье