ТочкиДиаграммы.Сдвинуть

Методы · Move

Сдвигает точку на указанное количество позиций.

Синтаксис

Сдвинуть(<Точка>, <Смещение>)
Полное описание, параметры и ограничения

ТочкиДиаграммы.Сдвинуть (ChartPoints.Move)

ТочкиДиаграммы (ChartPoints)

Сдвинуть (Move)

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

Синтаксис:
Сдвинуть(<Точка>, <Смещение>)
Параметры:

<Точка> (обязательный)
Тип: ТочкаДиаграммы.
Сдвигаемая точка.

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

Сдвигает точку на указанное количество позиций.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.

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

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

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

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

Добавить, вставить, сдвинуть и удалить учебные серии и точки

Ручная работа с коллекциями без источника данных. Удаляем только созданные здесь пустые дополнительные элементы.

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

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

Подготовка

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

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

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    НовыеРеквизиты = Новый Массив;
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("График", Новый ОписаниеТипов("Диаграмма")));
    ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
    Диаграмма = Новый Диаграмма;
    Диаграмма.ТипДиаграммы = ТипДиаграммы.Гистограмма;
    Серии = Диаграмма.Серии;
    План = Серии.Добавить("План");
    План.Значение = "plan";
    Факт = Серии.Вставить(1, "Факт");
    Факт.Значение = "actual";
    ПустаяСерия = Серии.Добавить("Удалить эту пустую серию");
    Сообщить(Серии.Количество() = 3);
    Серии.Сдвинуть(Факт, -1);
    Сообщить(Серии.Индекс(Факт) = 0);
    Сообщить(Серии.Получить(0).Значение = "actual");
    Серии.Удалить(Серии.Индекс(ПустаяСерия));
    Сообщить(Серии.Количество() = 2);
    Точки = Диаграмма.Точки;
    Январь = Точки.Добавить("Январь");
    Январь.Значение = "2026-01";
    Февраль = Точки.Вставить(1, "Февраль");
    Февраль.Значение = "2026-02";
    ПустаяТочка = Точки.Добавить("Удалить эту пустую точку");
    Точки.Сдвинуть(Февраль, -1);
    Сообщить(Точки.Индекс(Февраль) = 0);
    Сообщить(Точки.Получить(0).Значение = "2026-02");
    Точки.Удалить(Точки.Индекс(ПустаяТочка));
    Сообщить(Точки.Количество() = 2);
    Диаграмма.УстановитьЗначение(Январь, План, 10);
    Диаграмма.УстановитьЗначение(Январь, Факт, 8);
    Диаграмма.УстановитьЗначение(Февраль, План, 12);
    Диаграмма.УстановитьЗначение(Февраль, Факт, 11);
    // Второй отдельный объект демонстрирует очистку своих коллекций.
    Черновик = Новый Диаграмма;
    Черновик.Серии.Добавить("Черновая серия");
    Черновик.Точки.Добавить("Черновая точка");
    Черновик.Серии.Очистить();
    Черновик.Точки.Очистить();
    Сообщить(Черновик.Серии.Количество() = 0);
    Сообщить(Черновик.Точки.Количество() = 0);
    Черновик.Очистить();
    ЭтаФорма.График = Диаграмма;
    Поле = Элементы.Добавить("ДиаграммаТоваров", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеДиаграммы;
    Поле.ПутьКДанным = "График";
    Поле.РастягиватьПоГоризонтали = Истина;
    Поле.РастягиватьПоВертикали = Истина;
КонецПроцедуры

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

  1. У коллекций Серии и Точки есть собственные операции Добавить/Вставить. Их индексы начинаются с нуля.

  2. После Сдвинуть(объект,-1) ищем новый индекс объекта, а не продолжаем использовать старый номер позиции.

  3. Удаляем пустые дополнительные элементы по вычисленному индексу. Переменные удалённых объектов больше не читаем.

  4. Заполняем четыре значения с помощью сохранившихся объектов, независимо от нового порядка.

  5. Для Очистить создаём второй собственный Черновик; отображаемую диаграмму не очищаем.

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

  1. На форме Февраль перед Январём, Факт перед Планом; значения остаются февраль 11/12 и январь 8/10.

  2. После удаления пустых элементов две серии и две точки.

  3. В отдельном черновике обе очищенные коллекции имеют размер 0; отображаемые значения не исчезли.

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

Коллекции изменены и проверены по идентичности объектов и новым индексам, а не по догадке о позиции.

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

  1. Не меняйте КоличествоСерий/КоличествоТочек при связи с источником данных.

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

  3. Ссылки на удалённую точку или серию недействительны даже если индекс позже занят новым элементом.

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

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

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

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

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