Отличить нулевые продажи января от отсутствующего отчёта за февраль

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

В январе факт равен 0, в феврале неизвестен, в марте равен 16. Нечисловое значение пропускаем, а настоящий ноль сохраняем.

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

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

Подготовка

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

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

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    НовыеРеквизиты = Новый Массив;
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("График", Новый ОписаниеТипов("Диаграмма")));
    ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
    Диаграмма = Новый Диаграмма;
    Диаграмма.ТипДиаграммы = ТипДиаграммы.График;
    Факт = Диаграмма.УстановитьСерию("actual");
    Факт.Текст = "Факт, шт.; февраль — нет данных";
    Факт.Маркер = ТипМаркераДиаграммы.Круг;
    Январь = Диаграмма.УстановитьТочку("2026-01");
    Январь.Текст = "Январь";
    Февраль = Диаграмма.УстановитьТочку("2026-02");
    Февраль.Текст = "Февраль: нет данных";
    Март = Диаграмма.УстановитьТочку("2026-03");
    Март.Текст = "Март";
    Диаграмма.УстановитьЗначение(Январь, Факт, 0);
    Диаграмма.УстановитьЗначение(Февраль, Факт, Неопределено);
    Диаграмма.УстановитьЗначение(Март, Факт, 16);
    Диаграмма.ИспользованиеНечисловыхЗначений = ИспользованиеНечисловыхЗначенийДиаграммы.Пропускать;
    Диаграмма.БазовоеЗначение = 0;
    Диаграмма.ПропускатьБазовоеЗначение = Ложь;
    Диаграмма.СоединениеТочек = ТипСоединенияТочекДиаграммы.Соединять;
    Диаграмма.СоединениеТочекПриПропущенныхЗначениях = ТипСоединенияТочекПриПропущенныхЗначенияхДиаграммы.Нет;
    Диаграмма.ВидПодписей = ВидПодписейКДиаграмме.Значение;
    Диаграмма.ФорматЗначенийВПодписях = "ЧДЦ=0;ЧН=0";
    Диаграмма.ОбластьЗаголовка.Текст = "0 — известный факт, пропуск — данных нет";
    Сообщить(Диаграмма.ПолучитьЗначение(Январь, Факт).Значение = 0);
    Сообщить(Диаграмма.ПолучитьЗначение(Февраль, Факт).Значение = Неопределено);
    Сообщить(Диаграмма.ПолучитьЗначение(Март, Факт).Значение = 16);
    ЭтаФорма.График = Диаграмма;
    Поле = Элементы.Добавить("ДиаграммаТоваров", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеДиаграммы;
    Поле.ПутьКДанным = "График";
    Поле.РастягиватьПоГоризонтали = Истина;
    Поле.РастягиватьПоВертикали = Истина;
КонецПроцедуры

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

  1. Создаём собственную серию и три точки с разным смыслом: известный ноль, неизвестное значение, известное число 16.

  2. УстановитьЗначение принимает произвольное значение. Для февраля явно передаём Неопределено, не строку «0».

  3. Пропускать нечисловые значения исключает неизвестный февраль из построения. ПропускатьБазовоеЗначение=Ложь сохраняет известный январский ноль.

  4. Запрещаем соединение через пропущенное значение: график не должен изображать подтверждённую траекторию через неизвестный месяц.

  5. Проверяем исходные значения отдельно от изображения и дополняем подпись точки словами «нет данных».

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

  1. Три сравнения Истина: январь 0, февраль Неопределено, март 16.

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

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

Отсутствующий показатель не подменён нулём, и визуальная связь не приписывает ему значение.

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

  1. Не используйте КакНоль только ради непрерывного графика: это изменяет смысл отсутствующих данных.

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

  3. В таблице данных пустая ячейка требует пояснения; в уроке оно задано текстом точки и заголовком.

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

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

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

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

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