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

Материал из razgovorov.ru
Перейти к: навигация, поиск
 
(не показано 28 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
ВО СБИС поддерживает два варианта хранения файлов настроек: "в каталоге" и "в СБИС".
 
ВО СБИС поддерживает два варианта хранения файлов настроек: "в каталоге" и "в СБИС".
В первом варианте настройки находятся на локальном диске, путь до папки указывается в настройках обработки, и сохраняется в пользовательских параметрах 1С. Основной недостатком является необходимость общего доступа к каталогу и более сложная настройка в Linux и клиент-серверных версиях 1С, не работает в веб клиентах 1С.  
+
В первом варианте, настройки находятся на локальном диске, путь до папки указывается в настройках обработки, и сохраняется в пользовательских параметрах 1С. Основной недостатком является необходимость общего доступа к каталогу и более сложная настройка в Linux и клиент-серверных версиях 1С, не работает в веб клиентах 1С.  
  
Во втором варианте настройки хранятся в СБИС, в пользовательских параметрах 1С хранится только идентификатор настройки. Данный способ доступен только для при использовании способа обмена extSDK, либо extSDKCrypto. Данный вариант избавлен от недостатков, а также имеет дополнительный функционал - общие настройки. Можно создать для всех настройки по-умолчанию, которые автоматически будут применяться у пользователей при запуске обработки на этой базе 1С.
+
Во втором варианте, настройки хранятся в СБИС. В пользовательских параметрах 1С хранится только идентификатор настройки. Данный способ доступен только для при использовании способа обмена extSDK, либо extSDKCrypto. Данный вариант избавлен от недостатков, а также имеет дополнительный функционал - общие настройки, который позволяет создать для всех настройки по-умолчанию, которые автоматически будут применяться у пользователей при запуске обработки на этой базе 1С.
  
 
==Алгоритм загрузки файла настроек из СБИС==
 
==Алгоритм загрузки файла настроек из СБИС==
  
=== 1. Идентификатор настройки (ConnectionId) отсутствует в пользовательских параметрах ===
+
=== 1. Идентификатор настройки (ConnectionID) отсутствует в пользовательских параметрах ===
  
'''1.1.''' Проверяем имеется ли для данной базы 1С общие настройки .
+
'''1.1.''' Проверяем имеются ли для данной базы 1С общие настройки, либо настройка уже проводилась, но по какой-либо причине, ConnectionID в обработке не сохранился. Например: настраиваем обработку пользователю первый раз, у пользователя был очищен кэш 1С, либо переустановлена платформа (актуально для конфигураций, работающих на обычных формах).
* Получаем список настроек [[ReadConnectionList_(IntegrationConnection)|ReadConnectionList]]
+
* 1.1.1. Получаем список настроек [[ReadConnectionList_(IntegrationConnection)|ReadConnectionList]]. Сразу получаем сбис меню, в котором содержится информация по составу настроек и тому, какие файлы включены, а какие - нет.
 
** Параметры вызова:
 
** Параметры вызова:
 
*** service - идентификатор сервиса ВО 1С - Com1C82
 
*** service - идентификатор сервиса ВО 1С - Com1C82
 
*** URL - строка соединения базы данных.
 
*** URL - строка соединения базы данных.
 
*** ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню".
 
*** ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню".
* Если список соединений пуст, переходим к процедуре выбора подходящих стандартных настроек (Пункт 3).
+
* 1.1.2. Если список соединений пуст, переходим к процедуре выбора подходящих стандартных настроек (Пункт 3).
  
'''1.2.''' Берём первое соединение из полученного списка.
+
'''1.2.''' Берём первое соединение из полученного списка. Список построен таким образом, что сперва идут настройки, которые сохранены только для выбранного пользователя, а затем общие для всех.
* Кэшируем меню выбранного соединения.
+
* 1.2.1. Кэшируем сбис меню выбранного соединения, чтобы в дальнейшем не получать повторно.
  
'''1.3.''' Переходим к пункту 2.
+
'''1.3.''' Переходим к получению настроек по выбранному ConnectionID. (Пункт 2).
  
=== 2. Идентификатор настройки (ConnectionId) указан в пользовательских настройках ===
+
=== 2. Идентификатор настройки (ConnectionID) указан в пользовательских настройках ===
  
'''2.2.''' Составляем список файлов Получает меню соединения.
+
'''2.1.''' Составляем список файлов настроек, которые необходимо получить.
* Проверяет наличие сбисМеню в кэше по выбранному ID, берёт его.
+
* 2.1.1. Получаем сбис меню, в котором содержится информация по составу настроек и тому, какие файлы включены, а какие - нет.  
* Если меню нет, то получает его:
+
** Проверяем наличие файла сбис меню в кэше по выбранному ConnectionID и берём его.
** Вызывает метод [[ReadConnection_(IntegrationConnection)|readConnection]]
+
** Если меню нет, то читаем его с сервера [[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.1.2. Читаем меню и составляем список включенных файлов настроек, которые необходимо получить.
 +
** Включенным считается файл с установленным флагом в поле "enable". Если один и тот же файл встречается в меню несколько раз, в разных разделах, то он должен быть везде либо включен, либо отключен.
 +
** Структура элементов списка:
 +
*** Массив структур "ini" с элементами:
 +
**** Ключ - "ini_type", значение - тип ини.
 +
**** Ключ - "ini_name", значение - системное имя ини.
  
'''Шаг 2.''' Получает данные настроек и сбисПараметров.
+
'''2.2.''' Получаем файлы настроек и сбис параметры.
* Собирает список включенных ини по меню соединения.
+
* 2.2.1. Возможно, настройки, либо их часть, были получены ранее, поэтому смотрим их наличие в кэше по выбранному ConnectionID.
** Включенной считается ини с установленным флагом в поле "enable".
+
** Найденные файлы исключаем из списка настроек, которые необходимо получить.
** Структура элементов списка:
+
* 2.2.2. Читаем с сервера недостающие данные [[ReadConnection_(IntegrationConnection)|readConnection]]
*** Массив "ini" с элементами:
 
*** Ключ - "ini_type", значение - тип ини.
 
*** Ключ - "ini_name", значение - системное имя ини.
 
* Проверяет наличие настроек в кэше по идентификатору и сформированному списку.
 
* Вызывает метод [[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", которые не удалось найти кэше. Если все файлы найдены, параметр не передаётся.  
** Кэширует полученные настройки.
+
** Кэшируем полученные настройки.
* Получает структуру сбисПараметров из поля "json_connection"
 
  
'''Шаг 3.''' Выполняет проверку настроек.
+
'''2.3.''' Проверяем настройки.
* Проверяет необходимость проверки.
+
* 2.3.1. Читаем структуру сбис параметров из поля "json_connection".
** Проверка выполняется при изменении версии конфигурации базы данных:
+
* 2.3.2. Прежде чем выполнять проверку, нужно посмотреть на изменения, которые могли произойти с момента последнего запуска обработки на этой конфигурации. Пользователь мог обновить конфигурацию базы данных, либо могли поменяться файлы настроек.
*** Сравнивает значение узла "ВерсияКонфигурации" в сбисПараметрах и текущую версию конфигурации - Метаданные.Версия.
+
** Для того, чтобы отследить изменения версии конфигурации, сравним значение узла "ВерсияКонфигурации" в сбис параметрах и текущую версию конфигурации - Метаданные.Версия.
** Проверка выполняется при создании нового подключения:
+
** Для того, чтобы отследить изменения файлов настроек конфигурации, сравним дату последней проверки каждой включенной настройки в сбис параметрах и поле в настройках "update_date".
*** Выбранные настройки являются общими - поле "user" пусто.
+
* 2.3.3. Если изменений не было, то сразу переходим к сохранению настроек (пункт 2.4.)
** Проверка выполняется при изменении файлов настроек:
+
* 2.3.4. Запускаем алгоритм проверки структуры файлов настроек.
*** Сравнивает дату последней проверки каждой включенной настройки в сбисПараметрах и поле соединения "update_date".
+
* 2.3.5. Оцениваем результат проверки.
* Выполняет проверку, если требуется.
+
** Если проверка выполнена успешно, то вносим изменения в сбис параметры для того, чтобы при следующем получении проверка не проводилась.
** Выполняет  функцию ПроверитьИниФайлы на формаНастроекОбщее.
+
*** Обновляем дату проверки в сбисПараметрах для всех включенных файлов настроек.
** Обновляет дату проверки в сбисПараметрах.
+
*** Обновляем поле "ВерсияКонфигурации" на текущую версию конфигурации - Метаданные.Версия.
** Обновляет поле "ВерсияКонфигурации" на текущую версию конфигурации - Метаданные.Версия.
+
** Если в процессе проверки обнаружены ошибки, то показываем протокол об ошибках и переходим к процедуре ручной правки выбранных настроек (Пункт 3)
  
'''Шаг 4.''' Сохраняет выбранное соединение.
+
'''2.4.''' Сохраняем выбранные настройки.
* Если проверка настроек проводилась.
+
* 2.4.1. Запишем изменения на сервер.
** Готовит структуру на запись.
+
** 2.4.1.1. Сперва оценим, нужно ли что-то записывать.
 +
*** Если проверка настроек проводилась, то должны были поменяться сбис параметры, а значит нужно их сохранить.
 +
*** Если были выбраны общие настройки, то надо создать на их основе новое подключение, чтобы можно было вносить персональные правки, включать нужные и отключать ненужные файлы настроек.
 +
** 2.4.1.2. Если ничего не менялось, а соединение персональное, то сразу переходим к пункту 2.4.2.
 +
** 2.4.1.3. Подготовим параметры для записи.
 +
*** Возьмём данные от выбранных настроек.
 
*** Поле "ini" не указывается.
 
*** Поле "ini" не указывается.
*** Все поля остальные поля берутся из выбранного соединения.
+
*** Положим в поле "json_connection" сбис параметры после проверки.
** Записывает сбисПараметры:
+
*** Определим необходимость создания нового подключения. Если выбранные настройки являются общими, то выбранный ConnectionID указывается в качестве параметра "parent". Поле "id" очищается.
*** В поле "json_connection" записываются сбисПараметры с учетом изменений.
+
** 2.4.1.4. Сохраним изменения [[WriteConnection_(IntegrationConnection)|WriteConnection]]. Получившийся в итоге ID, будет нашим персональным идентификатором настроек.
** Определяет необходимость создания нового подключения.
+
* 2.4.2. Если полученный ID отличается от указанного в обработке, то сохраним новый в пользовательский параметр и реквизит обработки "ConnectionID".
*** Если выбранное соединение является общим, то его идентификатор указывается в качестве параметра "parent". Поле "id" очищается.
 
** Сохраняет изменения.
 
*** Вызывает метод [[WriteConnection_(IntegrationConnection)|WriteConnection]].
 
* Сохраняет ID соединения в обработку
 
** ID выбранного соединения записывается в пользовательский параметр "ConnectionID".
 
  
'''Шаг 5.''' Выполняет переход в раздел(Пункт 3).
+
'''2.5.''' После записи ID, переходим в раздел обработки, установленный по-умолчанию. Теперь можно работать в СБИС, отправлять и утверждать документы.
  
== Пункт 3. Переход в раздел: ==
+
=== 3. Переход в раздел файлов настроек, для ручного выбора и управления ===
'''Если полученные файлы ини прошли проверку:'''
 
* Выполняет переход в раздел, установленный по-умолчанию.
 
'''Если настройки полученного соединения не прошли проверку:'''
 
  
* '''Шаг 1.''' Если были ошибки при проверке, показывает протокол об ошибках.
+
'''3.1.''' Заполняем список доступных типовых конфигураций для отображения в обработке.
** ВывестиПротоколПроверкиИниФайлов на форме ФайлыНастроекОбщее.
+
* 3.1.1. Проверяем наличие готового списка в кэше обработки. Если есть, берём.
 +
* 3.1.2. Если готового списка нет, то читаем с сервера [[ReadConfigList_(IntegrationConnection)|ReadConfigList]], формируем новый и кэшируем.
 +
** Параметры вызова:
 +
*** service - идентификатор сервиса ВО 1С - Com1C82
  
* '''Шаг 2.''' Переходит в "Настройки", подраздел "Файлы настроек".
+
'''3.2.''' Устанавливаем стандартную конфигурацию, если никаких файлов настроек в обработку получено не было.
** ПерейтиВРаздел на форме ГлавноеОкно
+
* 3.2.1. Подбираем подходящие типовые настройки по метаданным конфигурации и списку доступных настроек.
 
+
* 3.2.2. Составляем список файлов настроек, которые необходимо получить.
* '''Шаг 3.''' Заполняет список доступных конфигураций.
+
** 3.2.2.1. Получаем сбис меню выбранных настроек, в котором содержится информация по составу настроек и тому, какие файлы должны быть включены сразу, а какие - нет.
** ОбновитьКонтент на форме Раздел_Настройки_ФайлыНастроек
+
*** Проверяем наличие файла сбис меню в кэше по выбранным параметрам типовых настроек и берём его.
*** Вызывает [[ReadConfigList_(IntegrationConnection)|ReadConfigList]].
+
*** Если меню нет, то читаем его с сервера [[ReadConfig_(IntegrationConnection)|ReadConfig]]:
 
**** Параметры вызова:
 
**** Параметры вызова:
***** service - идентификатор сервиса ВО 1С - Com1C82
+
***** service - идентификатор сервиса ВО 1С - Com1C82.
*** Заполняет список, кэширует.
+
***** subsystem - поле "subsystem" выбранной конфигурации.
 
+
***** version - поле "version" выбранной конфигурации.
* '''Шаг 4.''' Проверяет наличие выбранного соединения.
+
***** ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню", чтобы получить только меню.
** '''Если соединение не выбрано:'''
+
**** Кэшируем полученное меню.
*** а. Подбирает подходящую типовую конфигурацию.
+
** 3.2.2.3. Читаем меню и составляем список включенных файлов настроек, которые необходимо получить.
**** ОпределитьТипНастроекПоПрефиксу на форме ФормаНастроекОбщее.
+
*** Включенным считается файл с установленным флагом в поле "enable". Если один и тот же файл встречается в меню несколько раз, в разных разделах, то он должен быть везде либо включен, либо отключен.
*** б. Получает меню выбранной конфигурации.
+
*** Структура элементов списка:
**** Проверяет меню в кэше. Если есть, берёт.
+
**** Массив структур "ini" с элементами:
**** Если в кэше нет, получает:
 
***** Вызывает [[ReadConfig_(IntegrationConnection)|ReadConfig]]
 
****** Параметры вызова:
 
******* service - идентификатор сервиса ВО 1С - Com1C82.
 
******* subsystem - поле "subsystem" выбранной конфигурации.
 
******* version - поле "version" выбранной конфигурации.
 
******* ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню".
 
***** Кэширует полученное меню.
 
*** в. Формирует массив имен и типов включенных ини по меню.
 
**** Включенной считается ини с установленным флагом в поле "enable".
 
**** Структура элементов массива "ini":
 
 
***** Ключ - "ini_type", значение - тип ини.
 
***** Ключ - "ini_type", значение - тип ини.
 
***** Ключ - "ini_name", значение - системное имя ини.
 
***** Ключ - "ini_name", значение - системное имя ини.
*** г. Получает ини выбранной конфигурации.
+
* 3.2.3. Получаем файлы настроек.
**** Проверяет ини в кэше по сформированному массиву. Если есть, берёт.
+
** 3.2.3.1. Возможно, настройки, либо их часть, были получены ранее, поэтому смотрим их наличие в кэше по выбранным параметрам.
**** Если в кэше нет, вызывает [[ReadConfig_(IntegrationConnection)|ReadConfig]]
+
*** Найденные файлы исключаем из списка настроек, которые необходимо получить.
***** Параметры вызова:
+
** 3.2.3.2. Если что-то не найдено, читаем с сервера недостающие файлы настроек [[ReadConfig_(IntegrationConnection)|ReadConfig]].
****** service - идентификатор сервиса ВО 1С - Com1C82
 
****** subsystem - поле "subsystem" выбранной конфигурации.
 
****** version - поле "version" выбранной конфигурации.
 
****** ini - массив объектов "ini", которые не удалось найти кэше.
 
**** Кэширует полученные настройки
 
*** д. Выбранная конфигурация назначается выбранным соединением с пометкой создания нового при записи.
 
*** е. Выполняется проверка выбранного соединения.
 
 
 
* '''Шаг 5.''' Находит конфигурацию выбранного соединения.
 
** ОпределитьТипНастроекПоПрефиксу на форме ФормаНастроекОбщее.
 
 
 
* '''Шаг 6.''' Получает меню выбранной конфигурации.
 
** Проверяет меню в кэше. Если есть, берёт.
 
** Если в кэше нет, вызывает [[ReadConfig_(IntegrationConnection)|ReadConfig]]
 
 
*** Параметры вызова:
 
*** Параметры вызова:
**** service - идентификатор сервиса ВО 1С - Com1C82
+
**** service - идентификатор сервиса ВО 1С - Com1C82.
 
**** subsystem - поле "subsystem" выбранной конфигурации.
 
**** subsystem - поле "subsystem" выбранной конфигурации.
 
**** version - поле "version" выбранной конфигурации.
 
**** version - поле "version" выбранной конфигурации.
**** ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню".
+
**** ini - массив объектов "ini", которые не удалось найти кэше.
*** Кэширует полученное меню
+
*** Кэшируем полученные настройки.
 +
* 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_(IntegrationConnection)|ReadConfig]]:
 +
** Параметры вызова:
 +
*** service - идентификатор сервиса ВО 1С - Com1C82
 +
*** subsystem - поле "subsystem" выбранной конфигурации.
 +
*** version - поле "version" выбранной конфигурации.
 +
*** ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню".
 +
** Кэшируем полученное меню.
  
* '''Шаг 7.''' Строит список доступных ини.
+
'''3.5.''' Читаем меню типовых настроек и строим список доступны и установленных файлов настроек, а так же расставляем галочки установленных настроек, автообновления, пользовательских изменений.
** ПолучитьМассивФайловДляКонфигурации на форме ФайлыНастроекСервер.
 
** ПолучитьМассивУстановленныхИниФайлов на форме ФайлыНастроекСервер.
 
  
* '''Шаг 8.''' Отображает выбранные ини соединения и конфигурации.
 
** сбисОбновитьТаблицыИниФайлов на форме ГлавноеОкно.
 
*** В левой колонке список ини полученной конфигурации.
 
*** В правой колонке список ини выбранного соединения.
 
  
  
 
[[Категория:1С]]
 
[[Категория:1С]]

Текущая версия на 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", значение - системное имя ини.

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.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", значение - системное имя ини.
  • 3.2.3. Получаем файлы настроек.
    • 3.2.3.1. Возможно, настройки, либо их часть, были получены ранее, поэтому смотрим их наличие в кэше по выбранным параметрам.
      • Найденные файлы исключаем из списка настроек, которые необходимо получить.
    • 3.2.3.2. Если что-то не найдено, читаем с сервера недостающие файлы настроек ReadConfig.
      • Параметры вызова:
        • service - идентификатор сервиса ВО 1С - Com1C82.
        • subsystem - поле "subsystem" выбранной конфигурации.
        • version - поле "version" выбранной конфигурации.
        • ini - массив объектов "ini", которые не удалось найти кэше.
      • Кэшируем полученные настройки.
  • 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. Читаем меню типовых настроек и строим список доступны и установленных файлов настроек, а так же расставляем галочки установленных настроек, автообновления, пользовательских изменений.