В данной статье рассмотрим 2 очень полезных аспекта:
1. Один из приёмов минимизации изменений в коде
2. Инструмент для минимизации этих самых изменений - ХранилищеОбщихНастроек.
Начнём с того, где есть слабые места при доработке типовых конфигураций. Слабое место в том, что много прыжков из одного общего модуля в другой. Особенно это неприятно, когда идёт переход через модули с постфиксом Внутренний. В этом модуле ничего не происходит, в нём просто передается управление в другой модуль.
Если возникает потребность изменить процедуру или функцию в конце этой цепочки прыжков, а именно необходимо добавить параметр, сразу приходится менять несколько модулей.
В каких задачах может возникнуть такая необходимость? Чаще всего это изменение механизма проведения типовых документов. Иногда нам необходимо либо исправить ошибку в типовой конфигурации, либо изменить логику проведения документов с учетом добавленных нами реквизитов и/или табличных частей.
Все привыкли в этой ситуации добавлять параметр в конце процедуры или функции и делать его необязательным, присваивая ему значение (Чаще всего Неопределено).Но бывает так, что от одного реквизита должна измениться логика проведения по 10 и более регистрам. Учитывая наличие прыжков нам придётся изменить 2 десятка общих модулей. Но, с помощью упомянутого выше объекта ХранилищеОбщихНастроек этого можно избежать.
Работа с хранилищем включает в себя 3 действия:
1. Сохранение настроек
2. Чтение настроек
3. Удаление настроек
Хочу отметить сразу, что в программном интерфейсе БСП есть процедуры для работы с хранилищем.
Также необходимо отметить те проблемы, с которыми я столкнулся:
1. Если до вызова процедуры Сохранить установить привилегированный режим, то выдается программная ошибка.
2. Внутри процедур БСП есть проверка на наличие набора прав "СохранениеДанныхПользователя". Здесь нужно продумать, под какими профилями будет выполняться Ваш код.
3. Не получилось сохранить в качестве настроек Структуру.
4. Ключ лучше использовать текстовый. Но он должен быть уникален от момента сохранения настроек, до момента их удаления. Рекомендую использовать Строка(Ссылка). Главное, чтоб Ссылка была во всех модулях, в которых планируется в процессе проведения использовать хранилище. Ссылку можно вытащить из отбора в любом наборе записей в движениях документа.
5. Из положительного - таблицы можно сохранять как настройки.