You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// Подменяет Наборы-Запросы на Наборы-Объекты. //// Параметры:// СхемаИлиАдрес - СхемаКомпоновкиДанных, Строка - СКД или Адрес на временное хранилище с СКД// ВнешниеНаборыДанных - Структура, Неопределено - 1.Внешние наборы даннных. Если параметр не передан, то оборачиваются все Наборы-Запросы// Для каждого внешнего источника данных выполняется логика:// Если ключ внешнего источника совпадает с именем Набора-Запроса в СКД, то это набор оборачивается в Набор-Объект. // Если внешний источник = Неопределено, тогда в Набор-Объект всё будет скопировано из Набора-Запроса// Иначе же будут добавлены только те колонки, которые есть во внешнем источнике// + Если в Наборе-Запросе у поля не описан ТипЗначения, то он будет взят из соответствующей колонки внешнего источника//// ДополнительныеПараметры - Структура - содержит доп. параметры процедуры.//// ДополнительныеПараметры// {ИмяКлюча} { Тип.Вид:ПоУмолчанию } {Функциональное описание}// - ПодставлятьНаборыДанныхПустышки - Булево:Истина - Нужно ли создавать дополнительные Наборы-пустышки с полями, которые есть в Наборе-Запросе, но не будут в Наборе-Объекте. // - ШаблонИмениПустышки - Строка:"&НаборДанныхИмя_Пустышка_"- Шаблон формирования набора-пустышки// - КорректироватьВыражениеПредставления - Булево:Истина - Если в Наборе-Запросе у поля не описано ВыражениеПредставления, то оно будет взято колонки из колонки ИмяТекущейКолонки + "Представление" (если таковая имеется)//// Возвращаемое значение:// СхемаКомпоновкиДанных - новая схема компоновки//ФункцияСхемаКомпоновкиСОбъектамиВместоЗапросов(СхемаИлиАдрес,ВнешниеНаборыДанных=Неопределено,ДополнительныеПараметры=Неопределено) ЭкспортИмяТекущегоМетода="СхемаКомпоновкиСОбъектамиВместоЗапросов";
ДополнитьИзШаблона(ДополнительныеПараметры, ИмяТекущегоМетода);СхемаКомпоновкиДанных=?(ЭтоАдресВременногоХранилища(СхемаИлиАдрес),ПолучитьИзВременногоХранилища(СхемаИлиАдрес), СхемаИлиАдрес);НоваяСхемаКомпоновкиДанных= КопияЗначения(СхемаКомпоновкиДанных);Для Каждого НаборДанных Из СхемаКомпоновкиДанных.НаборыДанных ЦиклВнешнийНаборДанных=Неопределено;ЕслиТипЗнч(НаборДанных) =Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")
И (ВнешниеНаборыДанных =НеопределеноИЛИ ВнешниеНаборыДанных.Свойство(НаборДанных.Имя, ВнешнийНаборДанных)) ТогдаНовыйНаборДанных= НоваяСхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
НовыйНаборДанных.ИмяОбъекта = НаборДанных.Имя;
НовыйНаборДанных.ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Получить(0).Имя;Если ДополнительныеПараметры.ПодставлятьНаборыДанныхПустышки ТогдаНовыйНаборДанных_Пустышка=Неопределено;КонецЕсли;Для Каждого ОписаниеПоля Из НаборДанных.Поля ЦиклДобавлятьПоле=Истина;Если ВнешнийНаборДанных <>НеопределеноТогдаКолонкаИзРезультата= ВнешнийНаборДанных.Колонки.Найти(ОписаниеПоля.Поле);Если КолонкаИзРезультата =НеопределеноТогдаДобавлятьПоле=Ложь;КонецЕсли;КонецЕсли;Если ДобавлятьПоле ТогдаНовоеПоле= НовыйНаборДанных.Поля.Добавить(ТипЗнч(ОписаниеПоля));ЗаполнитьЗначенияСвойств(НовоеПоле, ОписаниеПоля);Если ВнешнийНаборДанных <>НеопределеноТогдаЕсли НовоеПоле.ТипЗначения.Типы().Количество() =0Тогда
НовоеПоле.ТипЗначения = КолонкаИзРезультата.ТипЗначения;КонецЕсли;Если ДополнительныеПараметры.КорректироватьВыражениеПредставления ТогдаИмяПоляПредставления= ОписаниеПоля.Поле +"Представление";ЕслиПустаяСтрока(ОписаниеПоля.ВыражениеПредставления)
И ВнешнийНаборДанных.Колонки.Найти(ИмяПоляПредставления) <>НеопределеноТогда
НовоеПоле.ВыражениеПредставления = ИмяПоляПредставления;Если НаборДанных.Поля.Найти(ИмяПоляПредставления) =НеопределеноТогдаНовоеПолеПредставления= НовыйНаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
НовоеПолеПредставления.Поле = ИмяПоляПредставления;
НовоеПолеПредставления.ПутьКДанным = ИмяПоляПредставления;
НовоеПолеПредставления.ТипЗначения =Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки("255"));КонецЕсли;КонецЕсли;КонецЕсли;КонецЕсли;ИначеЕсли ДополнительныеПараметры.ПодставлятьНаборыДанныхПустышки ТогдаЕсли НовыйНаборДанных_Пустышка =НеопределеноТогдаНовыйНаборДанных_Пустышка= НоваяСхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
НовыйНаборДанных_Пустышка.ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Получить(0).Имя;
НовыйНаборДанных_Пустышка.Имя =СтрЗаменить(ДополнительныеПараметры.ШаблонИмениПустышки,"&НаборДанныхИмя", НаборДанных.Имя);
НовыйНаборДанных_Пустышка.ИмяОбъекта = НовыйНаборДанных_Пустышка.Имя;ПустаяТаблица= ПустаяТаблицаПоТекстуЗапроса(НаборДанных.Запрос);
ВнешниеНаборыДанных.Вставить(НаборДанных.Имя +"_Пустышка_", ПустаяТаблица);КонецЕсли;КолонкаИзПустойТаблицы= ПустаяТаблица.Колонки.Найти(ОписаниеПоля.Поле);Если КолонкаИзПустойТаблицы =НеопределеноТогда//Колонка не найденаКолонкаИзПустойТаблицы= ПустаяТаблица.Колонки.Добавить(ОписаниеПоля.Поле,Новый ОписаниеТипов("Неопределено"));КонецЕсли;НовоеПолеПустышки= НовыйНаборДанных_Пустышка.Поля.Добавить(ТипЗнч(ОписаниеПоля));ЗаполнитьЗначенияСвойств(НовоеПолеПустышки, ОписаниеПоля);
НовоеПолеПустышки.ОграничениеИспользования.Поле =Истина;
НовоеПолеПустышки.ОграничениеИспользования.Порядок =Истина;
НовоеПолеПустышки.ОграничениеИспользования.Группировка =Истина;//НовоеПолеПустышки.ОграничениеИспользования.Условие = Истина;ЕслиТипЗнч(НовоеПолеПустышки) =Тип("ПолеНабораДанныхСхемыКомпоновкиДанных") Тогда
НовоеПолеПустышки.ОграничениеИспользованияРеквизитов.Поле =Истина;
НовоеПолеПустышки.ОграничениеИспользованияРеквизитов.Порядок =Истина;
НовоеПолеПустышки.ОграничениеИспользованияРеквизитов.Группировка =Истина;//НовоеПолеПустышки.ОграничениеИспользованияРеквизитов.Условие = Истина;КонецЕсли;Если НовоеПолеПустышки.ТипЗначения.Типы().Количество() =0Тогда
НовоеПолеПустышки.ТипЗначения = КолонкаИзПустойТаблицы.ТипЗначения;КонецЕсли;КонецЕсли;КонецЦикла;
НоваяСхемаКомпоновкиДанных.НаборыДанных.Удалить(НоваяСхемаКомпоновкиДанных.НаборыДанных.Найти(НаборДанных.Имя));
НовыйНаборДанных.Имя = НовыйНаборДанных.ИмяОбъекта;Если ДополнительныеПараметры.ПодставлятьНаборыДанныхПустышки И НовыйНаборДанных_Пустышка <>НеопределеноТогда
НовыйНаборДанных_Пустышка.Имя = НовыйНаборДанных_Пустышка.ИмяОбъекта;КонецЕсли;КонецЕсли;КонецЦикла;Возврат НоваяСхемаКомпоновкиДанных;КонецФункции
The text was updated successfully, but these errors were encountered:
The text was updated successfully, but these errors were encountered: