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

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

Версия 09:51, 31 октября 2017

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

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

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

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


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

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

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

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

Шаг 1. Вызывает метод ReadConnectionList с параметрами filter: service, subsystem, url и ini. Где:

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

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

  • Кэширует полученное меню.

Шаг 3. Проверяет наличие сбисМеню в кэше по выбранному ID.

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

Шаг 4. По полученному меню формирует массив имен и типов включенных ини "ini" с элементами, вида: {"ini_type" - тип ини, "ini_name" - системное имя ини}.

Шаг 5. Вызывает метод readConnection, который получает данные настроек с параметрами:

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

Шаг 6. Вызывает метод getConnectionParams, который получает структуру параметров соединения.

Шаг 7. Сравнивает поле "update_date" полученного соединения с датой проверки в параметрах для каждого включенного файла настроек и если значения не совпадают хотя бы для одного, выполняется проверка - ПроверитьИниФайлы на формаНастроекОбщее. Обновляет дату проверки в параметрах.

  • Если проверка выполнялась, то вызывает метод writeConnectionParams и параметры записываются на сервер.

Шаг 8. Сохраняет выбранное значение.

  • Если полученное соединение является общим, то вызывает метод WriteConnection, в котором в качестве параметра "parent" будет указан ID полученного соединения. Полученный в результате ID будет записан в обработку.
  • Если полученное соединение является доступным только для текущего пользователя, то его ID сразу записывается в обработку.

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

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