Настроить область построения, линии шкалы и ориентацию меток

Учебные задачи

Числовой формат шкалы и ориентация названий товаров меняют читаемость. Для неиерархических строк верхние уровни не добавляют новых товаров.

Где и как запускать

Полный модуль управляемой формы собственной учебной внешней обработки. Построение выполняется на сервере без контекста; показ — на клиенте. Вставляйте на уровне модуля.

Подготовка

  1. Создайте новую внешнюю обработку с управляемой основной формой в учебной базе. Каждый урок — отдельная копия модуля.

  2. На форме создайте команду УчебныйПример и перетащите её на форму как кнопку. В действии команды выберите процедуру УчебныйПример(Команда).

  3. Вставьте весь модуль из примера: УчебныйПример, ПостроитьУчебныйДокумент и УчебнаяТаблица. Серверный вызов возвращает собственный табличный документ клиенту; директивы не удаляйте.

  4. Никакие макеты, документы и справочники конфигурации не нужны. Всё построение — в памяти, без печати, записи файлов и отправки в сервисы.

  5. Показ и ручную проверку выполняйте в тонком клиенте Windows 8.5.1.1343. Каждый урок — отдельная копия формы с пустым модулем до вставки.

&НаКлиенте
Процедура УчебныйПример(Команда)
    ТабДок = ПостроитьУчебныйДокумент();

    ТабДок.Показать("Учебный документ — без печати и сохранения");
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПостроитьУчебныйДокумент()
    ТабДок = Новый ТабличныйДокумент;
    Источник = Новый ТаблицаЗначений;
    Источник.Колонки.Добавить("Товар", Новый ОписаниеТипов("Строка"));
    Источник.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
    Источник.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
    СтрокаТовара = Источник.Добавить();
    СтрокаТовара.Товар = "Книга";
    СтрокаТовара.Количество = 3;
    СтрокаТовара.Сумма = 750;
    СтрокаТовара = Источник.Добавить();
    СтрокаТовара.Товар = "Ручка";
    СтрокаТовара.Количество = 1;
    СтрокаТовара.Сумма = 50;
    Менеджер = Новый МенеджерВременныхТаблиц;
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Менеджер;
    Запрос.УстановитьПараметр("Источник", Источник);
    Запрос.Текст = "ВЫБРАТЬ Д.Товар, Д.Количество, Д.Сумма
    |ПОМЕСТИТЬ ВТУчебныеТовары ИЗ &Источник КАК Д;
    |ВЫБРАТЬ Д.Товар, Д.Количество, Д.Сумма
    |ИЗ ВТУчебныеТовары КАК Д
    |ИТОГИ СУММА(Количество), СУММА(Сумма) ПО Товар";
    Попытка
        Пакет = Запрос.ВыполнитьПакет();
        Результат = Пакет.Получить(1);
    Исключение
        Менеджер.Закрыть();
        ВызватьИсключение;
    КонецПопытки;
    Менеджер.Закрыть();
    Диаграмма = Новый СводнаяДиаграмма;
    Диаграмма.ТипСводнойДиаграммы = ТипСводнойДиаграммы.Гистограмма;
    Диаграмма.ИсточникДанных = Результат;
    Диаграмма.Точки.Добавить("Товар");
    Диаграмма.Ресурсы.Добавить("Количество");
    Диаграмма.Ресурсы.Добавить("Сумма");
    Диаграмма.ОбластьЗаголовка.Текст = "Учебные товары: количество и сумма — разные единицы";
    Диаграмма.Обновить();
    Область = Диаграмма.ОбластьПостроения;
    Область.Расположение = РасположениеОбластиПостроенияДиаграммы.Авто;
    Область.КоличествоВерхнихУровнейГоризонтальнойШкалы = 1;
    Область.ОриентацияМетокГоризонтальнойШкалы = ОриентацияМетокСводнойДиаграммы.ВсеУровниГоризонтально;
    Область.ФорматШкалыЗначений = "ЧДЦ=0; ЧГ=0";
    Область.ЛинииШкалы = Новый Линия(ТипЛинииДиаграммы.Точечная, 1);
    Область.ПрозрачныйФон = Ложь;
    Область.ЦветФона = Новый Цвет(255, 255, 255);
    Область.ЦветТекста = Новый Цвет(25, 45, 65);
    Область.ЦветШкалы = Новый Цвет(180, 190, 200);
    Область.Шрифт = Новый Шрифт("Arial", 10);
    Область.Рамка = Новый Рамка(ТипРамкиЭлементаУправления.Одинарная);
    Область.ЦветРамки = Новый Цвет(110, 130, 150);
    Сообщить(Область.Расположение = РасположениеОбластиПостроенияДиаграммы.Авто);
    Сообщить(Область.ОриентацияМетокГоризонтальнойШкалы = ОриентацияМетокСводнойДиаграммы.ВсеУровниГоризонтально);
    Сообщить(ТипЗнч(Область.ЛинииШкалы) = Тип("Линия"));
    Сообщить(Источник.Итог("Сумма") = 800);
    Изображение = Диаграмма.ПолучитьКартинку(900, 500, ФорматКартинки.PNG);
    Сообщить(ТипЗнч(Изображение) = Тип("Картинка"));
    Рисунок = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
    Рисунок.Картинка = Изображение;
    Рисунок.АвтоРазмер = Ложь;
    Рисунок.Лево = 5;
    Рисунок.Верх = 12;
    Рисунок.Ширина = 180;
    Рисунок.Высота = 100;
    ТабДок.Область(1, 1).Текст = "Только учебные данные: книга 3/750, ручка 1/50; количество 4, сумма 800";
    ТабДок.ТолькоПросмотр = Истина;
    Возврат ТабДок;
КонецФункции

Разбор по шагам

  1. ОбластьПостроения отделяем от заголовка и легенды.

  2. КоличествоВерхнихУровней относится к иерархическому отображению оси, не к глубине справочника, которого в источнике нет.

  3. ФорматШкалыЗначений без дробных знаков применяется к тексту меток, не округляет Сумма источника.

  4. Для линий шкалы используем Линия с ТипЛинииДиаграммы; контраст, рамку и шрифт проверяем на итоговом снимке.

Как проверить результат

  1. Четыре проверки Истина: авторазмещение, горизонтальная ориентация, тип линии и сохранённая сумма 800.

  2. На показе вручную убедитесь, что оба названия читаются; точный UI ещё не проверен запуском платформы.

Ожидаемый результат

Настроены основные элементы области построения без искажения исходных величин.

На что обратить внимание

  1. КоличествоВерхнихУровней не заменяет настройку КоличествоОткрытыхУровней отдельного поля.

  2. Линии шкалы и рамка области имеют разные роли и типы настроек.

  3. СводнаяДиаграмма доступна на сервере/в толстом клиенте. Здесь тонкому клиенту возвращается обычный табличный документ с картинкой, не интерактивная сводная диаграмма.

  4. Количество и сумма имеют разные единицы: совместная учебная шкала не подходит для достоверного бизнес-сравнения величин.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.