ПолилинейныйОбъектГеографическойСхемы

Типы · GeographicalSchemaObjectPolyline

Топологический объект, отображаемый на географической схеме линией, возможно ломаной.

Полное описание, параметры и ограничения

ПолилинейныйОбъектГеографическойСхемы (GeographicalSchemaObjectPolyline)

ПолилинейныйОбъектГеографическойСхемы (GeographicalSchemaObjectPolyline)

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

Свойства:
Видимость (Visible)
Значение (Value)
Линия (Line)
ОграничивающийПрямоугольник (BoundaryBox)
ОтображатьДанные (ShowData)
Подсказка (ToolTip)
Расшифровка (Details)
Сегменты (Segments)
Слой (Layer)
Цвет (Color)

Описание:

Топологический объект, отображаемый на географической схеме линией, возможно ломаной.

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

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

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

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

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

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

Добавить учебную линию и замкнутую зону

Маршрут составлен из одного сегмента с двумя координатами; зона из одного замкнутого контура. Временные геометрии удаляются только из новой схемы.

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

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Собственная учебная база 8.5.1.1343, толстый клиент Windows. ГеографическаяСхема из этого урока недоступна в тонком/веб-клиенте: не вставляйте код в тонкий клиент.

  2. Создайте отдельную внешнюю обработку с управляемой формой, командой Выполнить и кнопкой этой команды. Вставьте весь код одного урока в модуль формы; назначьте команде обработчик Выполнить.

  3. Каждый запуск создаёт новую схему в локальной переменной. Реквизиты карты и макеты не нужны; готовые карты, SHP, GPS и сервисы карт не загружаются.

  4. Точки и зоны вымышленные учебные объекты. Координаты заданы в градусах, высота в метрах; это не местоположение пользователей или реальных заказов.

  5. На схеме нет подложки с границами стран/дорогами. Это собственная геометрия, а не полноценный навигатор. Показать открывает отдельное окно схемы.

  6. Запускайте уроки по одному. Статические проверки сверяют API установленной справки, но отрисовка и геометрические операции в 1С пока не проверены запуском.

