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

Материал из razgovorov.ru
Перейти к: навигация, поиск
Строка 1: Строка 1:
Статья описывает алгоритм работы внешней обработки СБИС после изменения способа хранения настроек из "В каталоге" на "В СБИС". Для каждой функции во вложенном списке описан алгоритм ее работы.
+
Статья описывает алгоритм работы внешней обработки СБИС после изменения способа хранения настроек из "В каталоге" на "В СБИС".
  
 
Для видимости переключателя должен быть установлен способ обмена extSDK, либо extSDKCrypto.
 
Для видимости переключателя должен быть установлен способ обмена extSDK, либо extSDKCrypto.
Строка 7: Строка 7:
  
 
При изменении способа хранения настроек на "В СБИС", проверяет наличие готового соединения в параметрах - "ConnectionID", где хранится 128-битный идентификатор.
 
При изменении способа хранения настроек на "В СБИС", проверяет наличие готового соединения в параметрах - "ConnectionID", где хранится 128-битный идентификатор.
 
  
 
== Пункт 1. Если идентификатор отсутствует, то: ==
 
== Пункт 1. Если идентификатор отсутствует, то: ==
Строка 15: Строка 14:
 
* Выполняются шаги 3-7, а затем шаг 9.
 
* Выполняются шаги 3-7, а затем шаг 9.
  
'''Шаг 1.''' Вызывает метод [[ReadConnectionList_(IntegrationConnection)|ReadConnectionList]] с параметрами filter: service, subsystem, url и ini. Где:
+
 
* service - идентификатор сервиса ВО 1С - Com1C82
+
'''Шаг 1.''' Вызывает метод [[ReadConnectionList_(IntegrationConnection)|ReadConnectionList]]
* subsystem - определяемое по идентификатору конфигурации (Метаданные.ПодробнаяИнформация, либо Метаданные.Имя) представление типа конфигурации
+
* Параметры вызова:
* URL - строка соединения базы данных.
+
** service - идентификатор сервиса ВО 1С - Com1C82
* ini - массив с объектом, вида: ключ - строка "ini_type", значение - строка "Меню".
+
** subsystem - определяемое по идентификатору конфигурации (Метаданные.ПодробнаяИнформация, либо Метаданные.Имя) строковое представление типа конфигурации
 +
** URL - строка соединения базы данных.
 +
** ini - массив с объектом, вида: ключ - строка "ini_type", значение - строка "Меню".
  
 
'''Шаг 2.''' Берёт первое соединение из полученного списка.
 
'''Шаг 2.''' Берёт первое соединение из полученного списка.
* Кэширует полученное меню.
+
* Кэширует меню выбранного соединения.
  
'''Шаг 3.''' Проверяет наличие сбисМеню в кэше по выбранному ID.
+
'''Шаг 3.''' Получет меню соединения.
* Если меню нет, то вызывает метод [[ReadConnection_(IntegrationConnection)|readConnection]] с параметрами : id, version, ini. Где:
+
* Проверяет наличие сбисМеню в кэше по выбранному ID, берёт его.
** id - 128 битный идентификатор соединения.
+
* Если меню нет, то вызывает метод [[ReadConnection_(IntegrationConnection)|readConnection]]
** version - числовое представление версии системы, где каждый разряд версии, кроме первого, дополнен нулями до 4 символов. Пример: 3.2.0.11 = 3000200000011
+
**Параметры вызова:
** ini - массив с объектом, вида: ключ - строка "ini_type", значение - строка "Меню".
+
*** id - 128 битный идентификатор соединения.
* Кэширует полученное меню.
+
*** version - числовое представление версии системы, где каждый разряд версии, кроме первого, дополнен нулями до 4 символов. Пример: 3.2.0.11 = 3000200000011
 +
*** ini - массив с объектом, вида: ключ - строка "ini_type", значение - строка "Меню".
 +
** Кэширует полученное меню.
  
'''Шаг 4.''' По полученному меню формирует массив имен и типов включенных ини "ini" с элементами, вида: {"ini_type" - тип ини, "ini_name" - системное имя ини}.
+
'''Шаг 4.''' Формирует массив имен и типов включенных ини по полученному меню.
 +
* Включенной считается ини с установленным флагом в поле "enable".
 +
* Структура элементов массива "ini":
 +
** Ключ - "ini_type", значение - тип ини.
 +
** Ключ - "ini_name", значение - системное имя ини.
  
'''Шаг 5.''' Вызывает метод [[ReadConnection_(IntegrationConnection)|readConnection]], который получает данные настроек с параметрами:
+
'''Шаг 5.''' Вызывает метод [[ReadConnection_(IntegrationConnection)|readConnection]], который получает данные настроек и сбисПараметров.
 +
* Параметры вызова:
 
** id - 128 битный идентификатор соединения.
 
** id - 128 битный идентификатор соединения.
 
** version - числовое представление версии системы, где каждый разряд версии, кроме первого, дополнен нулями до 4 символов. Пример: 3.2.0.11 = 3000200000011
 
** version - числовое представление версии системы, где каждый разряд версии, кроме первого, дополнен нулями до 4 символов. Пример: 3.2.0.11 = 3000200000011
Строка 39: Строка 47:
 
* Кэширует полученные настройки, а затем конвертирует в формат ВО.
 
* Кэширует полученные настройки, а затем конвертирует в формат ВО.
  
'''Шаг 6.''' Вызывает метод [[getConnectionParams_(IntegrationConnection)|getConnectionParams]], который получает структуру параметров соединения.
+
'''Шаг 6.''' Определяет необходимость проверки.
 +
* Если выбранное соединение является общим, либо значения параметров и поля "update_date" не совпадают хотя бы для одного включенного файла, выполняет шаг 7.
 +
