При работе с управленческой отчетностью в 1С:ERP, 1С:Комплексная автоматизация или 1С:Управление торговлей пользователи часто сталкиваются с необходимостью визуализации данных на карте — для этого есть панель виджетов и диаграмм для визуализации данных. Однако стандартная карта бизнес-регионов может отсутствовать в базе или выдавать ошибку «неверный формат» при попытке ручной загрузки. В этой статье мы подробно разберем, где найти файлы географических схем, как правильно загрузить их программно и какие нюансы следует учитывать при работе в клиент-серверном режиме.
Многие ошибочно полагают, что карты нужно скачивать отдельно из интернета, однако файлы в формате .geo официально поставляются вместе с дистрибутивами конфигураций. Проанализируем стандартные пути размещения этих файлов на диске. Если у вас установлены шаблоны конфигураций, ищите их в папке с конкретным релизом:
...\1cv8\tmplts\1c\erp\[номер_версии]\AddFiles\GeographicalSchemes\
В этом каталоге обычно содержатся готовые схемы для России (часто с префиксом v8_422C_...), мира и отдельных регионов. Если вы не нашли эти файлы в папке текущей версии, попробуйте проверить архивы предыдущих релизов или извлечь их из другой информационной базы, где функционал карт уже настроен.
Выясним причину, по которой стандартная загрузка через интерфейс или простая попытка записи в константу ГеографическаяСхемаДляОтчетов часто терпит неудачу. Чтобы проверить текущее состояние настроек в вашей базе, можно использовать специальную обработку на просмотр констант и их значений (удобно через редактор констант и объектов базы данных).
Система 1С ожидает, что в константе будет храниться не просто двоичный файл схемы, а объект типа ХранилищеЗначения, внутри которого находится Структура с определенными полями. Рассмотрим обязательный состав этой структуры:
ГеографическаяСхема.Если попытаться загрузить файл напрямую, без упаковки в структуру, система не сможет распознать данные, что и приводит к ошибке формата.
Рассмотрим наиболее надежный способ загрузки схемы, который корректно работает как в файловом, так и в клиент-серверном варианте базы данных. Стоит учесть, что в современных конфигурациях на базе БСП хорошим тоном считается выбор и чтение файла с применением асинхронных методов, однако для понимания сути процесса разберем классический алгоритм с использованием временного хранилища.
Создадим на форме команду и опишем следующий программный код:
&НаКлиенте
Процедура ЗагрузитьКарту(Команда)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.Фильтр = "Географическая схема (*.geo)|*.geo";
ДиалогОткрытияФайла.Заголовок = "Выберите файл карты";
Если ДиалогОткрытияФайла.Выбрать() Тогда
ВыбранныйФайл = Новый Файл(ДиалогОткрытияФайла.ПолноеИмяФайла);
// Передаем двоичные данные во временное хранилище
ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ВыбранныйФайл.ПолноеИмя);
АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайла);
// Вызываем серверную процедуру для записи в константу
ЗагрузитьКартуНаСервере(АдресХранилища, ВыбранныйФайл.ИмяБезРасширения);
Сообщить("Карта успешно загружена!");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьКартуНаСервере(АдресХранилища, ИмяФайла)
// Создаем временный файл на сервере для чтения схемы
ПутьНаСервере = ПолучитьИмяВременногоФайла(".geo");
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресХранилища);
ДвоичныеДанные.Записать(ПутьНаСервере);
// Инициализируем объект ГеографическаяСхема
ГеоСхема = Новый ГеографическаяСхема;
Попытка
ГеоСхема.Прочитать(ПутьНаСервере);
Исключение
ВызватьИсключение "Не удалось прочитать файл географической схемы!";
КонецПопытки;
// Формируем требуемую структуру хранения
СтруктураХранения = Новый Структура("Название, ГеоСхема");
СтруктураХранения.Вставить("Название", ИмяФайла);
СтруктураХранения.Вставить("ГеоСхема", ГеоСхема);
// Записываем данные в константу
Константы.ГеографическаяСхемаДляОтчетов.Установить(Новый ХранилищеЗначения(СтруктураХранения));
// Удаляем временный файл
УдалитьФайлы(ПутьНаСервере);
КонецПроцедуры
В этом примере мы проанализировали важность использования метода ПоместитьВоВременноеХранилище. Он позволяет избежать проблем с правами доступа, так как серверу 1С не требуется напрямую обращаться к локальному диску пользователя.
Посмотрим на ситуацию, когда база работает на SQL-сервере. Важно понимать, что метод ГеографическаяСхема.Прочитать() выполняется на стороне сервера приложений 1С. Если вы укажете путь к файлу как C:\my_map.geo, система будет искать этот файл на жестком диске сервера.
Практический совет: если вы не хотите писать код, можно загрузить карту в файловом режиме.
Стандартные карты .geo часто требуют обновления под текущее административное деление. Отредактировать файл можно через Конфигуратор (Файл -> Открыть). Если же вам требуется создавать не географические, а сложные логические схемы процессов, возможно, более подходящим инструментом станут интерактивные диаграммы PlantUML.
Важный нюанс: Названия объектов на карте должны строго совпадать с наименованиями в справочнике Бизнес-регионы. При разработке собственных отчетов с картами рекомендуется использование типовой общей формы отчета, что обеспечит единообразный интерфейс и упростит поддержку.
Если детализации формата .geo недостаточно, можно рассмотреть переход на использование Библиотеки интернет-поддержки (БИП). При этом для корректной работы с данными в типовых интерфейсах крайне важна правильная программная установка отборов в типовых отчетах, чтобы на карте отображались только актуальные для пользователя сегменты бизнеса. В современных релизах ERP интеграция с API Яндекс.Карт и Google Maps позволяет отображать динамические данные без необходимости ручного обновления файлов схем — в этом поможет модуль интеграции 1С с геосервисами и Яндекс.Картами.