Тип: ДоступныеПараметрыКомпоновкиДанных. Содержит набор доступных параметров. Определяет состав оформления компоновки данных.
Полное описание, параметры и ограничения
ОформлениеДиаграммыОбластиКомпоновкиДанных.ДоступныеПараметры (DataCompositionAreaTemplateChartAppearance.AvailableParameters)
ОформлениеДиаграммыОбластиКомпоновкиДанных (DataCompositionAreaTemplateChartAppearance)
ДоступныеПараметры (AvailableParameters)
Доступен, начиная с версии 8.1.
Использование:
Только чтение.
Описание:
Тип: ДоступныеПараметрыКомпоновкиДанных.
Содержит набор доступных параметров. Определяет состав оформления компоновки данных.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Изменить фон и включить таблицу данных собственной диаграммы СКД
Компоновщик создаёт макет диаграммы. Меняем только его оформление, затем заново исполняем макет и сравниваем с исходным отчётом.
Где и как запускать
Полный клиентский общий модуль УчебныеОбласти85 обычного приложения. Только толстый клиент; Пульт отдельным модулем ниже. Не выполнялся.
Подготовка
Создайте НОВУЮ отдельную файловую учебную базу платформы 8.5.1.1343, имя конфигурации УчебныеОбластиСКД85, совместимость НеИспользовать, обычное приложение и толстый клиент. Не рабочая база. Здесь код и UI не выполнялись: runtimeVerifiedScenarios=0.
Общий модуль УчебныеОбласти85: неглобальный, Клиент (обычное приложение)=Да, Сервер=Нет, остальные клиентские флаги=Нет, Привилегированный=Нет. Вставьте полный модуль одного урока, включая функции. Не вставляйте его внутрь другой процедуры.
Создайте собственную обработку УчебныеОбласти85 с обычной основной формой Пульт. Кнопка Выполнить, действие ВыполнитьНажатие. Отдельный полный модуль формы дан ниже; назначьте действие кнопки и проверьте F7 перед будущим запуском.
Для диаграммы схема, настройки, макет и расшифровки создаются в памяти. Local-запрос содержит ровно Север/Книга 3 и 750, Север/Ручка 1 и 50, Юг/Книга 2 и 500. Контроль: 3 строки, 6 единиц, сумма 1300. Справочников, регистров и внешних наборов нет.
Серии диаграммы группируются по Магазин, точки по Наименование, выбран ресурс Сумма. Код берёт реально созданные объекты из Макет.Макеты. Если нужного типа нет, выдаёт ошибку: конструктор для него не придумывается.
Для урока строки печати источник другой: собственный МакетОбластиКомпоновкиДанных со строкой и ячейкой, текстом Книга и числом 750. Урок управляет полями этой ячейки и вручную выводит один собственный ЭлементРезультатаКомпоновкиДанных.
Окна сравнения открываются без имени файла. Не выбирайте печать/сохранение. Новые макеты не берутся из глобальной библиотеки и не меняют общие/пользовательские настройки оформления. Закройте только свои учебные окна вручную.
Поставьте точки останова перед выводом: изучите различия типов макетов и оформление. Сверка типов, параметров и арифметики не доказывает визуальный результат. Каждый урок запускайте отдельно и заново; 1С здесь не запускалась.
Процедура ВыполнитьПример() Экспорт
ПроверитьСвойКонтекст();
Опыт = СоздатьСвойОпыт();
Исходный = СформироватьСвойДокумент(Опыт);
Макеты = НайтиСвоиМакеты(Опыт.Макет, Тип("МакетДиаграммыОбластиКомпоновкиДанных"));
Для Каждого МакетДиаграммы Из Макеты Цикл
Оформление = МакетДиаграммы.Оформление;
Если ТипЗнч(Оформление) <> Тип("ОформлениеДиаграммыОбластиКомпоновкиДанных") Тогда
ВызватьИсключение "Нужно оформление собственного макета диаграммы";
КонецЕсли;
ПрименитьСвойПараметр(Оформление, "ТипДиаграммы.ЦветФона", Новый Цвет(240, 248, 255));
ПрименитьСвойПараметр(Оформление, "ТипДиаграммы.ОтображатьТаблицуДанных", Истина);
КонецЦикла;
Измененный = СформироватьСвойДокумент(Опыт);
Исходный.Показать("Своя диаграмма до оформления", "", Ложь);
Измененный.Показать("Своя диаграмма: фон и таблица данных", "", Истина);
КонецПроцедуры
Процедура ПроверитьСвойКонтекст()
Если Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать Тогда
ВызватьИсключение "Нужен собственный стенд УчебныеОбластиСКД85 платформы 8.5.1.1343";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Учебный вывод не должен выполняться внутри чужой транзакции";
КонецЕсли;
КонецПроцедуры
Функция СоздатьСвойОпыт()
Схема = Новый СхемаКомпоновкиДанных;
Источник = Схема.ИсточникиДанных.Добавить();
Источник.Имя = "УчебныеПродажи";
Источник.ТипИсточникаДанных = "Local";
Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
Набор.Имя = "СвоиТриСтроки";
Набор.ИсточникДанных = Источник.Имя;
Набор.АвтоЗаполнениеДоступныхПолей = Истина;
Набор.Запрос = "ВЫБРАТЬ
| ""Север"" КАК Магазин,
| ""Книга"" КАК Наименование,
| 3 КАК Количество,
| 750 КАК Сумма
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Север"", ""Ручка"", 1, 50
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Юг"", ""Книга"", 2, 500";
Для Каждого ИмяРесурса Из СтрРазделить("Сумма,Количество", ",") Цикл
Ресурс = Схема.ПоляИтога.Добавить();
Ресурс.ПутьКДанным = ИмяРесурса;
Ресурс.Выражение = "Сумма(" + ИмяРесурса + ")";
КонецЦикла;
Настройки = Схема.НастройкиПоУмолчанию;
Диаграмма = Настройки.Структура.Добавить(Тип("ДиаграммаКомпоновкиДанных"));
Диаграмма.Имя = "УчебныеПродажиПоМагазинам";
Диаграмма.Использование = Истина;
Выбранное = Диаграмма.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
Выбранное.Поле = Новый ПолеКомпоновкиДанных("Сумма");
Выбранное.Использование = Истина;
Серия = Диаграмма.Серии.Добавить();
Серия.Имя = "Магазины";
Серия.Использование = Истина;
ПолеСерии = Серия.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеСерии.Поле = Новый ПолеКомпоновкиДанных("Магазин");
ПолеСерии.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы;
ПолеСерии.Использование = Истина;
Точка = Диаграмма.Точки.Добавить();
Точка.Имя = "Товары";
Точка.Использование = Истина;
ПолеТочки = Точка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеТочки.Поле = Новый ПолеКомпоновкиДанных("Наименование");
ПолеТочки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы;
ПолеТочки.Использование = Истина;
Диаграмма.ПараметрыВывода.УстановитьЗначениеПараметра("ТипДиаграммы", ТипДиаграммы.Гистограмма);
ЗапросКонтроля = Новый Запрос;
ЗапросКонтроля.Текст = Набор.Запрос;
Данные = ЗапросКонтроля.Выполнить().Выгрузить();
Если Данные.Количество() <> 3 Или Данные.Итог("Количество") <> 6 Или Данные.Итог("Сумма") <> 1300 Тогда
ВызватьИсключение "Не совпали собственные три продажи";
КонецЕсли;
Расшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
Компоновщик = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = Компоновщик.Выполнить(Схема, Настройки, Расшифровки);
Если ТипЗнч(Макет) <> Тип("МакетКомпоновкиДанных") Тогда
ВызватьИсключение "Свой компоновщик не вернул макет";
КонецЕсли;
Возврат Новый Структура("Макет,Расшифровки", Макет, Расшифровки);
КонецФункции
Функция НайтиСвоиМакеты(Макет, ТребуемыйТип)
Найденные = Новый Массив;
Для Каждого Описание Из Макет.Макеты Цикл
Если ТипЗнч(Описание.Макет) = ТребуемыйТип Тогда
Найденные.Добавить(Описание.Макет);
КонецЕсли;
КонецЦикла;
Если Найденные.Количество() = 0 Тогда
ВызватьИсключение "Компоновщик не создал нужный тип макета: " + Строка(ТребуемыйТип);
КонецЕсли;
Возврат Найденные;
КонецФункции
Функция СформироватьСвойДокумент(Опыт)
Процессор = Новый ПроцессорКомпоновкиДанных;
Процессор.Инициализировать(Опыт.Макет, , Опыт.Расшифровки);
Документ = Новый ТабличныйДокумент;
Вывод = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
Вывод.УстановитьДокумент(Документ);
Итог = Вывод.Вывести(Процессор, Ложь);
Если ТипЗнч(Итог) <> Тип("ТабличныйДокумент") Или Итог.ВысотаТаблицы = 0 Тогда
ВызватьИсключение "Свой результат пуст или не является табличным документом";
КонецЕсли;
Возврат Итог;
КонецФункции
Процедура ПрименитьСвойПараметр(Оформление, Имя, Значение)
Параметр = Новый ПараметрКомпоновкиДанных(Имя);
Доступный = Оформление.ДоступныеПараметры.НайтиПараметр(Параметр);
Если Доступный = Неопределено Тогда
ВызватьИсключение "У этого типа оформления нет параметра " + Имя;
КонецЕсли;
Если ТипЗнч(Оформление) = Тип("ОформлениеГруппировкиДиаграммыОбластиКомпоновкиДанных") Тогда
КлючПоиска = Новый ПолеКомпоновкиДанных(Имя);
Иначе
КлючПоиска = Параметр;
КонецЕсли;
Оформление.УстановитьЗначениеПараметра(Параметр, Значение);
Установленный = Оформление.НайтиЗначениеПараметра(КлючПоиска);
Если Установленный = Неопределено Тогда
ВызватьИсключение "Установленный параметр не найден: " + Имя;
КонецЕсли;
Если Не Установленный.Использование Или Установленный.Значение <> Значение Или Оформление.Элементы.Количество() = 0 Тогда
ВызватьИсключение "Не подтверждены значение и включение параметра " + Имя;
КонецЕсли;
КонецПроцедурыУчебныеОбласти85.Пульт
УчебныеОбластиСКД85 → Обработки → УчебныеОбласти85 → Формы → Пульт → Модуль
Полный отдельный модуль своей обычной формы; не выполнялся.
Процедура ВыполнитьНажатие(Кнопка)
УчебныеОбласти85.ВыполнитьПример();
КонецПроцедурыРазбор по шагам
Проверка контекста отказывает для другой версии, имени конфигурации или активной чужой транзакции.
Объекты оформления не создаются через недокументированный Новый. У readonly-свойства получаем изменяемый контейнер; само свойство не переназначаем.
ДоступныеПараметры содержит описание допустимых параметров, Элементы — реальные значения. НайтиПараметр и НайтиЗначениеПараметра решают разные задачи.
УстановитьЗначениеПараметра включает Использование. После присваивания проверяем наличие, Значение и этот флаг; неизвестное имя не подменяется фиктивным свойством.
Local-запрос проверяется независимо: 3 строки, 6 единиц, 1300. В настройках диаграммы Магазин — серии, Наименование — точки, Сумма — ресурс.
Из Макет.Макеты отбираются только МакетДиаграммыОбластиКомпоновкиДанных. Не предполагаем индекс или количество объектов определённого типа.
В его Оформление задаём ТипДиаграммы.ЦветФона и ТипДиаграммы.ОтображатьТаблицуДанных. Это имена параметров оформления макета, не свойства исходного объекта Диаграмма.
Каждый вывод получает новый процессор и документ. Исходный документ уже сформирован до изменения; макет и источник после изменения исполняются вновь.
Как проверить результат
Будущий ручной тест: F7 и запуск только в своём новом стенде. Если нужный тип/параметр не найден, зафиксируйте точную ошибку; успешное сообщение подставлять нельзя.
Сравнение выполняется в отдельных собственных окнах без имени файла. Визуальный результат и размеры не подтверждены статическими тестами.
В будущем сравнении исходная гистограмма и новая таблица данных должны отражать Север/Книга 750, Север/Ручка 50, Юг/Книга 500. Источник остаётся суммой 1300.
В отладчике после изменения найдите два параметра: фон Цвет(240,248,255) и флаг Истина, оба Использование=Истина. Общее оформление пользователя не меняется.
Ожидаемый результат
Подготовлен полный собственный учебный опыт с выводом в память и ручным сравнением. runtimeVerifiedScenarios=0.
На что обратить внимание
Оформление результата компоновки отличается от настроек СКД и от глобальной библиотеки оформления. Здесь изменяется только собственный новый макет.
Результат вывода не равен исходным строкам запроса: высота табличного документа не должна сравниваться с количеством продаж.
Нельзя удалять/добавлять значения параметров в коллекцию, связанную с ДоступныеПараметры. Здесь значения меняются штатным методом и существующим флагом; глубокой копии всего оформления не обещаем.
Не задаём ТипДиаграммы.КлючСохраненияЦветов: это могло бы задействовать системное хранилище. Здесь сравнение полностью в памяти.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.