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

Материал из razgovorov.ru
Перейти к: навигация, поиск
(Пункт 3. Переход в раздел:)
(Пункт 3. Переход в раздел:)
Строка 80: Строка 80:
 
== Пункт 3. Переход в раздел: ==
 
== Пункт 3. Переход в раздел: ==
 
'''Если полученные файлы ини прошли проверку:'''
 
'''Если полученные файлы ини прошли проверку:'''
** Выполняет переход в раздел, установленный по-умолчанию.
+
* Выполняет переход в раздел, установленный по-умолчанию.
'''Если настройки полученного соединения не прошли проверку, либо их нет:'''
+
'''Если настройки полученного соединения не прошли проверку:'''
  
** '''Шаг 1.''' Переходит в "Настройки", подраздел "Файлы настроек".
+
* '''Шаг 1.''' Переходит в "Настройки", подраздел "Файлы настроек".
*** ПерейтиВРаздел на форме ГлавноеОкно
+
** ПерейтиВРаздел на форме ГлавноеОкно
  
** '''Шаг 2.''' Заполняет список доступных конфигураций.
+
* '''Шаг 2.''' Заполняет список доступных конфигураций.
*** ОбновитьКонтент на форме Раздел_Настройки_ФайлыНастроек
+
** ОбновитьКонтент на форме Раздел_Настройки_ФайлыНастроек
**** Вызывает [[ReadConfigList_(IntegrationConnection)|ReadConfigList]].
+
*** Вызывает [[ReadConfigList_(IntegrationConnection)|ReadConfigList]].
 +
**** Параметры вызова:
 +
***** service - идентификатор сервиса ВО 1С - Com1C82
 +
*** Заполняет список, кэширует.
 +
 
 +
* '''Шаг 3.''' Проверяет наличие выбранного соединения.
 +
** '''Если соединение не выбрано:'''
 +
*** а. Подбирает подходящую типовую конфигурацию.
 +
**** ОпределитьТипНастроекПоПрефиксу на форме ФормаНастроекОбщее.
 +
*** б. Получает меню выбранной конфигурации.
 +
**** Проверяет меню в кэше. Если есть, берёт.
 +
**** Если в кэше нет, вызывает [[ReadConfig_(IntegrationConnection)|ReadConfig]]
 +
***** Параметры вызова:
 +
****** service - идентификатор сервиса ВО 1С - Com1C82.
 +
****** subsystem - поле "subsystem" выбранной конфигурации.
 +
****** version - поле "version" выбранной конфигурации.
 +
****** ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню".
 +
*** в. Строит список включенных по-умолчанию ини.
 +
*** г. Получает ини выбранной конфигурации.
 +
**** Проверяет ини в кэше по сформированному списку. Если есть, берёт.
 +
**** Если в кэше нет, вызывает [[ReadConfig_(IntegrationConnection)|ReadConfig]]
 
***** Параметры вызова:
 
***** Параметры вызова:
 
****** service - идентификатор сервиса ВО 1С - Com1C82
 
****** service - идентификатор сервиса ВО 1С - Com1C82
**** Заполняет список, кэширует.
+
****** subsystem - поле "subsystem" выбранной конфигурации.
 +
****** version - поле "version" выбранной конфигурации.
 +
****** ini - массив объектов "ini", которые не удалось найти кэше.
 +
**** Кэширует полученные настройки
 +
*** д. Выбранная конфигурация назначается выбранным соединением с пометкой создания нового при записи.
 +
*** е. Выполняется проверка выбранного соединения.
  
** '''Шаг 3.''' Проверяет наличие выбранного соединения.
+
* '''Шаг 5.''' Находит конфигурацию выбранного соединения.
*** '''Если соединение не выбрано:'''
+
** ОпределитьТипНастроекПоПрефиксу на форме ФормаНастроекОбщее.
**** а. Подбирает подходящую типовую конфигурацию.
 
***** ОпределитьТипНастроекПоПрефиксу на форме ФормаНастроекОбщее.
 
**** б. Получает меню выбранной конфигурации.
 
***** Проверяет меню в кэше. Если есть, берёт.
 
***** Если в кэше нет, вызывает [[ReadConfig_(IntegrationConnection)|ReadConfig]]
 
****** Параметры вызова:
 
******* service - идентификатор сервиса ВО 1С - Com1C82.
 
******* subsystem - поле "subsystem" выбранной конфигурации.
 
******* version - поле "version" выбранной конфигурации.
 
******* ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню".
 
**** в. Строит список включенных по-умолчанию ини.
 
**** г. Получает ини выбранной конфигурации.
 
***** Проверяет ини в кэше по сформированному списку. Если есть, берёт.
 
***** Если в кэше нет, вызывает [[ReadConfig_(IntegrationConnection)|ReadConfig]]
 
****** Параметры вызова:
 
******* service - идентификатор сервиса ВО 1С - Com1C82
 
******* subsystem - поле "subsystem" выбранной конфигурации.
 
******* version - поле "version" выбранной конфигурации.
 
******* ini - массив объектов "ini", которые не удалось найти кэше.
 
***** Кэширует полученные настройки
 
**** д. Выбранная конфигурация назначается выбранным соединением с пометкой создания нового при записи.
 
**** е. Выполняется проверка выбранного соединения.
 
  
** '''Шаг 5.''' Находит конфигурацию выбранного соединения.
+
* '''Шаг 6.''' Получает меню выбранной конфигурации.
*** ОпределитьТипНастроекПоПрефиксу на форме ФормаНастроекОбщее.
+
** Проверяет меню в кэше. Если есть, берёт.
 
+
** Если в кэше нет, вызывает [[ReadConfig_(IntegrationConnection)|ReadConfig]]
** '''Шаг 6.''' Получает меню выбранной конфигурации.
+
*** Параметры вызова:
*** Проверяет меню в кэше. Если есть, берёт.
+
**** service - идентификатор сервиса ВО 1С - Com1C82
*** Если в кэше нет, вызывает [[ReadConfig_(IntegrationConnection)|ReadConfig]]
+
**** subsystem - поле "subsystem" выбранной конфигурации.
**** Параметры вызова:
+
**** version - поле "version" выбранной конфигурации.
***** service - идентификатор сервиса ВО 1С - Com1C82
+
**** ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню".
***** subsystem - поле "subsystem" выбранной конфигурации.
+
*** Кэширует полученное меню
***** version - поле "version" выбранной конфигурации.
 
***** ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню".
 
**** Кэширует полученное меню
 
  
** '''Шаг 7.''' Строит список доступных ини.
+
* '''Шаг 7.''' Строит список доступных ини.
*** ПолучитьМассивФайловДляКонфигурации на форме ФайлыНастроекСервер.
+
** ПолучитьМассивФайловДляКонфигурации на форме ФайлыНастроекСервер.
*** ПолучитьМассивУстановленныхИниФайлов на форме ФайлыНастроекСервер.
+
** ПолучитьМассивУстановленныхИниФайлов на форме ФайлыНастроекСервер.
  
** '''Шаг 8.''' Отображает выбранные ини соединения и конфигурации.
+
* '''Шаг 8.''' Отображает выбранные ини соединения и конфигурации.
*** сбисОбновитьТаблицыИниФайлов на форме ГлавноеОкно.
+
** сбисОбновитьТаблицыИниФайлов на форме ГлавноеОкно.
**** В левой колонке список ини полученной конфигурации.
+
*** В левой колонке список ини полученной конфигурации.
**** В правой колонке список ини выбранного соединения.
+
*** В правой колонке список ини выбранного соединения.
  
** '''Шаг 9.''' Если были ошибки при проверке, показывает протокол об ошибках.
+
* '''Шаг 9.''' Если были ошибки при проверке, показывает протокол об ошибках.
*** ВывестиПротоколПроверкиИниФайлов на форме ФайлыНастроекОбщее.
+
** ВывестиПротоколПроверкиИниФайлов на форме ФайлыНастроекОбщее.
  
  
 
[[Категория:1С]]
 
[[Категория:1С]]

Версия 09:57, 1 ноября 2017

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

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

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

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

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

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

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

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

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

Шаг 3. Выполняет Пункт 2.

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

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

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

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

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

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

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

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

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

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

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

Шаг 6. Выполняет Пункт 3.

Пункт 3. Переход в раздел:

Если полученные файлы ини прошли проверку:

  • Выполняет переход в раздел, установленный по-умолчанию.

Если настройки полученного соединения не прошли проверку:

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