ОписаниеТипов.На основании типов и квалификаторов

Конструкторы

Создает описание типов на основании заданных типов и квалификаторов для типов Число, Строка, Дата.

Синтаксис

Новый ОписаниеТипов(<Типы>, <КвалификаторыЧисла>, <КвалификаторыСтроки>, <КвалификаторыДаты>, <КвалификаторыДвоичныхДанных>)

Примеры платформы

МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("СправочникСсылка.Номенклатура"));
МассивТипов.Добавить(Тип("Строка"));
ПараметрыСтроки = Новый КвалификаторыСтроки(20);
ДопустимыеТипы = Новый ОписаниеТипов(МассивТипов, , ПараметрыСтроки);
Полное описание, параметры и ограничения

ОписаниеТипов.На основании типов и квалификаторов

ОписаниеТипов (TypeDescription)

На основании типов и квалификаторов

Доступен, начиная с версии 8.0.

Синтаксис:
Новый ОписаниеТипов(<Типы>, <КвалификаторыЧисла>, <КвалификаторыСтроки>, <КвалификаторыДаты>, <КвалификаторыДвоичныхДанных>)
Параметры:

<Типы> (обязательный)
Тип: Массив, Строка.
Массив значений типа Тип, состоящий из типов, которые будут использованы в объекте, или строка, содержащая имена типов, разделенных запятыми.

<КвалификаторыЧисла> (необязательный)
Тип: КвалификаторыЧисла.
Квалификаторы числа, описывающие допустимые значения числового типа. Если параметр не указан, то числа хранить нельзя.

<КвалификаторыСтроки> (необязательный)
Тип: КвалификаторыСтроки.
Квалификаторы строки, описывающие допустимые значения строкового типа. Если параметр не указан, то используется неограниченная длина строки.

<КвалификаторыДаты> (необязательный)
Тип: КвалификаторыДаты.
Квалификаторы даты, описывающие допустимые значения типа Дата. Если параметр не указан, то используются обе части даты (дата + время).

<КвалификаторыДвоичныхДанных> (необязательный)
Тип: КвалификаторыДвоичныхДанных.
Квалификаторы двоичных данных.
Описание:

Создает описание типов на основании заданных типов и квалификаторов для типов Число, Строка, Дата.

Пример:

// составной тип из строки и ссылки на справочник Номенклатуры.

МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("СправочникСсылка.Номенклатура"));
МассивТипов.Добавить(Тип("Строка"));
ПараметрыСтроки = Новый КвалификаторыСтроки(20);

ДопустимыеТипы = Новый ОписаниеТипов(МассивТипов, , ПараметрыСтроки);

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Построить план/факт непосредственно из собственной таблицы значений

Первая колонка содержит названия точек, заголовки остальных колонок — названия серий. Отключаем автоматическое транспонирование, чтобы сохранять выбранный смысл осей.

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

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

Подготовка

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

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

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

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

  5. Обе числовые колонки используют один ОписаниеТипов с КвалификаторыЧисла(2, 0, Неотрицательный): целые количества 0–99. Все шесть чисел 10/12/15 и 8/11/16 входят в диапазон; формат подписи диаграммы не задаёт тип хранения.

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

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

  1. Таблица принадлежит уроку и содержит только три вымышленные строки, без чтения учётных данных.

  2. СерииВСтроках=Ложь означает серии в колонках: План и Факт. Первая колонка Месяц задаёт подписи точек.

  3. ИсточникДанных заполняет диаграмму. АвтоТранспонирование=Ложь не позволяет смене типа диаграммы незаметно обменять смысл серий и точек.

  4. Проверяем число осей данных, подписи и значение мартовского факта через ПолучитьЗначение(точка, серия).

  5. Таблица под диаграммой делает контроль 10/12/15 и 8/11/16 доступным без оценки высоты столбцов.

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

  1. Пять сравнений Истина; мартовский факт 16 расположен в третьей точке второй серии.

  2. На форме два показателя и три месяца. Первая колонка не создаёт третью числовую серию.

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

Показан конкретный контракт табличного источника и проверена ориентация данных.

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

  1. Заголовок колонки и её техническое имя — разные свойства. Название серии берётся из заголовка.

  2. Не считайте источник «живым запросом»: при изменении данных выполните явное обновление диаграммы и контроль результата.

  3. Обновление=Ложь не ускоряет управляемую форму; этот механизм рассчитан на неуправляемые формы.

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

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

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

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

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

Подготовка

  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С» и не аффилирован с ней.