Алгоритм получения настроек с сервера во внешнюю обработку — различия между версиями
Строка 6: | Строка 6: | ||
==Алгоритм загрузки файла настроек из СБИС== | ==Алгоритм загрузки файла настроек из СБИС== | ||
− | === 1. Идентификатор настройки ( | + | === 1. Идентификатор настройки (ConnectionID) отсутствует в пользовательских параметрах === |
− | '''1.1.''' Проверяем | + | '''1.1.''' Проверяем имеются ли для данной базы 1С общие настройки, либо настройка уже проводилась, но по какой-либо причине, ConnectionID в обработку не сохранился/стерся. |
− | * Получаем список настроек [[ReadConnectionList_(IntegrationConnection)|ReadConnectionList]] | + | * Получаем список настроек [[ReadConnectionList_(IntegrationConnection)|ReadConnectionList]]. Сразу получаем сбисМеню, в котором содержится информация по составу настроек и тому, какие файлы включены, а какие - нет. |
** Параметры вызова: | ** Параметры вызова: | ||
*** service - идентификатор сервиса ВО 1С - Com1C82 | *** service - идентификатор сервиса ВО 1С - Com1C82 | ||
Строка 16: | Строка 16: | ||
* Если список соединений пуст, переходим к процедуре выбора подходящих стандартных настроек (Пункт 3). | * Если список соединений пуст, переходим к процедуре выбора подходящих стандартных настроек (Пункт 3). | ||
− | '''1.2.''' Берём первое соединение из полученного списка. | + | '''1.2.''' Берём первое соединение из полученного списка. В списке стоит сортировка: сперва идут настройки, которые сохранены только для выбранного пользователя, а затем общие для аккаунта. |
− | * Кэшируем | + | * Кэшируем сбисМеню выбранного соединения, чтобы в дальнейшем не получать повторно. |
'''1.3.''' Переходим к пункту 2. | '''1.3.''' Переходим к пункту 2. | ||
Строка 23: | Строка 23: | ||
=== 2. Идентификатор настройки (ConnectionId) указан в пользовательских настройках === | === 2. Идентификатор настройки (ConnectionId) указан в пользовательских настройках === | ||
− | '''2. | + | '''2.1.''' Составляем список файлов настроек, которые необходимо получить. |
− | * | + | * 2.1.1. Получаем сбисМеню, в котором содержится информация по составу настроек и тому, какие файлы включены, а какие - нет. |
− | * Если меню нет, то | + | ** Проверяем наличие сбисМеню в кэше по выбранному ConnectionID и берём его. |
− | ** | + | * 2.1.2. Если меню нет, то читаем его с сервера по выбранному ConnectionID: |
+ | ** Читаем настройки с сервера, но не все, а только сбисМеню [[ReadConnection_(IntegrationConnection)|readConnection]] | ||
*** Параметры вызова: | *** Параметры вызова: | ||
− | **** id - 128 битный идентификатор соединения. | + | **** id - ConnectionID, 128 битный идентификатор соединения. |
**** version - числовое представление версии системы, где каждый разряд версии, кроме первого, дополнен нулями до 4 символов. Пример: 3.2.0.11 = 3000200000011 | **** version - числовое представление версии системы, где каждый разряд версии, кроме первого, дополнен нулями до 4 символов. Пример: 3.2.0.11 = 3000200000011 | ||
**** ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню". | **** ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню". | ||
− | *** | + | *** Кэшируем полученное меню. |
+ | * 2.2.3. Читаем меню и составляем список включенных файлов настроек, которые необходимо получить. | ||
+ | ** Включенным считается файл с установленным флагом в поле "enable". Если один и тот же файл встречается в меню несколько раз, в разных разделах, то он должен быть везде либо включен, либо отключен. | ||
+ | ** Структура элементов списка: | ||
+ | *** Массив структур "ini" с элементами: | ||
+ | **** Ключ - "ini_type", значение - тип ини. | ||
+ | **** Ключ - "ini_name", значение - системное имя ини. | ||
− | ''' | + | '''2.2.''' Получаем файлы настроек и сбис параметры. |
− | * | + | * 2.2.1. Возможно, настройки, либо их часть, были получены ранее, поэтому смотрим их наличие в кэше по выбранному ConnectionID. |
− | + | ** Найденные файлы исключаем из списка настроек, которые необходимо получить. | |
− | ** | + | * 2.2.2. Читаем с сервера недостающие данные [[ReadConnection_(IntegrationConnection)|readConnection]] |
− | |||
− | |||
− | * | ||
− | |||
− | |||
** Параметры вызова: | ** Параметры вызова: | ||
− | *** id - 128 битный идентификатор соединения. | + | *** id - ConnectionID, 128 битный идентификатор соединения. |
*** version - числовое представление версии системы, где каждый разряд версии, кроме первого, дополнен нулями до 4 символов. Пример: 3.2.0.11 = 3000200000011. | *** version - числовое представление версии системы, где каждый разряд версии, кроме первого, дополнен нулями до 4 символов. Пример: 3.2.0.11 = 3000200000011. | ||
− | *** ini - массив объектов "ini", которые не удалось найти кэше. Если все файлы найдены, не передаётся. | + | *** ini - массив объектов "ini", которые не удалось найти кэше. Если все файлы найдены, параметр не передаётся. |
** Кэширует полученные настройки. | ** Кэширует полученные настройки. | ||
− | * | + | * 2.2.3. Читаем структуру сбис параметров из поля "json_connection" для проверки изменений, произошедших с последнего запуска. |
− | ''' | + | '''2.3.''' Проверяем настройки. |
− | * | + | * 2.3.1. Прежде чем выполнять проверку, нужно посмотреть на изменения, которые могли произойти с момента последнего запуска обработки на этой конфигурации. Пользователь мог обновить конфигурацию, либо могли поменяться файлы настроек. |
− | ** | + | ** Для того, чтобы отследить изменения версии конфигурации, сравним значение узла "ВерсияКонфигурации" в сбис параметрах и текущую версию конфигурации - Метаданные.Версия. Если не совпадает, значит проверка нужна. |
− | + | ** Для того, чтобы отследить изменения файлов настроек конфигурации, сравним дату последней проверки каждой включенной настройки в сбис параметрах и поле в настройках "update_date". Если не совпадает хотя бы для одного файла, значит проверка нужна. | |
− | + | * 2.3.2. Выполняет проверку, если были изменения. | |
− | |||
− | ** | ||
− | |||
− | * Выполняет проверку, если | ||
** Выполняет функцию ПроверитьИниФайлы на формаНастроекОбщее. | ** Выполняет функцию ПроверитьИниФайлы на формаНастроекОбщее. | ||
** Обновляет дату проверки в сбисПараметрах. | ** Обновляет дату проверки в сбисПараметрах. |
Версия 11:58, 2 ноября 2017
ВО СБИС поддерживает два варианта хранения файлов настроек: "в каталоге" и "в СБИС". В первом варианте настройки находятся на локальном диске, путь до папки указывается в настройках обработки, и сохраняется в пользовательских параметрах 1С. Основной недостатком является необходимость общего доступа к каталогу и более сложная настройка в Linux и клиент-серверных версиях 1С, не работает в веб клиентах 1С.
Во втором варианте настройки хранятся в СБИС, в пользовательских параметрах 1С хранится только идентификатор настройки. Данный способ доступен только для при использовании способа обмена extSDK, либо extSDKCrypto. Данный вариант избавлен от недостатков, а также имеет дополнительный функционал - общие настройки. Можно создать для всех настройки по-умолчанию, которые автоматически будут применяться у пользователей при запуске обработки на этой базе 1С.
Содержание
Алгоритм загрузки файла настроек из СБИС
1. Идентификатор настройки (ConnectionID) отсутствует в пользовательских параметрах
1.1. Проверяем имеются ли для данной базы 1С общие настройки, либо настройка уже проводилась, но по какой-либо причине, ConnectionID в обработку не сохранился/стерся.
- Получаем список настроек ReadConnectionList. Сразу получаем сбисМеню, в котором содержится информация по составу настроек и тому, какие файлы включены, а какие - нет.
- Параметры вызова:
- service - идентификатор сервиса ВО 1С - Com1C82
- URL - строка соединения базы данных.
- ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню".
- Параметры вызова:
- Если список соединений пуст, переходим к процедуре выбора подходящих стандартных настроек (Пункт 3).
1.2. Берём первое соединение из полученного списка. В списке стоит сортировка: сперва идут настройки, которые сохранены только для выбранного пользователя, а затем общие для аккаунта.
- Кэшируем сбисМеню выбранного соединения, чтобы в дальнейшем не получать повторно.
1.3. Переходим к пункту 2.
2. Идентификатор настройки (ConnectionId) указан в пользовательских настройках
2.1. Составляем список файлов настроек, которые необходимо получить.
- 2.1.1. Получаем сбисМеню, в котором содержится информация по составу настроек и тому, какие файлы включены, а какие - нет.
- Проверяем наличие сбисМеню в кэше по выбранному ConnectionID и берём его.
- 2.1.2. Если меню нет, то читаем его с сервера по выбранному ConnectionID:
- Читаем настройки с сервера, но не все, а только сбисМеню readConnection
- Параметры вызова:
- id - ConnectionID, 128 битный идентификатор соединения.
- version - числовое представление версии системы, где каждый разряд версии, кроме первого, дополнен нулями до 4 символов. Пример: 3.2.0.11 = 3000200000011
- ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню".
- Кэшируем полученное меню.
- Параметры вызова:
- Читаем настройки с сервера, но не все, а только сбисМеню readConnection
- 2.2.3. Читаем меню и составляем список включенных файлов настроек, которые необходимо получить.
- Включенным считается файл с установленным флагом в поле "enable". Если один и тот же файл встречается в меню несколько раз, в разных разделах, то он должен быть везде либо включен, либо отключен.
- Структура элементов списка:
- Массив структур "ini" с элементами:
- Ключ - "ini_type", значение - тип ини.
- Ключ - "ini_name", значение - системное имя ини.
- Массив структур "ini" с элементами:
2.2. Получаем файлы настроек и сбис параметры.
- 2.2.1. Возможно, настройки, либо их часть, были получены ранее, поэтому смотрим их наличие в кэше по выбранному ConnectionID.
- Найденные файлы исключаем из списка настроек, которые необходимо получить.
- 2.2.2. Читаем с сервера недостающие данные readConnection
- Параметры вызова:
- id - ConnectionID, 128 битный идентификатор соединения.
- version - числовое представление версии системы, где каждый разряд версии, кроме первого, дополнен нулями до 4 символов. Пример: 3.2.0.11 = 3000200000011.
- ini - массив объектов "ini", которые не удалось найти кэше. Если все файлы найдены, параметр не передаётся.
- Кэширует полученные настройки.
- Параметры вызова:
- 2.2.3. Читаем структуру сбис параметров из поля "json_connection" для проверки изменений, произошедших с последнего запуска.
2.3. Проверяем настройки.
- 2.3.1. Прежде чем выполнять проверку, нужно посмотреть на изменения, которые могли произойти с момента последнего запуска обработки на этой конфигурации. Пользователь мог обновить конфигурацию, либо могли поменяться файлы настроек.
- Для того, чтобы отследить изменения версии конфигурации, сравним значение узла "ВерсияКонфигурации" в сбис параметрах и текущую версию конфигурации - Метаданные.Версия. Если не совпадает, значит проверка нужна.
- Для того, чтобы отследить изменения файлов настроек конфигурации, сравним дату последней проверки каждой включенной настройки в сбис параметрах и поле в настройках "update_date". Если не совпадает хотя бы для одного файла, значит проверка нужна.
- 2.3.2. Выполняет проверку, если были изменения.
- Выполняет функцию ПроверитьИниФайлы на формаНастроекОбщее.
- Обновляет дату проверки в сбисПараметрах.
- Обновляет поле "ВерсияКонфигурации" на текущую версию конфигурации - Метаданные.Версия.
Шаг 4. Сохраняет выбранное соединение.
- Если проверка настроек проводилась.
- Готовит структуру на запись.
- Поле "ini" не указывается.
- Все поля остальные поля берутся из выбранного соединения.
- Записывает сбисПараметры:
- В поле "json_connection" записываются сбисПараметры с учетом изменений.
- Определяет необходимость создания нового подключения.
- Если выбранное соединение является общим, то его идентификатор указывается в качестве параметра "parent". Поле "id" очищается.
- Сохраняет изменения.
- Вызывает метод WriteConnection.
- Готовит структуру на запись.
- Сохраняет ID соединения в обработку
- ID выбранного соединения записывается в пользовательский параметр "ConnectionID".
Шаг 5. Выполняет переход в раздел(Пункт 3).
Пункт 3. Переход в раздел:
Если полученные файлы ини прошли проверку:
- Выполняет переход в раздел, установленный по-умолчанию.
Если настройки полученного соединения не прошли проверку:
- Шаг 1. Если были ошибки при проверке, показывает протокол об ошибках.
- ВывестиПротоколПроверкиИниФайлов на форме ФайлыНастроекОбщее.
- Шаг 2. Переходит в "Настройки", подраздел "Файлы настроек".
- ПерейтиВРаздел на форме ГлавноеОкно
- Шаг 3. Заполняет список доступных конфигураций.
- ОбновитьКонтент на форме Раздел_Настройки_ФайлыНастроек
- Вызывает ReadConfigList.
- Параметры вызова:
- service - идентификатор сервиса ВО 1С - Com1C82
- Параметры вызова:
- Заполняет список, кэширует.
- Вызывает ReadConfigList.
- ОбновитьКонтент на форме Раздел_Настройки_ФайлыНастроек
- Шаг 4. Проверяет наличие выбранного соединения.
- Если соединение не выбрано:
- а. Подбирает подходящую типовую конфигурацию.
- ОпределитьТипНастроекПоПрефиксу на форме ФормаНастроекОбщее.
- б. Получает меню выбранной конфигурации.
- Проверяет меню в кэше. Если есть, берёт.
- Если в кэше нет, получает:
- Вызывает ReadConfig
- Параметры вызова:
- service - идентификатор сервиса ВО 1С - Com1C82.
- subsystem - поле "subsystem" выбранной конфигурации.
- version - поле "version" выбранной конфигурации.
- ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню".
- Параметры вызова:
- Кэширует полученное меню.
- Вызывает ReadConfig
- в. Формирует массив имен и типов включенных ини по меню.
- Включенной считается ини с установленным флагом в поле "enable".
- Структура элементов массива "ini":
- Ключ - "ini_type", значение - тип ини.
- Ключ - "ini_name", значение - системное имя ини.
- г. Получает ини выбранной конфигурации.
- Проверяет ини в кэше по сформированному массиву. Если есть, берёт.
- Если в кэше нет, вызывает 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. Отображает выбранные ини соединения и конфигурации.
- сбисОбновитьТаблицыИниФайлов на форме ГлавноеОкно.
- В левой колонке список ини полученной конфигурации.
- В правой колонке список ини выбранного соединения.
- сбисОбновитьТаблицыИниФайлов на форме ГлавноеОкно.