Как в 1С отобразить карту РФ с точками подразделений без интернета?

Программист 1С v8.3 (Управляемые формы) Управленческий учет IT и автоматизация бизнеса
← На главную

При автоматизации управленческого учета и мониторинга региональной сети часто возникает задача наглядного вывода подразделений или торговых точек на карте страны. Классический вариант интеграции с веб-сервисами (например, публичными API картографических сервисов) оказывается неприменим, если клиентская база данных работает в изолированном контуре без прямого доступа к интернету либо требования корпоративной безопасности запрещают передачу координат во внешнюю сеть. Разберем, какие встроенные и альтернативные инструменты платформы 1С:Предприятие позволяют решить задачу отображения офлайн-карты с нанесенными маркерами.

Вариант 1. Использование встроенного объекта платформы «Географическая схема»

В платформе 1С:Предприятие предусмотрен штатный визуальный объект ГеографическаяСхема. Он предназначен именно для работы с пространственными и картографическими данными без необходимости подключения к глобальной сети. Рассмотрим ключевые особенности подготовки векторных карт и работы с этим объектом.

Для загрузки карты платформе требуется векторный формат ESRI Shapefile. Проанализируем обязательные технические требования к исходным данным:

  1. Комплект файлов: Ошибочно полагать, что достаточно передать один файл с расширением .shp. Платформа требует полноценный набор файлов с одинаковым именем: .shp (непосредственно геометрия объектов), .shx (индексный файл для быстрого поиска геометрии) и .dbf (атрибутивные данные, содержащие наименования регионов, коды и числовые показатели).
  2. Кодировка атрибутов: Таблица .dbf должна быть сохранена в однобайтовой кодировке, как правило, Windows-1251. Если исходный слой выгружен в кодировке UTF-8, наименования субъектов и объектов внутри 1С отобразятся в виде нечитаемых символов.
  3. Система координат: Географическая схема ожидает координаты в стандартной системе WGS 84 (EPSG:4326), где положение точек задается в градусах широты и долготы. Если использовать спроецированные координаты (например, метры проекции Меркатора), корректно позиционировать точки подразделений по их географическим координатам не получится.
  4. Степень детализации (генерализация): Слишком подробные карты с детализацией до мелких рек, островов и улиц содержат миллионы точек, что приводит к критическому падению производительности и зависанию интерфейса 1С при отрисовке. Для обзорной карты масштаба страны рекомендуется предварительно упростить геометрию в геоинформационных системах (ГИС), оставив только контуры субъектов федерации.

Разберем программную загрузку подготовленного слоя и вывод объектов на форму. Посмотрим на типовой алгоритм:


// Предположим, что Элементы.ПолеГеографическойСхемы связано с реквизитом формы типа ГеографическаяСхема
ГеоСхема = Элементы.ПолеГеографическойСхемы.ГеографическаяСхема;

// Загрузка слоя из подготовленного набора файлов Shapefile
ГеоСхема.Загрузить("C:\Maps\Russia_Regions.shp");

// Проанализируем добавление точечных объектов подразделений
// Для каждого филиала создаем точечный объект по координатам широты и долготы
Для Каждого СтрПодразделение Из ТаблицаПодразделений Цикл
    Точка = ГеоСхема.Объекты.Добавить();
    Точка.ТипОбъекта = ТипОбъектаГеографическойСхемы.Точка;
    Точка.Широта = СтрПодразделение.Широта;
    Точка.Долгота = СтрПодразделение.Долгота;
    Точка.Текст = СтрПодразделение.Наименование;
    Точка.Цвет = WebЦвета.Красный;
КонецЦикла;

Этот подход работает полностью автономно и не требует развертывания дополнительных внешних служб или веб-серверов на рабочих местах пользователей.

Вариант 2. Использование поля HTML-документа с векторной SVG-картой

