Алгоритм получения настроек с сервера во внешнюю обработку — различия между версиями

Материал из razgovorov.ru
Перейти к: навигация, поиск
Строка 15: Строка 15:
  
  
'''Шаг 1.''' Вызывает метод [[ReadConnectionList_(IntegrationConnection)|ReadConnectionList]]
+
'''Шаг 1.''' Получает список доступных соединений по URL.
* Параметры вызова:
+
*Вызывает метод [[ReadConnectionList_(IntegrationConnection)|ReadConnectionList]]
** service - идентификатор сервиса ВО 1С - Com1C82
+
** Параметры вызова:
** subsystem - определяемое по идентификатору конфигурации (Метаданные.ПодробнаяИнформация, либо Метаданные.Имя) строковое представление типа конфигурации
+
*** service - идентификатор сервиса ВО 1С - Com1C82
** URL - строка соединения базы данных.
+
*** subsystem - определяемое по идентификатору конфигурации (Метаданные.ПодробнаяИнформация, либо Метаданные.Имя) строковое представление типа конфигурации
** ini - массив с объектом, вида: ключ - строка "ini_type", значение - строка "Меню".
+
*** URL - строка соединения базы данных.
 +
*** ini - массив с объектом, вида: ключ - строка "ini_type", значение - строка "Меню".
  
 
'''Шаг 2.''' Берёт первое соединение из полученного списка.
 
'''Шаг 2.''' Берёт первое соединение из полученного списка.
* Если список соединений пуст, то переходит к шагу 9.
+
* Если список соединений пуст, то переходит к шагу 8.
 
* Кэширует меню выбранного соединения.
 
* Кэширует меню выбранного соединения.
  
Строка 55: Строка 56:
 
* Получает структуру сбисПараметров из поля "json_connection"
 
* Получает структуру сбисПараметров из поля "json_connection"
  
'''Шаг 6.''' Определяет необходимость проверки.
+
'''Шаг 6.''' Выполняет проверку соединения.
* Выполняет шаг 7, если:
+
* Сравнивает значение в сбисПараметрах "ВерсияКонфигурации" и текущую версию конфигурации - Метаданные.Версия.
** Значение в сбисПараметрах "ВерсияКонфигурации" отличается от текущей версии конфигурации - Метаданные.Версия.
+
* Сравнивает значения в сбисПараметрах и поле соединения "update_date"для всех включенных ини файлов.
** Выбранное соединение является общим, либо значения сбисПараметров и поля соединения "update_date" не совпадают хотя бы для одного включенного ини файла.
+
* Проверяет, что выбранное соединение не является общим.
 
+
* Если не выполнено любое условие, выполняет проверку ини.
'''Шаг 7.''' Выполняет проверку.
+
** Dыполняет  функцию ПроверитьИниФайлы на формаНастроекОбщее.  
* Процедура ПроверитьИниФайлы на формаНастроекОбщее.
+
** Обновляет дату проверки в сбисПараметрах на значение поля "update_date" выбранного соединения.
* Обновляет дату проверки в сбисПараметрах на значение поля "update_date" выбранного соединения.
+
** Обновляет поле "ВерсияКонфигурации" на текущую версию конфигурации - Метаданные.Версия.
* Обновляет поле "ВерсияКонфигурации" в сбисПараметрах.
 
  
'''Шаг 8.''' Сохраняет выбранные настройки соединения.
+
'''Шаг 7.''' Сохраняет выбранное соединение.
* Если проверка настроек не проводилась и выбранное соединение не является общим.
+
* Если проверка настроек не проводилась.
 
** Ничего не выполняет.
 
** Ничего не выполняет.
 
* Если проверка настроек проводилась, либо выбранное соединение является общим.
 
* Если проверка настроек проводилась, либо выбранное соединение является общим.
Строка 77: Строка 77:
 
* Сохраняет ID выбранного соединения в реквизит главного окна и параметр в кэше "ConnectionID" обработки.
 
* Сохраняет ID выбранного соединения в реквизит главного окна и параметр в кэше "ConnectionID" обработки.
  
'''Шаг 9.''' Выполняет переход в раздел.
+
'''Шаг 8.''' Выполняет переход в раздел.
 
* Если полученные файлы ини прошли проверку, то выполняет переход в раздел, установленный по-умолчанию.
 
* Если полученные файлы ини прошли проверку, то выполняет переход в раздел, установленный по-умолчанию.
 
* Если настройки полученного соединения не прошли проверку, либо их нет.
 
* Если настройки полученного соединения не прошли проверку, либо их нет.

Версия 14:34, 31 октября 2017

Статья описывает алгоритм работы внешней обработки СБИС после изменения способа хранения настроек из "В каталоге" на "В СБИС".

Для видимости переключателя должен быть установлен способ обмена extSDK, либо extSDKCrypto. Переключатель способа хранения настроек доступен:

  • На форме настройки соединения, которая открывается на стадии авторизации в СБИС при запуске обработки.
  • На форме главного окна, в разделе "Настройки" - подраздел "Файлы настроек".

При изменении способа хранения настроек на "В СБИС", проверяет наличие готового соединения в параметрах - "ConnectionID", где хранится 128-битный идентификатор.

Пункт 1. Если идентификатор отсутствует, то:

  • Выполняются шаги 1-9

Пункт 2. Если идентификатор имеется, то:

  • Выполняются шаги 3-9.


