RDT1C/DataProcessors/ирРедакторХранилищНастроек/Ext/ObjectModule.bsl
Администратор 86d62034f2 Добавлен инструмент "Сравнение таблиц"
Загрузка табличных данных
        +Редактирование и хранение алгоритмов переделано на новый механизм с поддержкой внутренних параметров
        +При заполнении колонок таблицы значений по табличному документу и конвертации значений теперь учитываются расшифровки ячеек
    Таблица значений
        +Команда "Получить"/"из табличного документа" теперь открывает инструмент "Загрузка табличных данных"
        +Добавлена команда "Передать"/"в сравнитель"
    Табличный документ
        +Добавлена команда "Загрузить в таблицу значений"
    Общее
        *Размеры логотипа подсистемы изменены на 24x24
        *Исправлена запуск приложения из управляемой формы с флажком "Подключиться к отладчику", который мог некорректно находить текущие параметры http отладки
    Конструктор запроса
        +Для таблицы выбранных полей включено множественное выделение строк
        *Исправлена свежая проблема не заполнения параметров по тексту запроса
    Консоль запросов
        *При активизации строки дерева запроса теперь выполняется поиск элемента пакетного результата только при включенной панели пакета
        *Исправлены свежие проблемы накопления и не заполнения параметров при работе с конструктором запросов ИР
        +Для таблицы параметров добавлена команда "Заменить на ЗНАЧЕНИЕ()"
    Портативный
        *Устранено дублирование баз с квадратными скобками в списке пользователя при сохранении в окне "Список инструментов и общие настройки"
    Подбор и обработка объектов
        *Исправлена ошибка обработки следующего объекта после отображения модального окна при обработке текущего объекта
2017-07-24 01:00:15 +03:00

