Прочитать другую форму таблицы: показатели в строках, месяцы в колонках

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

СерииВСтроках меняет контракт источника, а не только расположение подписей. Создаём таблицу, соответствующую этому контракту.

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

Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.

Подготовка

  1. В учебной базе создайте новую внешнюю обработку УчебнаяДиаграмма с пустой управляемой формой; назначьте форму основной.

  2. Не создавайте реквизит График и поле ДиаграммаТоваров вручную: код создаёт их в ПриСозданииНаСервере.

  3. В свойствах формы → События назначьте ПриСозданииНаСервере одноимённой процедуре. Сохраните EPF и откройте её в учебном тонком клиенте Windows.

  4. Каждый урок использует отдельный модуль/копию формы. Данные вымышлены: план и факт в штуках за три месяца, не данные учёта.

  5. Три колонки месяцев имеют одинаковый числовой тип: 2 разряда, 0 дробных, неотрицательный знак, диапазон 0–99. Общий ТипПоказателя применяется ко всем месяцам; он допускает все шесть значений, включая 16.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    НовыеРеквизиты = Новый Массив;
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("График", Новый ОписаниеТипов("Диаграмма")));
    ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
    Таблица = Новый ТаблицаЗначений;
    Таблица.Колонки.Добавить("Показатель", Новый ОписаниеТипов("Строка"), "Показатель");
    ТипПоказателя = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(2, 0, ДопустимыйЗнак.Неотрицательный));
    Таблица.Колонки.Добавить("Январь", ТипПоказателя, "Январь");
    Таблица.Колонки.Добавить("Февраль", ТипПоказателя, "Февраль");
    Таблица.Колонки.Добавить("Март", ТипПоказателя, "Март");
    СтрокаПлана = Таблица.Добавить();
    СтрокаПлана.Показатель = "План, шт.";
    СтрокаПлана.Январь = 10;
    СтрокаПлана.Февраль = 12;
    СтрокаПлана.Март = 15;
    СтрокаФакта = Таблица.Добавить();
    СтрокаФакта.Показатель = "Факт, шт.";
    СтрокаФакта.Январь = 8;
    СтрокаФакта.Февраль = 11;
    СтрокаФакта.Март = 16;
    Диаграмма = Новый Диаграмма;
    Диаграмма.ТипДиаграммы = ТипДиаграммы.Гистограмма;
    Диаграмма.АвтоТранспонирование = Ложь;
    Диаграмма.СерииВСтроках = Истина;
    Диаграмма.ИсточникДанных = Таблица;
    Сообщить(Диаграмма.Серии.Количество() = 2);
    Сообщить(Диаграмма.Точки.Количество() = 3);
    Сообщить(Диаграмма.Серии.Получить(1).Текст = "Факт, шт.");
    Сообщить(Диаграмма.Точки.Получить(2).Текст = "Март");
    Сообщить(Диаграмма.ПолучитьЗначение(Диаграмма.Точки.Получить(2), Диаграмма.Серии.Получить(1)).Значение = 16);
    Диаграмма.ОбластьПостроения.ОтображатьТаблицуДанных = Истина;
    Диаграмма.ОбластьЗаголовка.Текст = "Тот же план/факт из таблицы с сериями в строках";
    ЭтаФорма.График = Диаграмма;
    Поле = Элементы.Добавить("ДиаграммаТоваров", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеДиаграммы;
    Поле.ПутьКДанным = "График";
    Поле.РастягиватьПоГоризонтали = Истина;
    Поле.РастягиватьПоВертикали = Истина;
КонецПроцедуры

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

  1. Создаём две строки-показателя и три колонки-месяца, а не переиспользуем таблицу из предыдущего урока без преобразования.

  2. СерииВСтроках=Истина берёт подписи серий из первой колонки, а подписи точек из заголовков остальных колонок.

  3. Свойство задаём ДО ИсточникДанных. Числовая матрица должна дать тот же результат, что и вариант серий в колонках.

  4. Через коллекции получаем факт и март и проверяем значение 16; таблица под графиком помогает сравнить обе версии.

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

  1. Пять сообщений Истина: две серии, три точки, правильные подписи и мартовский факт 16.

  2. Визуально оба урока показывают одинаковые шесть чисел, хотя источники имеют разную структуру.

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

Ориентация источника выбирается сознательно и проверяется по подписи и значению.

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

  1. Просто переключить СерииВСтроках у неподходящей таблицы — не корректное преобразование отчёта.

  2. Не выводите рядом несопоставимые единицы измерения как одинаковые числовые серии без отдельных шкал.

  3. Автоматическое транспонирование и СерииВСтроках решают разные задачи.

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

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

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

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

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