СерииСлояГеографическойСхемы.Добавить

Методы · Add

Добавляет новый объект в коллекцию.

Синтаксис

Добавить(<Имя>)
Полное описание, параметры и ограничения

СерииСлояГеографическойСхемы.Добавить (GeographicalSchemaLayerSeries.Add)

СерииСлояГеографическойСхемы (GeographicalSchemaLayerSeries)

Добавить (Add)

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

Синтаксис:
Добавить(<Имя>)
Параметры:

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

Описание:

Добавляет новый объект в коллекцию.

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

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

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

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

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

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

Связать с пунктами учебные количества и найти пункт по серии

Пункты А/Б имеют собственные количества 3/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-series-quantity";
    Количество.Текст = "Количество учебных наборов";
    Количество.ИмяГруппыСерий = "УчебныеПоказатели";
    Количество.ТипОтображения = ТипОтображенияСерииСлояГеографическойСхемы.Текст;
    Количество.Формат = "ЧДЦ=0";
    Количество.ОриентацияТекста = 0;
    Количество.РежимОтображенияЗначений = РежимОтображенияЗначенийСерии.ОтображатьКакЗначение;
    Количество.БазовыйЦветФигуры = Новый Цвет(50, 120, 185);
    Количество.ЦветТекста = Новый Цвет(25, 45, 65);
    Количество.ШрифтТекста = Новый Шрифт("Arial", 10);
    Пункты.УстановитьЗначение(ПунктА, Количество, 3, "Три вымышленных набора", "guide-value-A");
    Пункты.УстановитьЗначение(ПунктБ, Количество, 1, "Один вымышленный набор", "guide-value-B");
    ПунктА.ОтображатьДанные = Истина;
    ПунктБ.ОтображатьДанные = Истина;
    Сообщить(Количество.Имя = "УчебноеКоличество");
    Сообщить(Пункты.Серии.Количество() = 1);
    Сообщить(Пункты.Серии.Получить(0) = Количество);
    Сообщить(Пункты.Серии.Найти("УчебноеКоличество") = Количество);
    ЗначениеА = Пункты.ПолучитьЗначение(ПунктА, Количество);
    Сообщить(ЗначениеА.Значение = 3);
    Сообщить(ЗначениеА.Объект = ПунктА);
    Сообщить(ЗначениеА.Подсказка = "Три вымышленных набора");
    Сообщить(ЗначениеА.Расшифровка = "guide-value-A");
    Сообщить(ЗначениеА.Серия <> Неопределено);
    Сообщить(Пункты.НайтиОбъект(Количество, 3) = ПунктА);
    Отобранные = Пункты.ВыбратьОбъекты(Новый Структура("УчебноеКоличество", 3));
    Сообщить(Отобранные.Количество() = 1);
    Если Отобранные.Количество() <> 1 Тогда
        ВызватьИсключение "Учебный отбор не дал ровно один пункт";
    КонецЕсли;
    Сообщить(Отобранные.Получить(0) = ПунктА);
    ВременнаяСерия = Пункты.Серии.Добавить("УчебнаяВременная");
    Пункты.Серии.Удалить(ВременнаяСерия);
    ВременныйСлой = Схема.Слои.Добавить("УчебныйВременный", Тип("ТочечныйОбъектГеографическойСхемы"));
    ВременныйСлой.Серии.Добавить("УчебнаяЧерновая");
    ВременныйСлой.Серии.Очистить();
    Схема.Слои.Удалить(ВременныйСлой);
    Схема.Обновление = Истина;
    Схема.Показать("Собственная учебная схема — guide-owned-geo");
