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

Материал из razgovorov.ru
Перейти к: навигация, поиск
(1. Идентификатор настройки (ConnectionID) отсутствует в пользовательских параметрах)
 
(не показано 16 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
ВО СБИС поддерживает два варианта хранения файлов настроек: "в каталоге" и "в СБИС".
 
ВО СБИС поддерживает два варианта хранения файлов настроек: "в каталоге" и "в СБИС".
В первом варианте настройки находятся на локальном диске, путь до папки указывается в настройках обработки, и сохраняется в пользовательских параметрах 1С. Основной недостатком является необходимость общего доступа к каталогу и более сложная настройка в Linux и клиент-серверных версиях 1С, не работает в веб клиентах 1С.  
+
В первом варианте, настройки находятся на локальном диске, путь до папки указывается в настройках обработки, и сохраняется в пользовательских параметрах 1С. Основной недостатком является необходимость общего доступа к каталогу и более сложная настройка в Linux и клиент-серверных версиях 1С, не работает в веб клиентах 1С.  
  
Во втором варианте настройки хранятся в СБИС, в пользовательских параметрах 1С хранится только идентификатор настройки. Данный способ доступен только для при использовании способа обмена extSDK, либо extSDKCrypto. Данный вариант избавлен от недостатков, а также имеет дополнительный функционал - общие настройки. Можно создать для всех настройки по-умолчанию, которые автоматически будут применяться у пользователей при запуске обработки на этой базе 1С.
+
Во втором варианте, настройки хранятся в СБИС. В пользовательских параметрах 1С хранится только идентификатор настройки. Данный способ доступен только для при использовании способа обмена extSDK, либо extSDKCrypto. Данный вариант избавлен от недостатков, а также имеет дополнительный функционал - общие настройки, который позволяет создать для всех настройки по-умолчанию, которые автоматически будут применяться у пользователей при запуске обработки на этой базе 1С.
  
 
==Алгоритм загрузки файла настроек из СБИС==
 
==Алгоритм загрузки файла настроек из СБИС==
Строка 9: Строка 9:
  
 
'''1.1.''' Проверяем имеются ли для данной базы 1С общие настройки, либо настройка уже проводилась, но по какой-либо причине, ConnectionID в обработке не сохранился. Например: настраиваем обработку пользователю первый раз, у пользователя был очищен кэш 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) указан в пользовательских настройках ===
Строка 26: Строка 26:
 
* 2.1.1. Получаем сбис меню, в котором содержится информация по составу настроек и тому, какие файлы включены, а какие - нет.  
 
* 2.1.1. Получаем сбис меню, в котором содержится информация по составу настроек и тому, какие файлы включены, а какие - нет.  
 
** Проверяем наличие файла сбис меню в кэше по выбранному ConnectionID и берём его.
 
** Проверяем наличие файла сбис меню в кэше по выбранному ConnectionID и берём его.
* 2.1.2. Если меню нет, то читаем его с сервера по выбранному ConnectionID:
+
** Если меню нет, то читаем его с сервера [[ReadConnection_(IntegrationConnection)|readConnection]]:
** Читаем настройки с сервера [[ReadConnection_(IntegrationConnection)|readConnection]]
 
 
*** Параметры вызова:
 
*** Параметры вызова:
 
**** id - ConnectionID, 128 битный идентификатор соединения.
 
**** id - ConnectionID, 128 битный идентификатор соединения.
Строка 33: Строка 32:
 
**** ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню", чтобы получить только меню.
 
**** ini - массив со структурой, вида: ключ - строка "ini_type", значение - строка "Меню", чтобы получить только меню.
 
*** Кэшируем полученное меню.
 
*** Кэшируем полученное меню.
* 2.1.3. Читаем меню и составляем список включенных файлов настроек, которые необходимо получить.
+
* 2.1.2. Читаем меню и составляем список включенных файлов настроек, которые необходимо получить.
 
** Включенным считается файл с установленным флагом в поле "enable". Если один и тот же файл встречается в меню несколько раз, в разных разделах, то он должен быть везде либо включен, либо отключен.
 
** Включенным считается файл с установленным флагом в поле "enable". Если один и тот же файл встречается в меню несколько раз, в разных разделах, то он должен быть везде либо включен, либо отключен.
 
** Структура элементов списка:
 
** Структура элементов списка:
Строка 48: Строка 47:
 
