Алгоритм получения настроек с сервера во внешнюю обработку — различия между версиями
(→Алгоритм загрузки файла настроек из СБИС) |
|||
(не показано 13 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
ВО СБИС поддерживает два варианта хранения файлов настроек: "в каталоге" и "в СБИС". | ВО СБИС поддерживает два варианта хранения файлов настроек: "в каталоге" и "в СБИС". | ||
− | В первом варианте настройки находятся на локальном диске, путь до папки указывается в настройках обработки, и сохраняется в пользовательских параметрах 1С. Основной недостатком является необходимость общего доступа к каталогу и более сложная настройка в Linux и клиент-серверных версиях 1С, не работает в веб клиентах 1С. | + | В первом варианте, настройки находятся на локальном диске, путь до папки указывается в настройках обработки, и сохраняется в пользовательских параметрах 1С. Основной недостатком является необходимость общего доступа к каталогу и более сложная настройка в Linux и клиент-серверных версиях 1С, не работает в веб клиентах 1С. |
− | Во втором варианте настройки хранятся в СБИС | + | Во втором варианте, настройки хранятся в СБИС. В пользовательских параметрах 1С хранится только идентификатор настройки. Данный способ доступен только для при использовании способа обмена extSDK, либо extSDKCrypto. Данный вариант избавлен от недостатков, а также имеет дополнительный функционал - общие настройки, который позволяет создать для всех настройки по-умолчанию, которые автоматически будут применяться у пользователей при запуске обработки на этой базе 1С. |
==Алгоритм загрузки файла настроек из СБИС== | ==Алгоритм загрузки файла настроек из СБИС== | ||
Строка 19: | Строка 19: | ||
* 1.2.1. Кэшируем сбис меню выбранного соединения, чтобы в дальнейшем не получать повторно. | * 1.2.1. Кэшируем сбис меню выбранного соединения, чтобы в дальнейшем не получать повторно. | ||
− | '''1.3.''' Переходим к получению | + | '''1.3.''' Переходим к получению настроек по выбранному ConnectionID. (Пункт 2). |
=== 2. Идентификатор настройки (ConnectionID) указан в пользовательских настройках === | === 2. Идентификатор настройки (ConnectionID) указан в пользовательских настройках === | ||
Строка 26: | Строка 26: | ||
* 2.1.1. Получаем сбис меню, в котором содержится информация по составу настроек и тому, какие файлы включены, а какие - нет. | * 2.1.1. Получаем сбис меню, в котором содержится информация по составу настроек и тому, какие файлы включены, а какие - нет. | ||
** Проверяем наличие файла сбис меню в кэше по выбранному ConnectionID и берём его. | ** Проверяем наличие файла сбис меню в кэше по выбранному ConnectionID и берём его. | ||
− | * | + | ** Если меню нет, то читаем его с сервера [[ReadConnection_(IntegrationConnection)|readConnection]]: |
− | ** Параметры вызова: | + | *** Параметры вызова: |
− | *** id - ConnectionID, 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.1. | + | * 2.1.2. Читаем меню и составляем список включенных файлов настроек, которые необходимо получить. |
** Включенным считается файл с установленным флагом в поле "enable". Если один и тот же файл встречается в меню несколько раз, в разных разделах, то он должен быть везде либо включен, либо отключен. | ** Включенным считается файл с установленным флагом в поле "enable". Если один и тот же файл встречается в меню несколько раз, в разных разделах, то он должен быть везде либо включен, либо отключен. | ||
** Структура элементов списка: | ** Структура элементов списка: | ||
Строка 48: | Строка 48: | ||
*** ini - массив объектов "ini", которые не удалось найти кэше. Если все файлы найдены, параметр не передаётся. | *** ini - массив объектов "ini", которые не удалось найти кэше. Если все файлы найдены, параметр не передаётся. | ||
** Кэшируем полученные настройки. | ** Кэшируем полученные настройки. | ||
− | |||
'''2.3.''' Проверяем настройки. | '''2.3.''' Проверяем настройки. | ||
− | * 2.3.1. Прежде чем выполнять проверку, нужно посмотреть на изменения, которые могли произойти с момента последнего запуска обработки на этой конфигурации. Пользователь мог обновить конфигурацию базы данных, либо могли поменяться файлы настроек. | + | * 2.3.1. Читаем структуру сбис параметров из поля "json_connection". |
+ | * 2.3.2. Прежде чем выполнять проверку, нужно посмотреть на изменения, которые могли произойти с момента последнего запуска обработки на этой конфигурации. Пользователь мог обновить конфигурацию базы данных, либо могли поменяться файлы настроек. | ||
** Для того, чтобы отследить изменения версии конфигурации, сравним значение узла "ВерсияКонфигурации" в сбис параметрах и текущую версию конфигурации - Метаданные.Версия. | ** Для того, чтобы отследить изменения версии конфигурации, сравним значение узла "ВерсияКонфигурации" в сбис параметрах и текущую версию конфигурации - Метаданные.Версия. | ||
** Для того, чтобы отследить изменения файлов настроек конфигурации, сравним дату последней проверки каждой включенной настройки в сбис параметрах и поле в настройках "update_date". | ** Для того, чтобы отследить изменения файлов настроек конфигурации, сравним дату последней проверки каждой включенной настройки в сбис параметрах и поле в настройках "update_date". | ||
− | * 2.3.2. Запускаем алгоритм проверки структуры файлов настроек | + | * 2.3.3. Если изменений не было, то сразу переходим к сохранению настроек (пункт 2.4.) |
− | * 2.3. | + | * 2.3.4. Запускаем алгоритм проверки структуры файлов настроек. |
+ | * 2.3.5. Оцениваем результат проверки. | ||
** Если проверка выполнена успешно, то вносим изменения в сбис параметры для того, чтобы при следующем получении проверка не проводилась. | ** Если проверка выполнена успешно, то вносим изменения в сбис параметры для того, чтобы при следующем получении проверка не проводилась. | ||
*** Обновляем дату проверки в сбисПараметрах для всех включенных файлов настроек. | *** Обновляем дату проверки в сбисПараметрах для всех включенных файлов настроек. | ||
*** Обновляем поле "ВерсияКонфигурации" на текущую версию конфигурации - Метаданные.Версия. | *** Обновляем поле "ВерсияКонфигурации" на текущую версию конфигурации - Метаданные.Версия. | ||
− | ** Если в процессе проверки обнаружены ошибки, то показываем протокол об ошибках переходим к процедуре ручной правки выбранных настроек( | + | ** Если в процессе проверки обнаружены ошибки, то показываем протокол об ошибках и переходим к процедуре ручной правки выбранных настроек (Пункт 3) |
− | '''2.4.''' Сохраняем выбранные настройки | + | '''2.4.''' Сохраняем выбранные настройки. |
* 2.4.1. Запишем изменения на сервер. | * 2.4.1. Запишем изменения на сервер. | ||
** 2.4.1.1. Сперва оценим, нужно ли что-то записывать. | ** 2.4.1.1. Сперва оценим, нужно ли что-то записывать. | ||
Строка 72: | Строка 73: | ||
*** Положим в поле "json_connection" сбис параметры после проверки. | *** Положим в поле "json_connection" сбис параметры после проверки. | ||
*** Определим необходимость создания нового подключения. Если выбранные настройки являются общими, то выбранный ConnectionID указывается в качестве параметра "parent". Поле "id" очищается. | *** Определим необходимость создания нового подключения. Если выбранные настройки являются общими, то выбранный ConnectionID указывается в качестве параметра "parent". Поле "id" очищается. | ||
− | ** 2.4.1.4. Сохраним изменения [[WriteConnection_(IntegrationConnection)|WriteConnection]]. | + | ** 2.4.1.4. Сохраним изменения [[WriteConnection_(IntegrationConnection)|WriteConnection]]. Получившийся в итоге ID, будет нашим персональным идентификатором настроек. |
− | * 2.4.2. | + | * 2.4.2. Если полученный ID отличается от указанного в обработке, то сохраним новый в пользовательский параметр и реквизит обработки "ConnectionID". |
'''2.5.''' После записи ID, переходим в раздел обработки, установленный по-умолчанию. Теперь можно работать в СБИС, отправлять и утверждать документы. | '''2.5.''' После записи ID, переходим в раздел обработки, установленный по-умолчанию. Теперь можно работать в СБИС, отправлять и утверждать документы. | ||
− | === 3. Переход в раздел файлов настроек для ручного управления | + | === 3. Переход в раздел файлов настроек, для ручного выбора и управления === |
− | '''3.1.''' Заполняем список доступных типовых конфигураций для | + | '''3.1.''' Заполняем список доступных типовых конфигураций для отображения в обработке. |
* 3.1.1. Проверяем наличие готового списка в кэше обработки. Если есть, берём. | * 3.1.1. Проверяем наличие готового списка в кэше обработки. Если есть, берём. | ||
* 3.1.2. Если готового списка нет, то читаем с сервера [[ReadConfigList_(IntegrationConnection)|ReadConfigList]], формируем новый и кэшируем. | * 3.1.2. Если готового списка нет, то читаем с сервера [[ReadConfigList_(IntegrationConnection)|ReadConfigList]], формируем новый и кэшируем. | ||
Строка 90: | Строка 91: | ||
** 3.2.2.1. Получаем сбис меню выбранных настроек, в котором содержится информация по составу настроек и тому, какие файлы должны быть включены сразу, а какие - нет. | ** 3.2.2.1. Получаем сбис меню выбранных настроек, в котором содержится информация по составу настроек и тому, какие файлы должны быть включены сразу, а какие - нет. | ||
*** Проверяем наличие файла сбис меню в кэше по выбранным параметрам типовых настроек и берём его. | *** Проверяем наличие файла сбис меню в кэше по выбранным параметрам типовых настроек и берём его. | ||
− | ** | + | *** Если меню нет, то читаем его с сервера [[ReadConfig_(IntegrationConnection)|ReadConfig]]: |
− | |||
**** Параметры вызова: | **** Параметры вызова: | ||
***** service - идентификатор сервиса ВО 1С - Com1C82. | ***** service - идентификатор сервиса ВО 1С - Com1C82. | ||
Строка 115: | Строка 115: | ||
*** Кэшируем полученные настройки. | *** Кэшируем полученные настройки. | ||
* 3.2.4. Выставляем в обработке пометку о создании нового соединения при записи. | * 3.2.4. Выставляем в обработке пометку о создании нового соединения при записи. | ||
− | * 3.2.5. | + | * 3.2.5. Запускаем алгоритм проверки структуры файлов настроек. |
− | * 3.2.6. Если при проверке были ошибки, то показываем протокол. | + | * 3.2.6. Если при проверке были ошибки, то показываем протокол об ошибках. |
'''3.3.''' Определяем конфигурацию выбранных настроек по параметрам настроек "service, subsystem, verison" и списку доступных настроек. | '''3.3.''' Определяем конфигурацию выбранных настроек по параметрам настроек "service, subsystem, verison" и списку доступных настроек. | ||
Строка 122: | Строка 122: | ||
'''3.4.''' Получаем меню выбранной конфигурации для того, чтобы составить список доступных файлов настроек. | '''3.4.''' Получаем меню выбранной конфигурации для того, чтобы составить список доступных файлов настроек. | ||
* 3.4.1. Проверяем наличие файла сбис меню в кэше по выбранным параметрам "service, subsystem, verison" и берём его. | * 3.4.1. Проверяем наличие файла сбис меню в кэше по выбранным параметрам "service, subsystem, verison" и берём его. | ||
− | * 3.4.2. Если меню нет, то читаем его | + | * 3.4.2. Если меню нет, то читаем его с сервера [[ReadConfig_(IntegrationConnection)|ReadConfig]]: |
− | + | ** Параметры вызова: | |
− | + | *** service - идентификатор сервиса ВО 1С - Com1C82 | |
− | + | *** subsystem - поле "subsystem" выбранной конфигурации. | |
− | + | *** version - поле "version" выбранной конфигурации. | |
− | + | *** ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню". | |
− | + | ** Кэшируем полученное меню. | |
− | |||
'''3.5.''' Читаем меню типовых настроек и строим список доступны и установленных файлов настроек, а так же расставляем галочки установленных настроек, автообновления, пользовательских изменений. | '''3.5.''' Читаем меню типовых настроек и строим список доступны и установленных файлов настроек, а так же расставляем галочки установленных настроек, автообновления, пользовательских изменений. |
Текущая версия на 13:48, 3 ноября 2017
ВО СБИС поддерживает два варианта хранения файлов настроек: "в каталоге" и "в СБИС". В первом варианте, настройки находятся на локальном диске, путь до папки указывается в настройках обработки, и сохраняется в пользовательских параметрах 1С. Основной недостатком является необходимость общего доступа к каталогу и более сложная настройка в Linux и клиент-серверных версиях 1С, не работает в веб клиентах 1С.
Во втором варианте, настройки хранятся в СБИС. В пользовательских параметрах 1С хранится только идентификатор настройки. Данный способ доступен только для при использовании способа обмена extSDK, либо extSDKCrypto. Данный вариант избавлен от недостатков, а также имеет дополнительный функционал - общие настройки, который позволяет создать для всех настройки по-умолчанию, которые автоматически будут применяться у пользователей при запуске обработки на этой базе 1С.
Содержание
Алгоритм загрузки файла настроек из СБИС
1. Идентификатор настройки (ConnectionID) отсутствует в пользовательских параметрах
1.1. Проверяем имеются ли для данной базы 1С общие настройки, либо настройка уже проводилась, но по какой-либо причине, ConnectionID в обработке не сохранился. Например: настраиваем обработку пользователю первый раз, у пользователя был очищен кэш 1С, либо переустановлена платформа (актуально для конфигураций, работающих на обычных формах).
- 1.1.1. Получаем список настроек ReadConnectionList. Сразу получаем сбис меню, в котором содержится информация по составу настроек и тому, какие файлы включены, а какие - нет.
- Параметры вызова:
- service - идентификатор сервиса ВО 1С - Com1C82
- URL - строка соединения базы данных.
- ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню".
- Параметры вызова:
- 1.1.2. Если список соединений пуст, переходим к процедуре выбора подходящих стандартных настроек (Пункт 3).
1.2. Берём первое соединение из полученного списка. Список построен таким образом, что сперва идут настройки, которые сохранены только для выбранного пользователя, а затем общие для всех.
- 1.2.1. Кэшируем сбис меню выбранного соединения, чтобы в дальнейшем не получать повторно.
1.3. Переходим к получению настроек по выбранному ConnectionID. (Пункт 2).
2. Идентификатор настройки (ConnectionID) указан в пользовательских настройках
2.1. Составляем список файлов настроек, которые необходимо получить.
- 2.1.1. Получаем сбис меню, в котором содержится информация по составу настроек и тому, какие файлы включены, а какие - нет.
- Проверяем наличие файла сбис меню в кэше по выбранному ConnectionID и берём его.
- Если меню нет, то читаем его с сервера readConnection:
- Параметры вызова:
- id - ConnectionID, 128 битный идентификатор соединения.
- version - числовое представление версии системы, где каждый разряд версии, кроме первого, дополнен нулями до 4 символов. Пример: 3.2.0.11 = 3000200000011
- ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню", чтобы получить только меню.
- Кэшируем полученное меню.
- Параметры вызова:
- 2.1.2. Читаем меню и составляем список включенных файлов настроек, которые необходимо получить.
- Включенным считается файл с установленным флагом в поле "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.3. Проверяем настройки.
- 2.3.1. Читаем структуру сбис параметров из поля "json_connection".
- 2.3.2. Прежде чем выполнять проверку, нужно посмотреть на изменения, которые могли произойти с момента последнего запуска обработки на этой конфигурации. Пользователь мог обновить конфигурацию базы данных, либо могли поменяться файлы настроек.
- Для того, чтобы отследить изменения версии конфигурации, сравним значение узла "ВерсияКонфигурации" в сбис параметрах и текущую версию конфигурации - Метаданные.Версия.
- Для того, чтобы отследить изменения файлов настроек конфигурации, сравним дату последней проверки каждой включенной настройки в сбис параметрах и поле в настройках "update_date".
- 2.3.3. Если изменений не было, то сразу переходим к сохранению настроек (пункт 2.4.)
- 2.3.4. Запускаем алгоритм проверки структуры файлов настроек.
- 2.3.5. Оцениваем результат проверки.
- Если проверка выполнена успешно, то вносим изменения в сбис параметры для того, чтобы при следующем получении проверка не проводилась.
- Обновляем дату проверки в сбисПараметрах для всех включенных файлов настроек.
- Обновляем поле "ВерсияКонфигурации" на текущую версию конфигурации - Метаданные.Версия.
- Если в процессе проверки обнаружены ошибки, то показываем протокол об ошибках и переходим к процедуре ручной правки выбранных настроек (Пункт 3)
- Если проверка выполнена успешно, то вносим изменения в сбис параметры для того, чтобы при следующем получении проверка не проводилась.
2.4. Сохраняем выбранные настройки.
- 2.4.1. Запишем изменения на сервер.
- 2.4.1.1. Сперва оценим, нужно ли что-то записывать.
- Если проверка настроек проводилась, то должны были поменяться сбис параметры, а значит нужно их сохранить.
- Если были выбраны общие настройки, то надо создать на их основе новое подключение, чтобы можно было вносить персональные правки, включать нужные и отключать ненужные файлы настроек.
- 2.4.1.2. Если ничего не менялось, а соединение персональное, то сразу переходим к пункту 2.4.2.
- 2.4.1.3. Подготовим параметры для записи.
- Возьмём данные от выбранных настроек.
- Поле "ini" не указывается.
- Положим в поле "json_connection" сбис параметры после проверки.
- Определим необходимость создания нового подключения. Если выбранные настройки являются общими, то выбранный ConnectionID указывается в качестве параметра "parent". Поле "id" очищается.
- 2.4.1.4. Сохраним изменения WriteConnection. Получившийся в итоге ID, будет нашим персональным идентификатором настроек.
- 2.4.1.1. Сперва оценим, нужно ли что-то записывать.
- 2.4.2. Если полученный ID отличается от указанного в обработке, то сохраним новый в пользовательский параметр и реквизит обработки "ConnectionID".
2.5. После записи ID, переходим в раздел обработки, установленный по-умолчанию. Теперь можно работать в СБИС, отправлять и утверждать документы.
3. Переход в раздел файлов настроек, для ручного выбора и управления
3.1. Заполняем список доступных типовых конфигураций для отображения в обработке.
- 3.1.1. Проверяем наличие готового списка в кэше обработки. Если есть, берём.
- 3.1.2. Если готового списка нет, то читаем с сервера ReadConfigList, формируем новый и кэшируем.
- Параметры вызова:
- service - идентификатор сервиса ВО 1С - Com1C82
- Параметры вызова:
3.2. Устанавливаем стандартную конфигурацию, если никаких файлов настроек в обработку получено не было.
- 3.2.1. Подбираем подходящие типовые настройки по метаданным конфигурации и списку доступных настроек.
- 3.2.2. Составляем список файлов настроек, которые необходимо получить.
- 3.2.2.1. Получаем сбис меню выбранных настроек, в котором содержится информация по составу настроек и тому, какие файлы должны быть включены сразу, а какие - нет.
- Проверяем наличие файла сбис меню в кэше по выбранным параметрам типовых настроек и берём его.
- Если меню нет, то читаем его с сервера ReadConfig:
- Параметры вызова:
- service - идентификатор сервиса ВО 1С - Com1C82.
- subsystem - поле "subsystem" выбранной конфигурации.
- version - поле "version" выбранной конфигурации.
- ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню", чтобы получить только меню.
- Кэшируем полученное меню.
- Параметры вызова:
- 3.2.2.3. Читаем меню и составляем список включенных файлов настроек, которые необходимо получить.
- Включенным считается файл с установленным флагом в поле "enable". Если один и тот же файл встречается в меню несколько раз, в разных разделах, то он должен быть везде либо включен, либо отключен.
- Структура элементов списка:
- Массив структур "ini" с элементами:
- Ключ - "ini_type", значение - тип ини.
- Ключ - "ini_name", значение - системное имя ини.
- Массив структур "ini" с элементами:
- 3.2.2.1. Получаем сбис меню выбранных настроек, в котором содержится информация по составу настроек и тому, какие файлы должны быть включены сразу, а какие - нет.
- 3.2.3. Получаем файлы настроек.
- 3.2.3.1. Возможно, настройки, либо их часть, были получены ранее, поэтому смотрим их наличие в кэше по выбранным параметрам.
- Найденные файлы исключаем из списка настроек, которые необходимо получить.
- 3.2.3.2. Если что-то не найдено, читаем с сервера недостающие файлы настроек ReadConfig.
- Параметры вызова:
- service - идентификатор сервиса ВО 1С - Com1C82.
- subsystem - поле "subsystem" выбранной конфигурации.
- version - поле "version" выбранной конфигурации.
- ini - массив объектов "ini", которые не удалось найти кэше.
- Кэшируем полученные настройки.
- Параметры вызова:
- 3.2.3.1. Возможно, настройки, либо их часть, были получены ранее, поэтому смотрим их наличие в кэше по выбранным параметрам.
- 3.2.4. Выставляем в обработке пометку о создании нового соединения при записи.
- 3.2.5. Запускаем алгоритм проверки структуры файлов настроек.
- 3.2.6. Если при проверке были ошибки, то показываем протокол об ошибках.
3.3. Определяем конфигурацию выбранных настроек по параметрам настроек "service, subsystem, verison" и списку доступных настроек.
3.4. Получаем меню выбранной конфигурации для того, чтобы составить список доступных файлов настроек.
- 3.4.1. Проверяем наличие файла сбис меню в кэше по выбранным параметрам "service, subsystem, verison" и берём его.
- 3.4.2. Если меню нет, то читаем его с сервера ReadConfig:
- Параметры вызова:
- service - идентификатор сервиса ВО 1С - Com1C82
- subsystem - поле "subsystem" выбранной конфигурации.
- version - поле "version" выбранной конфигурации.
- ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню".
- Кэшируем полученное меню.
- Параметры вызова:
3.5. Читаем меню типовых настроек и строим список доступны и установленных файлов настроек, а так же расставляем галочки установленных настроек, автообновления, пользовательских изменений.