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

Последние изменения: 20.01.2021

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

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

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

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

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

  4. если удалось получить пользовательскую настройку, используем ее, иначе - общую настройку; 

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

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

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

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

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

  8. Проверяем соединение с сервером MS, стек вызовов: 

    _ЛокКонтекст.ЛокЯдро_ПроверитьСоединениеССервером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 по строке подключения и выполняем авторизацию HTTP-методом GET

    Если требуется авторизация для подключения к серверу Mobile SMARTS и она не сохранена, тогда открываем форму для ввода логина и пароля и после ее закрытия снова проверяем соединение с сервером Mobile SMARTS - _ЛокКонтекст.ЛокЯдро_ПроверитьСоединениеССерверомSMARTS()

    Если не удалось подключиться с пользовательской настройкой, пробуем подключиться с общей настройкой.

    Если проверка соединения с сервером Mobile 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С, то получаем настройки из базы Mobile SMARTS, привязанной к этому узлу (это может быть как  частная база, так и основная).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обновление информации о интеграционной обработке (ИО) 

Если интеграционная обработка не соответствует конфигурации (версии конфигурации) или её версия не подходит для текущей версии обработки-ядра, то меняем статус обработки и меняем текст и цвет статуса на соответствующий. 

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

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

Была ли статья полезна?
Спасибо за ваш отзыв!
Отзыв
Заполните, пожалуйста, данную форму, что конкретно вы не нашли, оставьте свои комментарии о работе сайта / полезности / сложности с навигацией
0/500