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