Если задача заключается только в обзорном отображении присутствия компании по регионам без необходимости свободного масштабирования до отдельных домов, наиболее быстрым и визуально аккуратным решением является работа с векторным форматом SVG внутри встроенного поля HTML-документа. Выясним причину популярности этого способа: он обеспечивает быструю отрисовку, кроссплатформенность и не зависит от ограничений настольных клиентов.

  1. Макет конфигурации содержит векторную карту РФ в формате SVG, где каждому региону присвоен уникальный идентификатор (например, код субъекта РФ).
  2. На форму помещается элемент управления ПолеHTMLДокумента.
  3. Программно формируется HTML-страница, в которую внедряется SVG-код карты.
  4. Поверх карты с помощью встроенных элементов SVG (тегов <circle>) наносятся маркеры подразделений, привязанные к координатной сетке векторного изображения.
  5. При необходимости можно легко реализовать подсветку проблемных регионов цветом или вывод всплывающих подсказок при наведении курсора.

Посмотрим на пример генерации базового HTML-кода для формы:


&НаСервере
Функция СформироватьHTMLКарты(ТаблицаТочек)
    МакетSVG = ПолучитьОбщийМакет("МакетКартыРФ_SVG");
    ТекстSVG = МакетSVG.ПолучитьТекст();
    
    // Внедряем маркеры точек поверх векторной подложки
    СтрокаМаркеров = "";
    Для Каждого Стр Из ТаблицаТочек Цикл
        // X и Y рассчитываются исходя из пропорций SVG-полотна
        СтрокаМаркеров = СтрокаМаркеров + СтрШаблон(
            "<circle cx='%1' cy='%2' r='5' fill='red'><title>%3</title></circle>",
            Формат(Стр.КоординатаX, "ЧРД=.; ЧГ=0"),
            Формат(Стр.КоординатаY, "ЧРД=.; ЧГ=0"),
            Стр.Наименование
        );
    КонецЦикла;
    
    ТекстHTML = "<html><body style='margin:0; overflow:hidden;'>" 
              + ТекстSVG 
              + "</body></html>";
    
    Возврат СтрЗаменить(ТекстHTML, "</svg>", СтрокаМаркеров + "</svg>");
КонецФункции

Вариант 3. Использование JavaScript-библиотек (Leaflet / GeoJSON) в поле HTML-документа

Когда требуется полноценная интерактивная карта с возможностью приближения, перетаскивания и детального размещения десятков маркеров, но интернета по-прежнему нет, разберем решение на базе JS-библиотек (например, Leaflet):

  1. Автономная сборка библиотек: Скрипты картографического движка и стили CSS помещаются непосредственно в макеты конфигурации 1С (как двоичные данные или текст) и подключаются локально без обращений к CDN.
  2. Векторная геометрия GeoJSON: Границы Российской Федерации и областей сохраняются в текстовом формате GeoJSON. Библиотека способна отрендерить полигоны границ напрямую силами браузера без использования растровых тайлов.
  3. Передача точек подразделений: 1С формирует массив координат и параметров филиалов в формате JSON, передавая его в JavaScript-код страницы, где маркеры отображаются поверх векторного слоя.
  4. Развертывание локального тайлового сервера (при необходимости высокой детализации): Если пользователям требуется растровый слой (улицы, дороги, детальный рельеф), в локальной сети предприятия может быть развернут внутренний тайловый кэш-сервер (например, на базе Mapnik, MapProxy или TileServer GL) с предварительно загруженными данными OpenStreetMap. В этом случае поле HTML-документа обращается по локальному IP-адресу к серверу организации без выхода во внешний интернет.

Таким образом, для реализации задачи наглядного контроля 100 подразделений по стране без доступа в интернет оптимально использовать встроенный объект ГеографическаяСхема с оптимизированными файлами Shapefile либо векторную схему в поле HTML-документа. Это исключает зависимость от внешних платных сервисов и полностью закрывает требования информационной безопасности.

← На главную