Шаг 1. Получает список доступных соединений по URL.

  • Вызывает метод ReadConnectionList
    • Параметры вызова:
      • service - идентификатор сервиса ВО 1С - Com1C82
      • subsystem - определяемое по идентификатору конфигурации (Метаданные.ПодробнаяИнформация, либо Метаданные.Имя) строковое представление типа конфигурации
      • URL - строка соединения базы данных.
      • ini - массив с объектом, вида: ключ - строка "ini_type", значение - строка "Меню".

Шаг 2. Берёт первое соединение из полученного списка.

  • Если список соединений пуст, то переходит к шагу 8.
  • Кэширует меню выбранного соединения.

Шаг 3. Получет меню соединения.

  • Проверяет наличие сбисМеню в кэше по выбранному ID, берёт его.
  • Если меню нет, то вызывает метод readConnection
    • Параметры вызова:
      • id - 128 битный идентификатор соединения.
      • version - числовое представление версии системы, где каждый разряд версии, кроме первого, дополнен нулями до 4 символов. Пример: 3.2.0.11 = 3000200000011
      • ini - массив с объектом, вида: ключ - строка "ini_type", значение - строка "Меню".
    • Кэширует полученное меню.

Шаг 4. Формирует массив имен и типов включенных ини по полученному меню.

  • Включенной считается ини с установленным флагом в поле "enable".
  • Структура элементов массива "ini":
    • Ключ - "ini_type", значение - тип ини.
    • Ключ - "ini_name", значение - системное имя ини.

Шаг 5. Получает данные настроек и сбисПараметров.

  • Проверяет наличие настроек в кэше по идентификатору.
  • Если есть, то Вызывает метод readConnection
    • Параметры вызова:
      • id - 128 битный идентификатор соединения.
      • version - числовое представление версии системы, где каждый разряд версии, кроме первого, дополнен нулями до 4 символов. Пример: 3.2.0.11 = 3000200000011.
  • Если нет, то вызывает метод readConnection
    • Параметры вызова:
      • id - 128 битный идентификатор соединения.
      • version - числовое представление версии системы, где каждый разряд версии, кроме первого, дополнен нулями до 4 символов. Пример: 3.2.0.11 = 3000200000011
      • ini - сформированный на Шаге 4 массив объектов "ini".
    • Кэширует полученные настройки, а затем конвертирует в формат ВО.
  • Получает структуру сбисПараметров из поля "json_connection"

Шаг 6. Выполняет проверку соединения.

  • Сравнивает значение в сбисПараметрах "ВерсияКонфигурации" и текущую версию конфигурации - Метаданные.Версия.
  • Сравнивает значения в сбисПараметрах и поле соединения "update_date"для всех включенных ини файлов.
  • Проверяет, что выбранное соединение не является общим.
  • Если не выполнено любое условие, выполняет проверку ини.
    • Dыполняет функцию ПроверитьИниФайлы на формаНастроекОбщее.
    • Обновляет дату проверки в сбисПараметрах на значение поля "update_date" выбранного соединения.
    • Обновляет поле "ВерсияКонфигурации" на текущую версию конфигурации - Метаданные.Версия.

Шаг 7. Сохраняет выбранное соединение.

  • Если проверка настроек не проводилась.
    • Ничего не выполняет.
  • Если проверка настроек проводилась, либо выбранное соединение является общим.
    • В поле "json_connection" записываются сбисПараметры с учетом изменений.
    • Если выбранное соединение является общим, то его идентификатор указывается в качестве параметра "parent". Поле "id" очищается.
    • Поле "ini_array" не указывается.
    • Поле "update_date" остаётся без изменений.
    • Вызывает метод WriteConnection.
    • Сформированное соединение становится выбранным.
  • Сохраняет ID выбранного соединения в реквизит главного окна и параметр в кэше "ConnectionID" обработки.

Шаг 8. Выполняет переход в раздел.

  • Если полученные файлы ини прошли проверку, то выполняет переход в раздел, установленный по-умолчанию.
  • Если настройки полученного соединения не прошли проверку, либо их нет.
    • 1. Переходит в "Настройки", подраздел "Файлы настроек".
    • 2. Вызывает ReadConfigList
      • Параметры вызова:
        • service - идентификатор сервиса ВО 1С - Com1C82
    • 3. Заполняет список доступных конфигураций.
    • 4. Если соединение не выбрано.
      • Подбирает подходящую типовую конфигурацию.
      • Получает ини выбранной конфигурации.
        • Проверяет ини в кэше. Если есть, берёт.
        • Если в кэше нет, вызывает ReadConfig
          • Параметры вызова:
            • service - идентификатор сервиса ВО 1С - Com1C82
            • subsystem - поле "subsystem" выбранной конфигурации.
            • version - поле "version" выбранной конфигурации.
        • Кэширует полученные настройки
      • Выбранная конфигурация назначается выбранным соединением с пометкой создания нового соединения при записи.
      • Выполняется проверка выбранного соединения.
    • 5. Находит конфигурацию выбранного соединения.
    • 6. Получает ини выбранной конфигурации.
      • Проверяет ини в кэше. Если есть, берёт.
      • Если в кэше нет, вызывает ReadConfig
        • Параметры вызова:
          • service - идентификатор сервиса ВО 1С - Com1C82
          • subsystem - поле "subsystem" выбранного соединения
          • version - поле "version" выбранного соединения.
    • 7. Отображает в левой колонке список ини полученной конфигурации
    • 8. Отображает в правой колонке список ини выбранного соединения.
    • 9. Если были ошибки при проверке, показывает протокол об ошибках.