*** 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.''' Проверяем настройки.
* 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.3. Оцениваем результат проверки.
+
* 2.3.4. Запускаем алгоритм проверки структуры файлов настроек.
 +
* 2.3.5. Оцениваем результат проверки.
 
** Если проверка выполнена успешно, то вносим изменения в сбис параметры для того, чтобы при следующем получении проверка не проводилась.
 
** Если проверка выполнена успешно, то вносим изменения в сбис параметры для того, чтобы при следующем получении проверка не проводилась.
 
*** Обновляем дату проверки в сбисПараметрах для всех включенных файлов настроек.
 
*** Обновляем дату проверки в сбисПараметрах для всех включенных файлов настроек.
 
*** Обновляем поле "ВерсияКонфигурации" на текущую версию конфигурации - Метаданные.Версия.
 
*** Обновляем поле "ВерсияКонфигурации" на текущую версию конфигурации - Метаданные.Версия.
** Если в процессе проверки обнаружены ошибки, то переходим к процедуре ручной правки выбранных настроек(Пункт3)  
+
** Если в процессе проверки обнаружены ошибки, то показываем протокол об ошибках и переходим к процедуре ручной правки выбранных настроек (Пункт 3)  
  
'''2.4.''' Сохраняем выбранные настройки в обработку.
+
'''2.4.''' Сохраняем выбранные настройки.
 
* 2.4.1. Запишем изменения на сервер.
 
* 2.4.1. Запишем изменения на сервер.
 
** 2.4.1.1. Сперва оценим, нужно ли что-то записывать.
 
** 2.4.1.1. Сперва оценим, нужно ли что-то записывать.
Строка 73: Строка 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. Полученный ID сохраним в пользовательский параметр и реквизит обработки "ConnectionID".
+
* 2.4.2. Если полученный ID отличается от указанного в обработке, то сохраним новый в пользовательский параметр и реквизит обработки "ConnectionID".
  
'''2.5.''' После записи ID, переходим в раздел обработки, установленный по-умолчанию. Теперь можно отправлять и утверждать документы.
+
'''2.5.''' После записи ID, переходим в раздел обработки, установленный по-умолчанию. Теперь можно работать в СБИС, отправлять и утверждать документы.
  
== Пункт 3. Переход в раздел: ==
+
=== 3. Переход в раздел файлов настроек, для ручного выбора и управления ===
'''Если полученные файлы ини прошли проверку:'''
 
* Выполняет переход в раздел, установленный по-умолчанию.
 
'''Если настройки полученного соединения не прошли проверку:'''
 
  
* '''Шаг 1.''' Если были ошибки при проверке, показывает протокол об ошибках.
+
'''3.1.''' Заполняем список доступных типовых конфигураций для отображения в обработке.
** ВывестиПротоколПроверкиИниФайлов на форме ФайлыНастроекОбщее.
+
* 3.1.1. Проверяем наличие готового списка в кэше обработки. Если есть, берём.
 
+
* 3.1.2. Если готового списка нет, то читаем с сервера [[ReadConfigList_(IntegrationConnection)|ReadConfigList]], формируем новый и кэшируем.
* '''Шаг 2.''' Переходит в "Настройки", подраздел "Файлы настроек".
+
** Параметры вызова:
** ПерейтиВРаздел на форме ГлавноеОкно
+
*** service - идентификатор сервиса ВО 1С - Com1C82
  
* '''Шаг 3.''' Заполняет список доступных конфигураций.
+
'''3.2.''' Устанавливаем стандартную конфигурацию, если никаких файлов настроек в обработку получено не было.
** ОбновитьКонтент на форме Раздел_Настройки_ФайлыНастроек
+
* 3.2.1. Подбираем подходящие типовые настройки по метаданным конфигурации и списку доступных настроек.
*** Вызывает [[ReadConfigList_(IntegrationConnection)|ReadConfigList]].
+
* 3.2.2. Составляем список файлов настроек, которые необходимо получить.
 +
** 3.2.2.1. Получаем сбис меню выбранных настроек, в котором содержится информация по составу настроек и тому, какие файлы должны быть включены сразу, а какие - нет.
 +
*** Проверяем наличие файла сбис меню в кэше по выбранным параметрам типовых настроек и берём его.
 +
*** Если меню нет, то читаем его с сервера [[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. Читаем меню типовых настроек и строим список доступны и установленных файлов настроек, а так же расставляем галочки установленных настроек, автообновления, пользовательских изменений.