КонецПроцедуры

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

  1. Значение пункта guide-point-A идентифицирует геометрию. Значение серии guide-series-quantity идентифицирует показатель. Число 3 — значение этого показателя для конкретного пункта.

  2. УстановитьЗначение получает объект, серию, число, подсказку и расшифровку. ПолучитьЗначение возвращает объект ЗначениеСерииСлояГеографическойСхемы, не голое число.

  3. Чтобы число отображалось, включаем ОтображатьДанные у пунктов и выбираем Текст для серии. Формат ЧДЦ=0 исключает дробную часть.

  4. Цвет фигуры и РежимОтображенияЗначений относятся к графическим представлениям; при Текст не обещаем влияние этих настроек на фигуру/долю.

  5. Серии.Найти ищет имя серии. ВыбратьОбъекты принимает структуру имя серии → искомое значение; поиск по серии не заменяет НайтиПоЗначению геометрии.

  6. Тип свойства ЗначениеА.Серия в справке описан противоречиво: имя типа коллекции, описание самой серии. Не присваиваем его и не придумываем жёсткое сравнение типа.

  7. Временная серия и отдельный временный слой удалены из собственного документа; основное количество не очищается.

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

  1. Двенадцать проверок ожидаются Истина; отбор количества 3 вернул пункт А.

  2. После показа у собственных пунктов должны быть подписи 3 и 1. Рабочие остатки/заказы не читались.

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

Реальные API серии и отбора объяснены на полностью заполненных собственных данных.

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

  1. Не получать искомое число напрямую из ПунктА.Значение: там код объекта, а не количество.

  2. Если несколько пунктов имеют одно число, НайтиОбъект не заменяет массив результатов ВыбратьОбъекты.

  3. Описание серии не исполняется как SQL запрос и не обновляет остатки.

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

Оформить заголовок и легенду собственной схемы

Настраиваем три отдельные области схемы и создаём образец картинки из собственной учебной геометрии, не загружая чужие изображения.

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

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

Подготовка

  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);
    Схема.ОтображатьЗаголовок = Истина;
    Схема.ОтображатьЛегенду = Истина;
    Заголовок = Схема.ОбластьЗаголовка;
    Заголовок.Текст = "Собственные учебные пункты — не реальные адреса";
    Заголовок.Выравнивание = ГоризонтальноеПоложение.Центр;
    Заголовок.Прозрачный = Ложь;
    Заголовок.ПрозрачныйФон = Ложь;
    Заголовок.ЦветТекста = Новый Цвет(25, 45, 65);
    Заголовок.ЦветФона = Новый Цвет(240, 245, 250);
    Заголовок.Шрифт = Новый Шрифт("Arial", 12);
    Заголовок.Рамка = Новый Рамка(ТипРамкиЭлементаУправления.Одинарная, 1);
    Заголовок.ЦветРамки = Новый Цвет(145, 165, 185);
    Построение = Схема.ОбластьПостроения;
    Построение.Прозрачный = Ложь;
    Построение.ПрозрачныйФон = Ложь;
    Построение.ЦветФона = Новый Цвет(255, 255, 255);
    Построение.Рамка = Новый Рамка(ТипРамкиЭлементаУправления.Одинарная, 1);
    Построение.ЦветРамки = Новый Цвет(180, 195, 210);
    Легенда = Схема.ОбластьЛегенды;
    Легенда.МасштабнаяЛинейка = Ложь;
    Легенда.Прозрачный = Ложь;
    Легенда.ПрозрачныйФон = Ложь;
    Легенда.Цвет = Новый Цвет(25, 45, 65);
    Легенда.ЦветФона = Новый Цвет(245, 248, 251);
    Легенда.Шрифт = Новый Шрифт("Arial", 10);
    Легенда.Рамка = Новый Рамка(ТипРамкиЭлементаУправления.Одинарная, 1);
    Легенда.ЦветРамки = Новый Цвет(180, 195, 210);
    УчебнаяСерия = Пункты.Серии.Добавить("УчебнаяПодпись");
    УчебнаяСерия.ТипОтображения = ТипОтображенияСерииСлояГеографическойСхемы.Текст;
    Пункты.УстановитьЗначение(ПунктА, УчебнаяСерия, "A");
    Пункты.УстановитьЗначение(ПунктБ, УчебнаяСерия, "B");
    ПервыйОбразец = Легенда.Элементы.Добавить();
    ПервыйОбразец.Серия = УчебнаяСерия;
    ПервыйОбразец.ТекстОбразца = "A/B";
    ПервыйОбразец.ТекстПодписи = "Вымышленные учебные пункты";
    ПервыйОбразец.ОтображатьШкалу = ТипОтображенияШкалыЭлементаЛегендыГеографическойСхемы.НеОтображать;
    ПервыйОбразец.ЦветОбразца = Новый Цвет(25, 95, 180);
    ПервыйОбразец.ШрифтОбразца = Новый Шрифт("Arial", 10);
    Сообщить(Легенда.Элементы.Индекс(ПервыйОбразец) = 0);
    Сообщить(Легенда.Элементы.Получить(0) = ПервыйОбразец);
    ВременныйОбразец = Легенда.Элементы.Добавить();
    ВременныйОбразец.ТекстПодписи = "Временный образец";
    Легенда.Элементы.Сдвинуть(1, -1);
    Сообщить(Легенда.Элементы.Получить(0) = ВременныйОбразец);
    Легенда.Элементы.Удалить(ВременныйОбразец);
    Сообщить(Легенда.Элементы.Количество() = 1);
    Схема.Обновление = Истина;
    СобственнаяКартинка = Схема.ПолучитьКартинку(32, 32, ФорматКартинки.PNG, Ложь);
    Сообщить(ТипЗнч(СобственнаяКартинка) = Тип("Картинка"));
    ПервыйОбразец.Картинка = СобственнаяКартинка;
    ПунктБ.Картинка = СобственнаяКартинка;
    ПунктБ.ТипОтрисовки = ТипОтображенияТочечногоОбъектаГеографическойСхемы.Картинка;
    ПунктБ.ПоложениеОпорнойТочки = ПоложениеОпорнойТочкиОтрисовки.Центр;
    СлойКартинок = Схема.Слои.Добавить("УчебныеКартинки", Тип("МноготочечныйОбъектГеографическойСхемы"));
    Картинки = СлойКартинок.Объекты.Добавить();
    Картинки.Точки.Добавить(Новый ГеографическиеКоординаты(55.06, 37.09));
    Картинки.Картинка = СобственнаяКартинка;
    Картинки.ТипОтрисовки = ТипОтображенияТочечногоОбъектаГеографическойСхемы.Картинка;
    Картинки.ПоложениеОпорнойТочки = ПоложениеОпорнойТочкиОтрисовки.Центр;
    ВременнаяСхема = Новый ГеографическаяСхема;
    ВременнаяСхема.ОбластьЛегенды.Элементы.Добавить();
    ВременнаяСхема.ОбластьЛегенды.Элементы.Очистить();
    Сообщить(ВременнаяСхема.ОбластьЛегенды.Элементы.Количество() = 0);
    Сообщить(Легенда.Элементы.Количество() = 1);
    Схема.Обновление = Истина;
    Схема.Показать("Собственная учебная схема — guide-owned-geo");
