четверг, 30 августа 2012 г.

Использование регистра сведений "СохраненныеНастройки" в своих целях

Всегда хочется избежать изменение конфигурации БП,ЗУП,УПП с целью быстрого и легкого обновления релизов. Но так же бывают задачки, которые требуют добавления в конфигурацию различных объектов, для хранения данных. В этом случае я стараюсь не вносить новые объекты метаданных, а использовать таблицы значения, которые записываю в регистр сведений "СохраненныеНастройки". Перед изменением данных я получаю эту таблицу:
Запрос = Новый Запрос("
    |ВЫБРАТЬ
    |    СохраненныеНастройки.ИмяОбъекта,
    |    СохраненныеНастройки.НаименованиеНастройки,
    |    СохраненныеНастройки.СохраненнаяНастройка
    |ИЗ
    |    РегистрСведений.СохраненныеНастройки КАК СохраненныеНастройки
    |ГДЕ
    |    СохраненныеНастройки.ИмяОбъекта = &ИмяОбъекта
    |    И СохраненныеНастройки.НаименованиеНастройки = &НаименованиеНастройки
    |");
   
    Запрос.УстановитьПараметр("ИмяОбъекта", "Аналоги");
    Запрос.УстановитьПараметр("НаименованиеНастройки", "СписокАналогов");
   
   
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Врем = Выборка.СохраненнаяНастройка;
        Прервать;
    КонецЦикла;

Если Врем=Неопределено Тогда
        ТаблицаАналогов = Новый ТаблицаЗначений;
        ТаблицаАналогов.Колонки.Добавить("Номенклатура");
        ТаблицаАналогов.Колонки.Добавить("Аналоги", Новый ОписаниеТипов("ТаблицаЗначений"));       
    Иначе
        ТаблицаАналогов = Врем.Получить();
    КонецЕсли;           

работаю с нею, добавляю данные, изменяю...
а в конце, записываю эту таблу обратно в этот же регистр:

Врем = Новый ХранилищеЗначения(ТаблицаАналогов);
    Запись = РегистрыСведений.СохраненныеНастройки.СоздатьМенеджерЗаписи();
    Запись.ИмяОбъекта = "Аналоги";
    Запись.НаименованиеНастройки = "СписокАналогов";
    Запись.СохраненнаяНастройка = Врем;
    Запись.Записать();

В итоге, объект не добавляется, конфигурация не изменяется.