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

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

Инициализация ядра, локального либо глобального, зависит от того, с какой стороны доступна база Mobile SMARTS — с клиента или с сервера. Для глобального ядра вызываются методы, аналогичные локальному.

Открывается основная форма, срабатывает обработчик ПриОткрытии(), в котором:

  1. Формируем форму «ЛокальныйКонтекст» и помещаем её в переменную ядра «ЛокКонтекст»;

  2. Создаём пустую структуру «ЛокКонтекст.АдресаПеременных» для кеширования данных, необходимых для работы ядра и интеграционной обработки;

  3. Из хранилища общих настроек 1С (ХОН) извлекаем сохранённые при первом запуске параметры «ПараметрыПодключенияMS» — как общие, так и пользовательские;

  4. При наличии пользовательской настройки — используем её, иначе применяем общие параметры;

  5. Сохраняем параметры в структуру «_ЛокКонтекст.ПараметрыПодключенияMS»;

  6. Аналогичным способом получаем из ХОН значение переменной ядра «РасположениеКомпоненты»; если значение отсутствует, присваиваем по умолчанию «НаСервере», сохраняем в «_ЛокКонтекст.РасположениеКомпоненты»;

  7. По тому же алгоритму извлекаем из ХОН значение ядра «ТипИнтерфейса» и сохраняем в «_ЛокКонтекст.ТипИнтерфейса»;

    Значение по умолчанию здесь не устанавливается, поэтому, при отсутствии в ХОН типа интерфейса, значение будет «Неопределено».

    СтатусОбработки устанавливается в «НачалоВыполненияПроцедурыЗапускаОбработки».

  8. Проверяем связь с сервером 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», а также заполнена строка подключения через метод _ЛокКонтекст.ЛокЯдро_ПроверитьСозданиеКОМОбъекта(); меняем статус:

    СтатусОбработки = «НачалоПодключенияИнтеграционнойОбработкиСообщениеБезопасности»

  9. Подключаем интеграционную обработку через _ЛокКонтекст.ЛокЯдро_ПодключитьИнтеграционнуюОбработку(), результаты сохраняются в переменные ядра: ИмяИнтеграционнойОбработки, _ИнтеграционнаяОбработкаАдрес, ИнтеграционнаяОбработкаПодключена, ФормаИнтеграционнойОбработки, ТипОбработки, АдресаПеременных.ИнтеграционнаяОбработка.

  10. Для COM-подключения повторно проверяем создание COM-объектов «TerminalConnector» и «StorageConnector» в методе _ЛокКонтекст.ЛокЯдро_ПроверитьСозданиеКОМОбъекта().

    При отсутствии COM-объектов выводим пользователю сообщение о невозможности подключения внешней компоненты.

  11. Если COM-объекты созданы, но сервер недоступен, открываем окно настроек подключения и меняем статус на:

    СтатусОбработки = «КоннекторMSСозданПроверяемДоступностьБазы»

    Если COM-объекты созданы, сервер доступен, но база недоступна, также показываем форму настроек подключения.

    Если COM-объекты созданы, сервер и база доступны, запускаем инициализацию ядра через метод _ЛокКонтекст.ЛокЯдро_Инициализация().

Этап инициализации ядра

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

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

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

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

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

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

  7. При локальной инициализации вызываем метод «ГлЯдро_ОтправитьДанныеДляИнициализацииВГлКонтекст».

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

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

    • ПроизвольныеКоды_Выгрузка_ШапкаДокумента

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

    • ПроизвольныеКоды_Загрузка_ШапкаДокумента

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

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

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

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

  13. Формируем список узлов (торговых объектов) для выбора на главной форме, чтобы сменить узел для текущей базы 1С.

  14. Устанавливаем заголовок формы в зависимости от продукта — например, «Магазин 15», «Склад 15» и т.п.

  15. Добавляем ссылку на базу знаний соответствующую продукту.

  16. Отображаем QR-код на главной форме для быстрого подключения терминала к нужной базе через сканирование.

  17. Устанавливаем статус обработки: Конец инициализации ядра.

    СтатусОбработки = “БезОшибок”

Обновление данных интеграционной обработки (ИО)

Если версия интеграционной обработки не соответствует конфигурации или несовместима с версией ядра, меняем статус и цвет текста статуса для информирования пользователя.

Пример: СтатусОбработки = “ПодключеннаяИнтеграционнаяОбработкаДляДругойКонфигурации”, цвет — томатный, чтобы обозначить ошибку и способы её устранения.

Если интеграционную обработку подключить не удалось, меняем статус на “ПодключеннаяИнтеграционнаяОбработкаНеТотФайл” или “ОшибкаПриЗапускеИнтеграционнойОбработки” с соответствующим сообщением об ошибке.

В этой статье