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