&НаКлиенте
Процедура Выполнить(Команда)
    Схема = Новый ГеографическаяСхема;
    Схема.Обновление = Ложь;
    Схема.Проекция = ТипПроекцииГеографическойСхемы.ЦилиндрическаяРавноудаленнаяПроекция;
    Схема.СмещениеШироты = 0;
    Схема.СмещениеДолготы = 0;
    Пункты = Схема.Слои.Добавить("УчебныеПункты", Тип("ТочечныйОбъектГеографическойСхемы"));
    Пункты.Текст = "Учебные пункты";
    Пункты.Видимость = Истина;
    Пункты.РазрешитьВыбор = Истина;
    ПунктА = Пункты.Объекты.Добавить();
    ПунктА.Значение = "guide-point-A";
    ПунктА.Координаты = Новый ГеографическиеКоординаты(55, 37, 100);
    ПунктА.Видимость = Истина;
    ПунктА.ТипОтрисовки = ТипОтображенияТочечногоОбъектаГеографическойСхемы.Маркер;
    ПунктА.Маркер = ТипМаркераГеографическойСхемы.БольшойКруг;
    ПунктА.Цвет = Новый Цвет(25, 95, 180);
    ПунктА.ОтображатьДанные = Ложь;
    ПунктА.Подсказка = "Вымышленный пункт А; только учебные данные";
    ПунктА.Расшифровка = Новый Структура("УчебныйКод", "guide-point-A");
    ПунктБ = Пункты.Объекты.Добавить();
    ПунктБ.Значение = "guide-point-B";
    ПунктБ.Координаты = Новый ГеографическиеКоординаты(55.1, 37.2, 110);
    ПунктБ.Видимость = Истина;
    ПунктБ.ТипОтрисовки = ТипОтображенияТочечногоОбъектаГеографическойСхемы.Маркер;
    ПунктБ.Маркер = ТипМаркераГеографическойСхемы.БольшойТреугольник;
    ПунктБ.Цвет = Новый Цвет(35, 145, 75);
    Зоны = Схема.Слои.Добавить("УчебныеЗоны", Тип("ПолигональныйОбъектГеографическойСхемы"));
    Зоны.Текст = "Учебная зона";
    Зона = Зоны.Объекты.Добавить();
    Зона.Значение = "guide-zone-001";
    Зона.Видимость = Истина;
    Зона.Цвет = Новый Цвет(225, 240, 255);
    Зона.ЦветГраницы = Новый Цвет(90, 130, 175);
    Зона.ОтображатьДанные = Ложь;
    Зона.Подсказка = "Вымышленная прямоугольная зона";
    Зона.Расшифровка = "guide-zone-001";
    Контур = Зона.Контуры.Добавить();
    Контур.Добавить(Новый ГеографическиеКоординаты(54.9, 36.9));
    Контур.Добавить(Новый ГеографическиеКоординаты(54.9, 37.3));
    Контур.Добавить(Новый ГеографическиеКоординаты(55.2, 37.3));
    Контур.Добавить(Новый ГеографическиеКоординаты(55.2, 36.9));
    Контур.Добавить(Новый ГеографическиеКоординаты(54.9, 36.9));
    Маршруты = Схема.Слои.Добавить("УчебныеМаршруты", Тип("ПолилинейныйОбъектГеографическойСхемы"));
    Маршруты.Текст = "Учебная линия";
    Маршрут = Маршруты.Объекты.Добавить();
    Маршрут.Значение = "guide-route-001";
    Маршрут.Видимость = Истина;
    Маршрут.Цвет = Новый Цвет(200, 95, 35);
    Маршрут.ОтображатьДанные = Ложь;
    Маршрут.Подсказка = "Учебная линия, не дорожный маршрут";
    Маршрут.Расшифровка = "guide-route-001";
    Сегмент = Маршрут.Сегменты.Добавить();
    Сегмент.Добавить(ПунктА.Координаты);
    Сегмент.Добавить(ПунктБ.Координаты);
    Сообщить(Маршрут.Сегменты.Количество() = 1);
    Сообщить(Маршрут.Сегменты.Получить(0) = Сегмент);
    Сообщить(Сегмент.Количество() = 2);
    Сообщить(Сегмент.Индекс(Сегмент.Получить(0)) = 0);
    Сегмент.Сдвинуть(0, 1);
    Сообщить(Сегмент.Получить(0).Широта = 55.1);
    Сегмент.Сдвинуть(1, -1);
    Сообщить(Сегмент.Получить(0).Широта = 55);
    ВременнаяКоордината = Новый ГеографическиеКоординаты(55.05, 37.1);
    Сегмент.Добавить(ВременнаяКоордината);
    Сегмент.Удалить(Сегмент.Получить(2));
    Сообщить(Сегмент.Количество() = 2);
    ВременныйСегмент = Маршрут.Сегменты.Добавить();
    ВременныйСегмент.Добавить(ВременнаяКоордината);
    ВременныйСегмент.Очистить();
    Маршрут.Сегменты.Удалить(ВременныйСегмент);
    ВременнаяЛиния = Маршруты.Объекты.Добавить();
    ВременнаяЛиния.Сегменты.Добавить().Добавить(ВременнаяКоордината);
    ВременнаяЛиния.Сегменты.Очистить();
    Маршруты.Объекты.Удалить(ВременнаяЛиния);
    Сообщить(Маршрут.Слой = Маршруты);
    Сообщить(ТипЗнч(Маршрут.Линия) = Тип("Линия"));
    Сообщить(ТипЗнч(Маршрут.ОграничивающийПрямоугольник) = Тип("ПрямоугольникГеографическойСхемы"));
    Сообщить(Зона.Контуры.Количество() = 1);
    Сообщить(Зона.Контуры.Получить(0) = Контур);
    Сообщить(Контур.Количество() = 5);
    Сообщить(Контур.Получить(0).Широта = Контур.Получить(4).Широта);
    Сообщить(Контур.Получить(0).Долгота = Контур.Получить(4).Долгота);
    Сообщить(Контур.Индекс(Контур.Получить(0)) = 0);
    ВременныйКонтур = Зона.Контуры.Добавить();
    ВременныйКонтур.Добавить(ВременнаяКоордината);
    ВременныйКонтур.Сдвинуть(0, 0);
    ВременныйКонтур.Удалить(ВременныйКонтур.Получить(0));
    ВременныйКонтур.Очистить();
    Зона.Контуры.Удалить(ВременныйКонтур);
    ВременнаяЗона = Зоны.Объекты.Добавить();
    ВременнаяЗона.Контуры.Добавить().Добавить(ВременнаяКоордината);
    ВременнаяЗона.Контуры.Очистить();
    Зоны.Объекты.Удалить(ВременнаяЗона);
    Сообщить(Зона.Слой = Зоны);
    Сообщить(ТипЗнч(Зона.ОграничивающийПрямоугольник) = Тип("ПрямоугольникГеографическойСхемы"));
    Сообщить(Схема.Слои.Количество() = 3);
    Схема.Обновление = Истина;
    Схема.Показать("Собственная учебная схема — guide-owned-geo");
КонецПроцедуры

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

  1. Сегменты содержит набор линий, каждый Сегмент — последовательность координат. Не добавляем координату сразу в коллекцию Сегменты.

  2. Контуры содержит контуры, каждый Контур — последовательность вершин. Прямоугольник явно замыкается повторением первой координаты в конце.

  3. Сдвинуть принимает индекс и относительное смещение. Для реального маршрута меняем порядок туда и обратно, чтобы сохранить исходную линию.

  4. Удалить координаты/сегмента/контура принимает объект, не индекс. Код получает соответствующий объект через Получить.

  5. Очистить демонстрируется на временных собственных сегменте, линии и зоне. Основная геометрия остаётся для показа.

  6. Полилиния — геометрия между точками, не расчёт пути по дорогам. Не вычисляем километры как простую разность градусов.

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

  1. Девятнадцать проверок ожидаются Истина; в финале три слоя, одна линия с двумя вершинами и одна зона с пятью координатами замкнутого контура.

  2. В схеме должны остаться два пункта, линия и зона; временные пустые объекты удалены только из локального нового документа.

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

Показаны настоящие вложенные коллекции маршрута и зоны с безопасными операциями на собственной геометрии.

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

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

  2. Контур из одной точки — только временная учебная коллекция и удалён до отрисовки; это не корректная зона.

  3. Порядок слоёв влияет на отрисовку; при необходимости перенесите слой пунктов поверх зоны в отдельном упражнении.

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

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

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

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

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