КонецПроцедуры

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

  1. ОбластьЗаголовка, ОбластьЛегенды, ОбластьПостроения уже принадлежат схеме. Свойства областей можно менять, сами readonly-ссылки не заменяем.

  2. Текст заголовка, фон, рамка и её цвет задаются независимо. Прозрачный и ПрозрачныйФон в справке имеют одинаковое описание; ставим одинаковое значение и не обещаем разные эффекты.

  3. Масштабную линейку отключаем: учебная схема не является расчётом дорожных расстояний.

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

  5. ПолучитьКартинку делает PNG в памяти 32×32 из собственной схемы до назначения этой картинки пунктам. Это растровый снимок, не живая рекурсивная ссылка.

  6. Та же собственная картинка назначается пункту Б, многоточечному объекту и образцу легенды. Для точек режим Картинка включается явно; опора Центр теперь относится к активному режиму.

  7. Никакой PNG на диск не записывается и чужая картинка по URL не загружается. Маленький снимок нужен для демонстрации API, не выдается за хороший картографический значок.

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

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

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

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

Показаны реальные области документа, коллекция легенды и картинка как стиль географического объекта.

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

  1. Шрифт Arial должен быть доступен на клиенте; фактическое оформление зависит от среды.

  2. Растровый снимок не меняется автоматически при последующем изменении схемы.

  3. Не использовать рекурсивное создание всё более крупных картинок и не задавать размеры из непроверенного ввода.

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

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

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

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

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