Описание хранения настроек в базе Mobile SMARTS и их конвертация

Последние изменения: 22.01.2021

В каждом шаблоне базы Mobile SMARTS (например «Клеверенс Магазин 15 Полный.mstmpl») в папке «\Обработки 1С\Настройки по умолчанию\» располагаются файлы с настройками по умолчанию (они же — типовые настройки) для разных конфигураций 1С:

 

В мастере создания новой базы из шаблона мы выбираем, с какой конфигурацией 1С будет обмениваться данными новая база Mobile SMARTS. Соответствие конфигураций 1С и файлов настроек хранится в файле шаблона «1CConfigs.xml»:

После распаковки данных из шаблона в папку базы Mobile SMARTS копируется папка «Обработки 1С» с файлами настроек для всех конфигураций 1С, копируется файл «1CConfigs.xml», а также копируется файл, соответствующий выбранной конфигурации 1С, и сохраняется с именем  «default_customsettings.xml». Например, мы выбрали конфигурацию «Управление торговлей 11.4», поэтому в файле «default_customsettings.xml» хранятся данные из файла «ut114.xml» (на скриншоте можно увидеть, что размеры файлов совпадают с точностью до байта).

В файле «default_customsettings.xml» хранятся все настройки базы, которые будут использованы по умолчанию. Так как это типовые настройки, то их нельзя изменять программно в коде 1С.

После первого запуска обработки 1С в базу Mobile SMARTS записывается еще ряд настроек, которые уже считаются не типовыми, а пользовательскими, поэтому они сохраняются в отдельный файл —   «customsettings.xml». Часть из них создает мастер первого запуска Mobile SMARTS, другая часть настроек создается из обработки 1С при первом запуске.

Когда мы запрашиваем у сервера Mobile SMARTS какую-то настройку по ее ключу, то сперва данная настройка ищется в пользовательских настройках, и если там не была найдена, то ищется в типовых. Если нигде не найдена, то возвращается значение «Неопределено». 

В обработке 1С явно указывается доступный список настроек, которые будут считаны из базы Mobile SMARTS (они же - метаданные настроек MS, структура настроек MS). Делается это в методе ГлЯдро_ПолучитьПустуюСтруктуруНастроекSMARTS(), поэтому, если в новом релизе того или иного продукта Mobile SMARTS (например, «Склад 15», «Магазин 15») обновляются метаданные настроек (добавляются новые настройки, удаляются существующие настройки, меняется тип значений существующих настроек), их также нужно явно модифицировать в этом методе для возможности корректной работы с ними в обработке:

Также, существует категория сериализуемых настроек, которые не являются значениями примитивного типа («Число», «Строка», «Дата», «Булево», «Ссылка»), и которые необходимо сериализовывать в строку определенного формата для возможности хранения их в текстовом файле и десериализовывать при загрузке из файла. Это могут быть таблицы значений, списки значений и другие составные типы данных. В обработке для целей сериализации/десериализации используются методы ЗначениеВСтрокуВнутр() и ЗначениеИзСтрокиВнутр(). Для сериализуемых настроек существует метод, в котором описывается состав сериализуемых настроек — ГлЯдро_ПолучитьКатегорииНастроекMS() и метод, который описывает, какие колонки в какой таблице могут существовать — ГлЯдро_СформироватьМетаданныеНастроекMS(), например, для таблицы с настройками обмена справочниками могут быть только 2 поля — «ИмяТаблицы» и «НастройкаКомпоновщикаСтрокой». Для таблицы с настройками обмена документами это могут быть поля «ID_БизнесПроцесса», «Название», «НастройкаКомпоновщикаСтрокой» и т.д. Пример:

Для того чтобы в процессе работы с обработкой каждый раз не обращаться к базе Mobile SMARTS за получением значения настройки, все настройки при запуске обработки кэшируются в переменную ядра АдресаПеременных.ТекущиеНастройкиMS, а для онлайн-режима — дополнительно в хранилище общих настроек 1С по ключу Cleverence_СтруктураНастроек. Впоследствии, если какая-то настройка изменилась, она сохраняется и в базу Mobile SMARTS и обновляется  в кэше, чтобы поддерживать актуальность настроек в кэше. Для онлайн-режима дополнительно существует механизм обновления настроек: если кто-то параллельно работает с базой Mobile SMARTS из 1С, то этот пользователь может изменить настройки, поэтому каждые 900 секунд происходит проверка актуальности настроек в кэше. Если они стали неактуальными, они перечитываются из базы Mobile SMARTS в кэш. Для этого в хранилище общих настроек 1С сохраняются следующие данные:

  • Cleverence_ДатаАктуальностиНастроек — дата, когда настройки были сохранены/изменены пользователем.
  • Cleverence_ДатаАктуальностиКэша — дата, когда данные были загружены в кэш. Если дата кэша старше даты настроек, то запускается обновление кэша.

Например, вы поменяли глобальный параметр у какого-то узла, от которого зависит отбор документов. При работе в режиме онлайн он никак не обновится в кэше, пока соединение не будет перезапущено. Это и есть проверка на актуальность.

