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