430 lines
34 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//ирПортативный Перем ирПортативный Экспорт;
//ирПортативный Перем ирОбщий Экспорт;
//ирПортативный Перем ирСервер Экспорт;
//ирПортативный Перем ирКэш Экспорт;
//ирПортативный Перем ирПривилегированный Экспорт;
Процедура ЗаполнитьСписокПользователей() Экспорт
ПользователиИБ.Очистить();
СписокПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого ТекПользователь Из СписокПользователей Цикл
СтрокаПользователя = ПользователиИБ.Добавить();
СтрокаПользователя.ИмяПользователя = ТекПользователь.Имя;
КонецЦикла;
ПользователиИБ.Сортировать("ИмяПользователя");
КонецПроцедуры
//////////////
//Талица форм
Процедура ДобавитьФормуВТаблицу(ПолноеИмяОбъекта, ПредставлениеОбъекта, ТипОбъекта, ВидОбъекта, КартинкаОбъекта)
СтрокаФ = ФормыИБ.Добавить();
СтрокаФ.ПолноеИмяОбъекта = ПолноеИмяОбъекта;
СтрокаФ.ИмяОбъекта = ирОбщий.ПолучитьПоследнийФрагментЛкс(ПолноеИмяОбъекта); // Неоптимально
СтрокаФ.ТипОбъекта = ТипОбъекта;
СтрокаФ.ВидОбъекта = ВидОбъекта;
СтрокаФ.ПредставлениеОбъекта = ПредставлениеОбъекта;
КонецПроцедуры
Функция КартинкаПоТипуОбъекта(ТипОбъекта) Экспорт
Если ТипОбъекта = "Общие" Тогда
Возврат БиблиотекаКартинок.Форма;
//ИначеЕсли ТипОбъекта = "Справочник" Тогда
// Возврат БиблиотекаКартинок.Справочник;
//ИначеЕсли ТипОбъекта = "КритерийОтбора" Тогда
// Возврат БиблиотекаКартинок.КритерийОтбора;
//ИначеЕсли ТипОбъекта = "ХранилищеНастроек" Тогда
// Возврат БиблиотекаКартинок.ХранилищеНастроек;
//ИначеЕсли ТипОбъекта = "Документ" Тогда
// Возврат БиблиотекаКартинок.Документ;
//ИначеЕсли ТипОбъекта = "ЖурналДокументов" Тогда
// Возврат БиблиотекаКартинок.ЖурналДокументов;
//ИначеЕсли ТипОбъекта = "Перечисление" Тогда
// Возврат БиблиотекаКартинок.Перечисление;
//ИначеЕсли ТипОбъекта = "Отчет" Тогда
// Возврат БиблиотекаКартинок.Отчет;
//ИначеЕсли ТипОбъекта = "Обработка" Тогда
// Возврат БиблиотекаКартинок.Обработка;
//ИначеЕсли ТипОбъекта = "РегистрСведений" Тогда
// Возврат БиблиотекаКартинок.РегистрСведений;
//ИначеЕсли ТипОбъекта = "РегистрНакопления" Тогда
// Возврат БиблиотекаКартинок.РегистрНакопления;
//ИначеЕсли ТипОбъекта = "ПланВидовХарактеристик" Тогда
// Возврат БиблиотекаКартинок.ПланВидовХарактеристик;
//ИначеЕсли ТипОбъекта = "ПланСчетов" Тогда
// Возврат БиблиотекаКартинок.ПланСчетов;
//ИначеЕсли ТипОбъекта = "РегистрБухгалтерии" Тогда
// Возврат БиблиотекаКартинок.РегистрБухгалтерии;
//ИначеЕсли ТипОбъекта = "ПланВидовРасчета" Тогда
// Возврат БиблиотекаКартинок.ПланВидовРасчета;
//ИначеЕсли ТипОбъекта = "РегистрРасчета" Тогда
// Возврат БиблиотекаКартинок.РегистрРасчета;
//ИначеЕсли ТипОбъекта = "БизнесПроцесс" Тогда
// Возврат БиблиотекаКартинок.БизнесПроцесс;
//ИначеЕсли ТипОбъекта = "Задача" Тогда
// Возврат БиблиотекаКартинок.Задача;
Иначе
Попытка
Возврат БиблиотекаКартинок[ТипОбъекта];
Исключение
Возврат Новый Картинка;
КонецПопытки;
КонецЕсли;
КонецФункции // ПолучитьКартинкуПоВидуОбъекта()
Процедура ПолучитьСписокФорм() Экспорт
ФормыИБ.Очистить();
Для Каждого Форма Из Метаданные.ОбщиеФормы Цикл
ДобавитьФормуВТаблицу("ОбщаяФорма." + Форма.Имя, "Общая форма." + Форма.Синоним, "Общие", "ОбщиеФормы", КартинкаПоТипуОбъекта("Общие"));
КонецЦикла;
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("ФормаОбъекта", "Форма объекта");
ИменаСтандартныхФорм.Добавить("ФормаГруппы", "Форма группы");
ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
ИменаСтандартныхФорм.Добавить("ФормаДляВыбораГруппы", "Форма выбора группы");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.Справочники, "Справочник", "Справочник", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("Форма", "Форма");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.КритерииОтбора, "КритерийОтбора", "Критерий отбора", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("ФормаСохранения", "Форма сохранения");
ИменаСтандартныхФорм.Добавить("ФормаЗагрузки", "Форма выбора");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.ХранилищаНастроек, "ХранилищеНастроек", "Хранилище настроек", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("ФормаОбъекта", "Форма объекта");
ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.Документы, "Документ", "Документ", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("Форма", "Форма");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.ЖурналыДокументов, "ЖурналДокументов", "Журнал документов", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.Перечисления, "Перечисление", "Перечисление", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("Форма", "Форма");
ИменаСтандартныхФорм.Добавить("ФормаНастроек", "Форма настроек");
ИменаСтандартныхФорм.Добавить("ФормаВарианта", "Форма варианта");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.Отчеты, "Отчет", "Отчет", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("Форма", "Форма");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.Обработки, "Обработка", "Обработка", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("ФормаЗаписи", "Форма записи");
ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.РегистрыСведений, "РегистрСведений", "Регистр сведений", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.РегистрыНакопления, "РегистрНакопления", "Регистр накопления", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("ФормаОбъекта", "Форма объекта");
ИменаСтандартныхФорм.Добавить("ФормаГруппы", "Форма группы");
ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
ИменаСтандартныхФорм.Добавить("ФормаДляВыбораГруппы", "Форма выбора группы");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.ПланыВидовХарактеристик, "ПланВидовХарактеристик", "План видов характеристик", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("ФормаОбъекта", "Форма объекта");
ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.ПланыСчетов, "ПланСчетов", "План счетов", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.РегистрыБухгалтерии, "РегистрБухгалтерии", "Регистр бухгалтерии", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("ФормаОбъекта", "Форма объекта");
ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.ПланыВидовРасчета, "ПланВидовРасчета", "План видов расчета", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.РегистрыРасчета, "РегистрРасчета", "Регистр расчета", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("ФормаОбъекта", "Форма объекта");
ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.БизнесПроцессы, "БизнесПроцесс", "Бизнес процесс", ИменаСтандартныхФорм);
ИменаСтандартныхФорм = Новый СписокЗначений;
ИменаСтандартныхФорм.Добавить("ФормаОбъекта", "Форма объекта");
ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
ПолучитьСписокФормОбъектаМетаданных(Метаданные.Задачи, "Задача", "Задача", ИменаСтандартныхФорм);
КонецПроцедуры
Процедура ПолучитьСписокФормОбъектаМетаданных(СписокОбъектовМетаданных, ИмяОбъектаМетаданных, ПредставлениеОбъектаМетаданных, ИменаСтандартныхФорм)
Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(СписокОбъектовМетаданных.Количество(), ПредставлениеОбъектаМетаданных + ".Формы");
Для Каждого Объект Из СписокОбъектовМетаданных Цикл
ирОбщий.ОбработатьИндикаторЛкс(Индикатор);
Префикс = ИмяОбъектаМетаданных + "." + Объект.Имя;
ПрефиксПредставления = ПредставлениеОбъектаМетаданных + "." + Объект.Синоним;
ПолучитьСписокФормИзСпискаМетаданныхФорм(Префикс, ПрефиксПредставления, Объект.Формы, ИмяОбъектаМетаданных, Объект.Имя);
Для Каждого ИмяСтандартнойФормы Из ИменаСтандартныхФорм Цикл
ДобавитьСтандартнуюФорму(Префикс, ПрефиксПредставления, Объект, ИмяСтандартнойФормы.Значение, ИмяСтандартнойФормы.Представление, ИмяОбъектаМетаданных, Объект.Имя);
КонецЦикла;
КонецЦикла;
ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
КонецПроцедуры
Процедура ПолучитьСписокФормИзСпискаМетаданныхФорм(Префикс, ПрефиксПредставления, МетаданныеФорм, ИмяОбъектаМетаданных, ИмяВидаОбъекта)
Для Каждого Форма Из МетаданныеФорм Цикл
ДобавитьФормуВТаблицу(Префикс + ".Форма." + Форма.Имя, ПрефиксПредставления + "." + Форма.Синоним, ИмяОбъектаМетаданных, ИмяВидаОбъекта, КартинкаПоТипуОбъекта(ИмяОбъектаМетаданных));
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьСтандартнуюФорму(Префикс, ПрефиксПредставления, ОбъектМетаданных, ИмяОбъекта, ПредставлениеОбъекта, ИмяОбъектаМетаданных, ИмяВидаОбъекта)
Если ОбъектМетаданных["Основная" + ИмяОбъекта] = Неопределено Тогда
ДобавитьФормуВТаблицу(Префикс + "." + ИмяОбъекта, ПрефиксПредставления + "." + ПредставлениеОбъекта, ИмяОбъектаМетаданных, ИмяВидаОбъекта, КартинкаПоТипуОбъекта(ИмяОбъектаМетаданных));
КонецЕсли;
КонецПроцедуры
//////////////
Функция ПолучитьМенеджерХранилищаПоИмени(ИмяРаздела)
Если ИмяРаздела = "ХранилищеСистемныхНастроек" Тогда
Возврат ХранилищеСистемныхНастроек;
ИначеЕсли ИмяРаздела = "ХранилищеОбщихНастроек" Тогда
Возврат ХранилищеОбщихНастроек;
ИначеЕсли ИмяРаздела = "ХранилищеНастроекДанныхФорм" Тогда
Возврат ХранилищеНастроекДанныхФорм;
ИначеЕсли ИмяРаздела = "ХранилищеВариантовОтчетов" Тогда
Возврат ХранилищеВариантовОтчетов;
ИначеЕсли ИмяРаздела = "ХранилищеПользовательскихНастроекОтчетов" Тогда
Возврат ХранилищеПользовательскихНастроекОтчетов;
Иначе
Возврат ХранилищаНастроек[ИмяРаздела];
КонецЕсли;
КонецФункции // ()
Процедура ПолучитьОписаниеНастроек(ПользователиНазначения, ФормыНазначения, ИмяРаздела) Экспорт
ОписаниеНастроек.Очистить();
ПредставлениеОтбораЗагрузки = "Пользователи";
Если ПользователиНазначения.Количество() > 0 Тогда
ОтборЗагрузкиПользователи = ирОбщий.РасширенноеПредставлениеЗначенияЛкс(ПользователиНазначения);
ИндикаторПользователи = ирОбщий.ПолучитьИндикаторПроцессаЛкс(ПользователиНазначения.Количество(), "Пользователи");
Для каждого ТекПользователь Из ПользователиНазначения Цикл
ирОбщий.ОбработатьИндикаторЛкс(ИндикаторПользователи);
Отбор = Новый Структура("Пользователь", ТекПользователь);
ЗагрузитьНастройкиИзХранилища(Отбор, ФормыНазначения, ИмяРаздела);
КонецЦикла;
ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
Иначе
ОтборЗагрузкиПользователи = "Все";
ЗагрузитьНастройкиИзХранилища(, ФормыНазначения, ИмяРаздела);
КонецЕсли;
КонецПроцедуры
Функция ЗагрузитьНастройкиИзХранилища(Отбор, ФормыНазначения, ИмяРаздела)
БезФильтраПоОбъектам = ФормыНазначения.Количество() = 0;
ДобавлятьПрочие = Ложь
Или БезФильтраПоОбъектам
Или ФормыНазначения.Найти("Прочие") <> Неопределено;
МенеджерХранилища = ПолучитьМенеджерХранилищаПоИмени(ИмяРаздела);
Выборка = МенеджерХранилища.Выбрать(Отбор);
Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(, "Настройки");
Пока 1=1 Цикл
Попытка
ЭлементСчитан = Выборка.Следующий();
Исключение
ОписаниеОшибки = ОписаниеОшибки();
Сообщить("Ошибка чтения настройки");
Продолжить;
КонецПопытки;
Если Не ЭлементСчитан Тогда
Прервать;
КонецЕсли;
ирОбщий.ОбработатьИндикаторЛкс(Индикатор);
текОбъект = Выборка.КлючОбъекта;
текКлюч = "";
ПозРазделителя = Найти(Выборка.КлючОбъекта, "/");
Если ПозРазделителя > 0 Тогда
текОбъект = Лев(Выборка.КлючОбъекта, ПозРазделителя-1);
текКлюч = Сред(Выборка.КлючОбъекта, ПозРазделителя+1);
КонецЕсли;
СтрокаФормы = ФормыИБ.Найти(текОбъект, "ПолноеИмяОбъекта");
Если СтрокаФормы = Неопределено Тогда
Если ДобавлятьПрочие Тогда
НовоеОписание = ОписаниеНастроек.Добавить();
НовоеОписание.ИмяОбъекта = Выборка.КлючОбъекта;
НовоеОписание.ПредставлениеОбъекта = Выборка.КлючОбъекта;
НовоеОписание.Описание = Выборка.Представление;
НовоеОписание.ИмяПользователя = Выборка.Пользователь;
НовоеОписание.ТипНастройки = ТипЗнч(Выборка.Настройки);
НовоеОписание.Настройка = ирОбщий.РасширенноеПредставлениеЗначенияЛкс(Выборка.Настройки);
НовоеОписание.КлючНастроек = Выборка.КлючНастроек;
КонецЕсли;
Иначе
Если Ложь
Или БезФильтраПоОбъектам
Или ФормыНазначения.Найти(текОбъект) <> Неопределено
Тогда
НовоеОписание = ОписаниеНастроек.Добавить();
//НовоеОписание.ИмяОбъекта = СтрокаФормы.ИмяОбъекта;
НовоеОписание.ИмяОбъекта = текОбъект;
НовоеОписание.ПредставлениеОбъекта = СтрокаФормы.ПредставлениеОбъекта;
НовоеОписание.Описание = Выборка.Представление;
НовоеОписание.ИмяПользователя = Выборка.Пользователь;
НовоеОписание.ТипНастройки = ТипЗнч(Выборка.Настройки);
НовоеОписание.Настройка = ирОбщий.РасширенноеПредставлениеЗначенияЛкс(Выборка.Настройки);
НовоеОписание.КлючНастроек = Выборка.КлючНастроек;
НовоеОписание.Ключ = текКлюч;
Иначе
//Сообщить(""+Выборка.КлючОбъекта+"");
КонецЕсли;
КонецЕсли;
КонецЦикла;
ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
Возврат Неопределено;
КонецФункции
Процедура УдалитьНастройкиПользователей(ТабКУдалению, ИмяРаздела) Экспорт
МенеджерХранилища = ПолучитьМенеджерХранилищаПоИмени(ИмяРаздела);
Для каждого Строка Из ТабКУдалению Цикл
МенеджерХранилища.Удалить(Строка.КлючОбъекта, Строка.КлючНастроек, Строка.Пользователь);
КонецЦикла;
КонецПроцедуры
Процедура СкопироватьНастройкиПользователей(ТабОписаний, ПользователиНазначения, ИмяРаздела) Экспорт
МенеджерХранилища = ПолучитьМенеджерХранилищаПоИмени(ИмяРаздела);
Для Каждого Строка Из ТабОписаний Цикл
лОписаниеНастроек = Новый ОписаниеНастроек;
Настройка = МенеджерХранилища.Загрузить(Строка.КлючОбъекта, Строка.КлючНастроек, лОписаниеНастроек, Строка.Пользователь);
Если Настройка <> Неопределено Тогда
Для Каждого ПользовательПриемник Из ПользователиНазначения Цикл
МенеджерХранилища.Сохранить(Строка.КлючОбъекта, Строка.КлючНастроек, Настройка, лОписаниеНастроек, ПользовательПриемник);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#Если Клиент Тогда
Процедура ОткрытьЗначНастройки(ТабОписаний, ИмяРаздела, Исследовать = Ложь) Экспорт
МенеджерХранилища = ПолучитьМенеджерХранилищаПоИмени(ИмяРаздела);
Для Каждого СтрокаТаб Из ТабОписаний Цикл
текЗначениеНастройки = МенеджерХранилища.Загрузить(СтрокаТаб.КлючОбъекта, СтрокаТаб.КлючНастроек, , СтрокаТаб.Пользователь);
Если текЗначениеНастройки = Неопределено Тогда
//Предупреждение("Настройка не найдена");
Продолжить;
КонецЕсли;
Если Исследовать Тогда
ирОбщий.ИсследоватьЛкс(текЗначениеНастройки);
Иначе
ОткрытьЗнач(текЗначениеНастройки);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ОткрытьЗнач(текЗначениеНастройки) Экспорт
ТипЗначенияНастройки = ТипЗнч(текЗначениеНастройки);
Если ТипЗначенияНастройки = Тип("Строка") Тогда
ФормаПросмотраСтрок = ПолучитьФорму("СериализацияЗначения");
ФормаПросмотраСтрок.ЗначениеНастройки = текЗначениеНастройки;
ФормаПросмотраСтрок.НадписьТипНастройки = ТипЗначенияНастройки;
ФормаПросмотраСтрок.Открыть();
ИначеЕсли Ложь
Или ТипЗначенияНастройки = Тип("Структура")
Или ТипЗначенияНастройки = Тип("ФиксированнаяСтруктура")
Или ТипЗначенияНастройки = Тип("Массив")
Или ТипЗначенияНастройки = Тип("ФиксированныйМассив")
Или ТипЗначенияНастройки = Тип("Соответствие")
Или ТипЗначенияНастройки = Тип("СписокЗначений")
Или ТипЗначенияНастройки = Тип("ТаблицаЗначений")
Тогда
ирОбщий.ИсследоватьЛкс(текЗначениеНастройки,, Истина);
Иначе
ОткрытьАвто = Ложь;
XMLТип = XMLТипЗнч(ТипЗначенияНастройки);
Если Истина
И XMLТип <> Неопределено
И Найти(XMLТип.ИмяТипа, "Ref.") > 0
Тогда
ОткрытьЗначение(текЗначениеНастройки);
Иначе
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
ЗаписьXML.ЗаписатьНачалоЭлемента("details");
Попытка
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, текЗначениеНастройки, "item");
Исключение
ирОбщий.ИсследоватьЛкс(текЗначениеНастройки);
Возврат;
КонецПопытки;
ЗаписьXML.ЗаписатьКонецЭлемента();
XMLЗначНастройки = ЗаписьXML.Закрыть();
ФормаПросмотраСтрок = ПолучитьФорму("СериализацияЗначения");
ФормаПросмотраСтрок.XMLНастройки = XMLЗначНастройки;
ФормаПросмотраСтрок.ЗначениеНастройки = текЗначениеНастройки;
ФормаПросмотраСтрок.НадписьТипНастройки = ТипЗначенияНастройки;
ФормаПросмотраСтрок.Открыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецЕсли
//ирПортативный лФайл = Новый Файл(ИспользуемоеИмяФайла);
//ирПортативный ПолноеИмяФайлаБазовогоМодуля = Лев(лФайл.Путь, СтрДлина(лФайл.Путь) - СтрДлина("Модули\")) + "ирПортативный.epf";
//ирПортативный #Если Клиент Тогда
//ирПортативный Контейнер = Новый Структура();
//ирПортативный Оповестить("ирПолучитьБазовуюФорму", Контейнер);
//ирПортативный Если Не Контейнер.Свойство("ирПортативный", ирПортативный) Тогда
//ирПортативный ирПортативный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля);
//ирПортативный ирПортативный.Открыть();
//ирПортативный КонецЕсли;
//ирПортативный #Иначе
//ирПортативный ирПортативный = ВнешниеОбработки.Создать(ПолноеИмяФайлаБазовогоМодуля, Ложь); // Это будет второй экземпляр объекта
//ирПортативный #КонецЕсли
//ирПортативный ирОбщий = ирПортативный.ПолучитьОбщийМодульЛкс("ирОбщий");
//ирПортативный ирКэш = ирПортативный.ПолучитьОбщийМодульЛкс("ирКэш");
//ирПортативный ирСервер = ирПортативный.ПолучитьОбщийМодульЛкс("ирСервер");
//ирПортативный ирПривилегированный = ирПортативный.ПолучитьОбщийМодульЛкс("ирПривилегированный");