Как скачать и правильно загрузить карту бизнес-регионов в формате .geo в 1С:ERP

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

При работе с управленческой отчетностью в 1С:ERP, 1С:Комплексная автоматизация или 1С:Управление торговлей пользователи часто сталкиваются с необходимостью визуализации данных на карте — для этого есть панель виджетов и диаграмм для визуализации данных. Однако стандартная карта бизнес-регионов может отсутствовать в базе или выдавать ошибку «неверный формат» при попытке ручной загрузки. В этой статье мы подробно разберем, где найти файлы географических схем, как правильно загрузить их программно и какие нюансы следует учитывать при работе в клиент-серверном режиме.

Где найти эталонные файлы географических схем

Многие ошибочно полагают, что карты нужно скачивать отдельно из интернета, однако файлы в формате .geo официально поставляются вместе с дистрибутивами конфигураций. Проанализируем стандартные пути размещения этих файлов на диске. Если у вас установлены шаблоны конфигураций, ищите их в папке с конкретным релизом:

...\1cv8\tmplts\1c\erp\[номер_версии]\AddFiles\GeographicalSchemes\

В этом каталоге обычно содержатся готовые схемы для России (часто с префиксом v8_422C_...), мира и отдельных регионов. Если вы не нашли эти файлы в папке текущей версии, попробуйте проверить архивы предыдущих релизов или извлечь их из другой информационной базы, где функционал карт уже настроен.

Разбор проблемы: почему возникает ошибка «неверный формат»

Выясним причину, по которой стандартная загрузка через интерфейс или простая попытка записи в константу ГеографическаяСхемаДляОтчетов часто терпит неудачу. Чтобы проверить текущее состояние настроек в вашей базе, можно использовать специальную обработку на просмотр констант и их значений (удобно через редактор констант и объектов базы данных).

Система 1С ожидает, что в константе будет храниться не просто двоичный файл схемы, а объект типа ХранилищеЗначения, внутри которого находится Структура с определенными полями. Рассмотрим обязательный состав этой структуры:

  1. Название — строковое имя карты, которое будет отображаться в отчетах.
  2. ГеоСхема — непосредственно объект типа ГеографическаяСхема.

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

Программная загрузка карты: правильный алгоритм

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

Создадим на форме команду и опишем следующий программный код:


&НаКлиенте
Процедура ЗагрузитьКарту(Команда)
    
    Режим = РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытияФайла.Фильтр = "Географическая схема (*.geo)|*.geo";
    ДиалогОткрытияФайла.Заголовок = "Выберите файл карты";
    
    Если ДиалогОткрытияФайла.Выбрать() Тогда
        ВыбранныйФайл = Новый Файл(ДиалогОткрытияФайла.ПолноеИмяФайла);
        // Передаем двоичные данные во временное хранилище
        ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ВыбранныйФайл.ПолноеИмя);
        АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайла);
        
        // Вызываем серверную процедуру для записи в константу
        ЗагрузитьКартуНаСервере(АдресХранилища, ВыбранныйФайл.ИмяБезРасширения);
        Сообщить("Карта успешно загружена!");
    КонецЕсли;
    
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьКартуНаСервере(АдресХранилища, ИмяФайла)
    
    // Создаем временный файл на сервере для чтения схемы
    ПутьНаСервере = ПолучитьИмяВременногоФайла(".geo");
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресХранилища);
    ДвоичныеДанные.Записать(ПутьНаСервере);
    
    // Инициализируем объект ГеографическаяСхема
    ГеоСхема = Новый ГеографическаяСхема;
    Попытка
        ГеоСхема.Прочитать(ПутьНаСервере);
    Исключение
        ВызватьИсключение "Не удалось прочитать файл географической схемы!";
    КонецПопытки;
    
    // Формируем требуемую структуру хранения
    СтруктураХранения = Новый Структура("Название, ГеоСхема");
    СтруктураХранения.Вставить("Название", ИмяФайла);
    СтруктураХранения.Вставить("ГеоСхема", ГеоСхема);
    
    // Записываем данные в константу
    Константы.ГеографическаяСхемаДляОтчетов.Установить(Новый ХранилищеЗначения(СтруктураХранения));
    
    // Удаляем временный файл
    УдалитьФайлы(ПутьНаСервере);
    
КонецПроцедуры

В этом примере мы проанализировали важность использования метода ПоместитьВоВременноеХранилище. Он позволяет избежать проблем с правами доступа, так как серверу 1С не требуется напрямую обращаться к локальному диску пользователя.

Особенности работы в клиент-серверном режиме

Посмотрим на ситуацию, когда база работает на SQL-сервере. Важно понимать, что метод ГеографическаяСхема.Прочитать() выполняется на стороне сервера приложений 1С. Если вы укажете путь к файлу как C:\my_map.geo, система будет искать этот файл на жестком диске сервера.

Практический совет: если вы не хотите писать код, можно загрузить карту в файловом режиме.

Актуализация данных и редактирование карт

Стандартные карты .geo часто требуют обновления под текущее административное деление. Отредактировать файл можно через Конфигуратор (Файл -> Открыть). Если же вам требуется создавать не географические, а сложные логические схемы процессов, возможно, более подходящим инструментом станут интерактивные диаграммы PlantUML.

Важный нюанс: Названия объектов на карте должны строго совпадать с наименованиями в справочнике Бизнес-регионы. При разработке собственных отчетов с картами рекомендуется использование типовой общей формы отчета, что обеспечит единообразный интерфейс и упростит поддержку.

Альтернативные методы

Если детализации формата .geo недостаточно, можно рассмотреть переход на использование Библиотеки интернет-поддержки (БИП). При этом для корректной работы с данными в типовых интерфейсах крайне важна правильная программная установка отборов в типовых отчетах, чтобы на карте отображались только актуальные для пользователя сегменты бизнеса. В современных релизах ERP интеграция с API Яндекс.Карт и Google Maps позволяет отображать динамические данные без необходимости ручного обновления файлов схем — в этом поможет модуль интеграции 1С с геосервисами и Яндекс.Картами.

← На главную