Иначе говоря, Cleverence_ДатаАктуальностиНастроек  — это дата последней записи настроек в Mobile SMARTS, а Cleverence_ДатаАктуальностиКэша — это дата последнего считывания настроек из Mobile SMARTS в кэш. И если Cleverence_ДатаАктуальностиКэша <= Cleverence_ДатаАктуальностиНастроек , т.е. если после того как считали настройки, что-то еще изменили, то нужно перечитать настройки.

Во всех формах, в которых возможен просмотр или редактирование настроек, например, бизнес-процессов, произвольных кодов, отборов документов и т.д. существует функционал по экспорту/импорту настроек в/из файла. Это может понадобится для создания резервной копии настроек или для переноса настроек в другую базу Mobile SMARTS.

Формат хранения настроек бизнес-процессов и произвольных кодов

Бизнес-процессы хранятся в 3х ключах:

  • НастройкиБизнесПроцессов_ПоУмолчанию.
  • НастройкиБизнесПроцессов_Пользовательские.
  • НастройкиБизнесПроцессов_ПользовательскиеНастройки.

НастройкиБизнесПроцессов_ПоУмолчанию — это наши типовые настройки, которые недоступны для редактирования. Они разворачиваются вместе с базой Mobile SMARTS и обновляются в файле default_customsettings.xml. Пользователь может только поменять некоторые параметры, например, «Использование», «Контроль количества», «Режим записи», «Выбор пользователя» и т.д.

НастройкиБизнесПроцессов_ПользовательскиеНастройки — сюда сохраняются те самые параметры, которые разрешено менять пользователю в типовых настройках. Они сохраняются в файл customsettings.xml. Если по этому ключу отсутствует настройка, значит, пользователь ничего не менял в типовых бизнес-процессах.

НастройкиБизнесПроцессов_Пользовательские — сохраняются бизнес-процессы, которые создал пользователь. Они сохраняются в файл «customsettings.xml»

При инициализации настройки бизнес-процессы собираются из этих трех ключей в единую таблицу (метод ГлЯдро_СобратьОбщуюСтруктуруБизнесПроцессов()) + проходит обновление настроек, если версия настроек ниже используемой в ядре.

Если пользователю надо что-то поменять в типовом бизнес-процессе, он может скопировать его, поменять что нужно и отключить типовой. Его скопированный бизнес-процесс будет иметь другой ID.

Главный вопрос - как мы обновляем наши типовые БП?

1. Разворачиваем базу Mobile SMARTS с типовыми настройками.

2. Открываем обработку, заходим в настройки бизнес-процессов.

3. В чистой базе будут только типовые, недоступные для редактирования бизнес-процессы. Сохраняем их в файл.

4. Заходим в папку с базой Mobile SMARTS.

5. Удаляем, переименовываем или меняем расширение у файла default_customsettings.xml.

6. Перезапускаем обработку, заходим в настройки бизнес-процессов.

7. Видим пустой список, загружаем настройки из файла, в который сохраняли типовые.

8. Настройки загрузились, теперь они доступны как пользовательские.

9. Меняем всё что душе угодно.

10. Открываем файл «customsettings.xml», форматируем в нормальный вид. Находим ключ НастройкиБизнесПроцессов_Пользовательские.

11. Переименовываем этот ключ в НастройкиБизнесПроцессов_ПоУмолчанию.

12. Если менялись произвольные коды, аналогично находим ключ ПроизвольныеКоды_Пользовательские и переименовываем в ПроизвольныеКоды_ПоУмолчанию.

13. Копируем с заменой эти ключи в нужный файл настроек в зависимости от конфигурации — 

«\Git\2.Git_m15\Общий\Обработки 1С\Настройки по-умолчанию».

Аналогичная ситуация с произвольными кодами:

  1. ПроизвольныеКоды_ПоУмолчанию — по этому ключу в файле «default_customsettings.xml» хранятся типовые произвольные коды. Они недоступны для изменения из обработки.
  2. ПроизвольныеКоды_Пользовательские — по этому ключу в файле «customsettings.xml» хранятся пользовательские произвольные коды. Они доступны для изменения из обработки.

При инициализации произвольные коды собираются из этих двух ключей в единую таблицу (метод ГлЯдро_СобратьОбщуюСтруктуруПроизвольныхКодов()) + проходит обновление настроек, если версия настроек ниже используемой в ядре. При экспорте бизнес-процессов в файл также экспортируются и произвольные коды

В прошлых релизах обработки пользовательские произвольные коды сохранялись в 4 ключа:

  • ПроизвольныеКоды_Выгрузка_ШапкаДокумента.
  • ПроизвольныеКоды_Выгрузка_ТабличнаяЧастьДокумента.
  • ПроизвольныеКоды_Загрузка_ШапкаДокумента.
  • ПроизвольныеКоды_Загрузка_ТабличнаяЧастьДокумента, но потом стали храниться в одном ключе ПроизвольныеКоды_Пользовательские, поэтому, для обратной совместимости с прошлыми релизами обработки, существует метод ГлЯдро_ОбъединитьПроизвольныеКоды(), который объединяет все пользовательские произвольные коды в один ключ ПроизвольныеКоды_Пользовательские. 
Была ли статья полезна?
Спасибо за ваш отзыв!
Отзыв
Заполните, пожалуйста, данную форму, что конкретно вы не нашли, оставьте свои комментарии о работе сайта / полезности / сложности с навигацией
0/500