* Если выбранное соединение не является общим и значения параметров и поля "update_date" совпадают для всех включенных файлов, шаг 7 пропускается.
  
'''Шаг 7.''' Сравнивает поле "update_date" полученного соединения с датой проверки в параметрах для каждого включенного файла настроек и если значения не совпадают хотя бы для одного, выполняется проверка - ПроверитьИниФайлы на формаНастроекОбщее. Обновляет дату проверки в параметрах.
+
'''Шаг 7.''' Выполняет проверку.
* Если проверка выполнялась, то вызывает метод [[writeConnectionParams_(IntegrationConnection)|writeConnectionParams]] и параметры записываются на сервер.
+
* Процедура ПроверитьИниФайлы на формаНастроекОбщее.
 +
* Обновляет дату проверки в параметрах на значение поля "update_date" выбранного соединения.
  
'''Шаг 8.''' Сохраняет выбранное значение.
+
'''Шаг 8.''' Сохраняет выбранные настройки соединения.
* Если полученное соединение является общим, то вызывает метод [[WriteConnection_v2_(IntegrationConnection)|WriteConnection]], в котором в качестве параметра "parent" будет указан ID полученного соединения. Полученный в результате ID будет записан в обработку.
+
* а. Если проверка настроек не проводилась и выбранное соединение не является общим.
* Если полученное соединение является доступным только для текущего пользователя, то его ID сразу записывается в обработку.
+
** Пункт б. пропускается.
 +
* б. Если проверка настроек проводилась, либо выбранное соединение является общим.
 +
** В поле "json_connection" записываются сбисПараметры с учетом изменений.
 +
** Если выбранное соединение является общим, то его идентификатор указывается в качестве параметра "parent". Поле "id" очищается.
 +
** Поле "ini_array" не указывается.
 +
** Поле "update_date" остаётся без изменений.
 +
** Вызывает метод [[WriteConnection_(IntegrationConnection)|WriteConnection]].
 +
** Полученное в результате соединение становится выбранным.
 +
* в. Сохраняет ID выбранного соединения в реквизит и параметр "ConnectionID" обработки.
  
 +
*
 
'''Шаг 9.''' Выполняет переход в раздел.
 
'''Шаг 9.''' Выполняет переход в раздел.
* Если полученные файлы ини прошли проверку, то выполняет переход в раздел, установленный по-умолчанию.
+
* а. Если полученные файлы ини прошли проверку, то выполняет переход в раздел, установленный по-умолчанию.
* Если настройки не прошли проверку, то показывает протокол об ошибках и переходит в раздел "Файлы настроек".
+
* б. Если настройки полученного соединения не прошли проверку.
 +
** Переходит в "Настройки", подраздел "Файлы настроек".
 +
** Показывает протокол об ошибках.
 +
** Вызывает [[ReadConfigList_(IntegrationConnection)|ReadConfigList]]
 +
*** Параметры вызова:
 +
**** service - идентификатор сервиса ВО 1С - Com1C82
 +
** Заполняет список доступных конфигураций.
 +
** Находит конфигурацию выбранного соединения.
 +
** Получает ини выбранной конфигурации.
 +
*** Проверяет ини в кэше. Если есть, берёт.
 +
*** Если в кэше нет, вызывает [[ReadConfig_(IntegrationConnection)|ReadConfig]]
 +
**** Параметры вызова:
 +
***** service - идентификатор сервиса ВО 1С - Com1C82
 +
***** subsystem - поле "subsystem" выбранного соединения
 +
***** version - поле "version" выбранного соединения.
 +
** Отображает в левой колонке список ини полученной конфигурации
 +
** Отображает в правой колонке список ини выбранного соединения.
 +
* Если настройки отсутствуют.
 +
** Переходит в "Настройки", подраздел "Файлы настроек".
 +
** Вызывает [[ReadConfigList_(IntegrationConnection)|ReadConfigList]]
 +
*** Параметры вызова:
 +
**** service - идентификатор сервиса ВО 1С - Com1C82
 +
** Заполняет список доступных конфигураций.
 +
** Подбирает подходящую типовую конфигурацию.
 +
** Получает ини выбранной конфигурации.
 +
*** Проверяет ини в кэше. Если есть, берёт.
 +
*** Если в кэше нет, вызывает [[ReadConfig_(IntegrationConnection)|ReadConfig]]
 +
**** Параметры вызова:
 +
***** service - идентификатор сервиса ВО 1С - Com1C82
 +
***** subsystem - поле "subsystem" выбранной конфигурации.
 +
***** version - поле "version" выбранной конфигурации.
 +
** Отображает в левой колонке список ини полученной конфигурации.
 +
** Отображает в правой колонке список ини выбранной конфигурации.
 +
 
  
  
 
[[Категория:1С]]
 
[[Категория:1С]]

Версия 12:01, 31 октября 2017

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

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

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

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

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

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

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

  • Выполняются шаги 3-7, а затем шаг 9.


Шаг 1. Вызывает метод ReadConnectionList

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

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

  • Кэширует меню выбранного соединения.

Шаг 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
    • ini - сформированный на Шаге 4 массив объектов "ini".
  • Кэширует полученные настройки, а затем конвертирует в формат ВО.

Шаг 6. Определяет необходимость проверки.

  • Если выбранное соединение является общим, либо значения параметров и поля "update_date" не совпадают хотя бы для одного включенного файла, выполняет шаг 7.
  • Если выбранное соединение не является общим и значения параметров и поля "update_date" совпадают для всех включенных файлов, шаг 7 пропускается.

Шаг 7. Выполняет проверку.

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

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

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

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

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