Пункты А/Б имеют собственные количества 3/1. Серия показывает число рядом с геометрией и поддерживает отбор.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Собственная учебная база 8.5.1.1343, толстый клиент Windows. ГеографическаяСхема из этого урока недоступна в тонком/веб-клиенте: не вставляйте код в тонкий клиент.
Создайте отдельную внешнюю обработку с управляемой формой, командой Выполнить и кнопкой этой команды. Вставьте весь код одного урока в модуль формы; назначьте команде обработчик Выполнить.
Каждый запуск создаёт новую схему в локальной переменной. Реквизиты карты и макеты не нужны; готовые карты, SHP, GPS и сервисы карт не загружаются.
Точки и зоны вымышленные учебные объекты. Координаты заданы в градусах, высота в метрах; это не местоположение пользователей или реальных заказов.
На схеме нет подложки с границами стран/дорогами. Это собственная геометрия, а не полноценный навигатор. Показать открывает отдельное окно схемы.
Запускайте уроки по одному. Статические проверки сверяют 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");
КонецПроцедурыРазбор по шагам
Значение пункта guide-point-A идентифицирует геометрию. Значение серии guide-series-quantity идентифицирует показатель. Число 3 — значение этого показателя для конкретного пункта.
УстановитьЗначение получает объект, серию, число, подсказку и расшифровку. ПолучитьЗначение возвращает объект ЗначениеСерииСлояГеографическойСхемы, не голое число.
Чтобы число отображалось, включаем ОтображатьДанные у пунктов и выбираем Текст для серии. Формат ЧДЦ=0 исключает дробную часть.
Цвет фигуры и РежимОтображенияЗначений относятся к графическим представлениям; при Текст не обещаем влияние этих настроек на фигуру/долю.
Серии.Найти ищет имя серии. ВыбратьОбъекты принимает структуру имя серии → искомое значение; поиск по серии не заменяет НайтиПоЗначению геометрии.
Тип свойства ЗначениеА.Серия в справке описан противоречиво: имя типа коллекции, описание самой серии. Не присваиваем его и не придумываем жёсткое сравнение типа.
Временная серия и отдельный временный слой удалены из собственного документа; основное количество не очищается.
Как проверить результат
Двенадцать проверок ожидаются Истина; отбор количества 3 вернул пункт А.
После показа у собственных пунктов должны быть подписи 3 и 1. Рабочие остатки/заказы не читались.
Ожидаемый результат
Реальные API серии и отбора объяснены на полностью заполненных собственных данных.
На что обратить внимание
Не получать искомое число напрямую из ПунктА.Значение: там код объекта, а не количество.
Если несколько пунктов имеют одно число, НайтиОбъект не заменяет массив результатов ВыбратьОбъекты.
Описание серии не исполняется как SQL запрос и не обновляет остатки.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.