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