К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как добавить карту в 1С: практическое руководство

Как добавить карту в 1С: через HTML-поле, API Яндекс.Карт и Google Maps, геокодирование адресов, вывод точек на форме. Пошаговые инструкции и типичные ошибки.

Задача «добавить карту в 1С» обычно возникает, когда нужно показать адреса клиентов на схеме, построить маршрут для курьеров, отобразить торговые точки или проверить корректность введённого адреса. Платформа 1С не содержит встроенного картографического движка, поэтому карту подключают через внешние сервисы — чаще всего Яндекс.Карты или Google Maps — и отображают внутри формы с помощью поля HTML-документа.

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

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

Определите, какой сценарий вам нужен

Способ добавления карты зависит от задачи. Если нужно просто посмотреть адрес контрагента на карте — в типовых конфигурациях это делается без доработок. Если нужна своя карта на форме обработки с несколькими маркерами, кластеризацией и обработкой кликов — потребуется разработка на встроенном языке 1С и JavaScript.

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

Маршрут решения

Как выбрать действие

Нужно просто посмотреть адрес клиента на картеИспользуйте штатную команду «Показать на карте» в карточке контрагента или адресе
Нужна карта на форме обработки с точками и маршрутамиДобавьте поле HTML-документа и подключите API карт через JavaScript
Нужно массово получить координаты адресовНастройте геокодирование через HTTP-запросы к API сервиса
Работа идёт без доступа к интернетуОнлайн-карты не подойдут — рассмотрите офлайн-решения или отказ от картографии

Как показать адрес на карте без программирования

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

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

Учтите, что адрес должен быть заполнен корректно: страна, город, улица, дом. Если адрес введён произвольным текстом («склад у железных ворот»), картографический сервис не сможет его найти, и точка не появится.

Как добавить карту на форму через поле HTML-документа

Основной способ встроить интерактивную карту в собственную форму — использовать реквизит формы типа «Строка» и элемент формы «Поле HTML-документа». В реквизит помещается HTML-код страницы с подключённым API карт, а платформа отрисовывает его встроенным браузерным движком.

Общая последовательность такова: создайте обработку или откройте форму нужного объекта в конфигураторе, добавьте реквизит формы (например, «ПолеКарты», тип «Строка», неограниченная длина), перетащите его на форму и установите вид «Поле HTML-документа». Затем при создании формы на сервере или при открытии сформируйте HTML-текст и присвойте его реквизиту.

Порядок действий
  1. 1
    Получите API-ключ в кабинете разработчика выбранного картографического сервиса
  2. 2
    В конфигураторе добавьте на форму реквизит типа «Строка» и элемент «Поле HTML-документа»
  3. 3
    Сформируйте HTML-код страницы с подключением API и контейнером карты
  4. 4
    Присвойте HTML-текст реквизиту формы в обработчике ПриСозданииНаСервере или по команде
  5. 5
    Передайте координаты точек в JavaScript-код страницы
  6. 6
    Откройте форму в режиме предприятия и проверьте отображение карты и маркеров

Пример минимального HTML-кода для Яндекс.Карт (ключ подставьте свой):

<html>

<head>

<script src="https://api-maps.yandex.ru/2.1/?apikey=ВАШ_КЛЮЧ&lang=ru_RU"></script>

</head>

<body>

<div id="map"></div>

<script>

ymaps.ready(function () {

var map = new ymaps.Map("map", { center: [55.76, 37.64], zoom: 10 });

map.geoObjects.add(new ymaps.Placemark([55.76, 37.64], { balloonContent: "Точка" }));

});

</script>

</body>

</html>

Координаты и подписи маркеров удобно формировать на стороне 1С, подставляя их в шаблон HTML строковой заменой. Так карта сразу откроется с нужными точками из вашей базы.

Как получить координаты адресов (геокодирование)

Карта работает с координатами — широтой и долготой, а в базе 1С обычно хранятся текстовые адреса. Преобразование адреса в координаты называется геокодированием. Его выполняют через HTTP-запрос к API картографического сервиса: отправляете строку адреса, получаете в ответ координаты в формате JSON.

В 1С это делается через объект HTTPСоединение и HTTPЗапрос. Ответ разбирается штатным объектом ЧтениеJSON. Полученные координаты имеет смысл сохранить в базе (например, в дополнительных сведениях или отдельном регистре), чтобы не запрашивать их повторно при каждом открытии карты — это ускорит работу и сократит расход лимита запросов.

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

Вывод нескольких точек и обратная связь с 1С

Для отображения множества точек — например, всех заказов за день — сформируйте массив координат и подписей в 1С, сериализуйте его в JSON и вставьте в JavaScript-код страницы. В цикле на стороне JavaScript создайте метки и добавьте их на карту. При большом числе точек используйте кластеризацию, иначе карта будет перегружена и станет медленной.

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

Храните в базе не только координаты, но и сам адрес, по которому они получены. Если адрес в карточке изменили, сравнение позволит понять, что координаты устарели и их нужно запросить заново.
ПЗ
Практическое замечание

Тонкие места: клиент, браузерный движок и безопасность

Поле HTML-документа использует браузерный движок, встроенный в платформу, и его возможности зависят от версии платформы 1С. Устаревшие движки могут не поддерживать современный JavaScript, из-за чего карта не отрисуется. Если карта не отображается в тонком клиенте, но работает в браузере — вероятно, проблема именно в движке, и стоит проверить обновление платформы.

API-ключ, встроенный в HTML-код, теоретически доступен пользователям. По возможности ограничьте ключ в кабинете разработчика: привяжите его к разрешённым реферерам или IP-адресам, чтобы им не могли воспользоваться посторонние. Расход лимитов чужими запросами — частая причина внезапной остановки работы карты.

В веб-клиенте дополнительно проверьте, что страница 1С и запросы к API карт загружаются по согласованным протоколам: если база опубликована по HTTPS, а ресурсы подгружаются по HTTP, браузер может заблокировать смешанный контент.

Типичные ошибки
01
Не введён или неверный API-ключ — карта показывает заглушку или не грузится вовсе
02
Координаты подставлены в формате с запятой как разделителем дробной части вместо точки — точки уезжают или не отображаются
03
Геокодирование выполняется при каждом открытии формы — лимит запросов исчерпывается за часы
04
Адрес хранится произвольным текстом без структуры — сервис не находит объект
05
Тестирование только в тонком клиенте — в веб-клиенте карта ведёт себя иначе и ломается у пользователей

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

После внедрения пройдите по контрольным точкам: карта открывается на форме без ошибок, точки стоят в правильных местах (сверьте несколько известных адресов визуально), при изменении адреса координаты обновляются, при отсутствии интернета пользователь видит понятное сообщение, а не пустое окно.

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

Контрольные точки

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

Отображение карты на форме
Норма

Карта загружается, центрируется на нужной области, маркеры видны

Тревожный признак

Пустая область, сообщение об ошибке ключа или бесконечная загрузка

Точность точек
Норма

Маркеры стоят на реальных адресах, проверенных визуально

Тревожный признак

Точки смещены, попадают в другой город или в нулевые координаты

Расход лимитов API
Норма

Число запросов в кабинете сервиса соответствует ожидаемой нагрузке

Тревожный признак

Резкий рост запросов — вероятно, геокодирование вызывается лишний раз

Работа без интернета
Норма

Пользователь получает понятное уведомление, форма не зависает

Тревожный признак

Ошибка платформы или зависание формы

Частые вопросы

Можно ли добавить карту в 1С без доработки конфигурации?

Частично. Многие типовые конфигурации умеют показывать адрес контрагента на карте штатной командой. Но полноценная карта на собственной форме с вашими точками требует доработки — добавления поля HTML-документа и кода формирования страницы.

Какой картографический сервис выбрать для 1С?

Чаще используют Яндекс.Карты из-за качества данных по России и СНГ и понятного API. Google Maps выбирают, если нужны зарубежные адреса. Сравните условия бесплатных тарифов и лимиты обоих сервисов применительно к вашей нагрузке.

Почему карта работает у разработчика, но не у пользователей?

Типичные причины: у пользователей нет доступа в интернет или прокси блокирует запросы к API, старая версия платформы на их компьютерах, отсутствие прав на объекты, которые читает код карты. Проверяйте решение под профилем обычного пользователя.

Можно ли использовать карты без интернета?

Онлайн-API Яндекса и Google без интернета не работают. Для закрытого контура существуют офлайн-решения с локальными тайлами карт, но их внедрение существенно сложнее и требует отдельного лицензирования картографических данных.

Как избежать перерасхода лимита запросов на геокодирование?

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

Работает ли поле HTML-документа в веб-клиенте?

Да, но поведение и поддерживаемые события могут отличаться от тонкого клиента. Тестируйте интерактивные функции — клики по карте, передачу данных в 1С — именно в том клиенте, в котором будут работать пользователи.

Итог

Что важно запомнить

Карту в 1С добавляют через поле HTML-документа и API Яндекс.Карт или Google Maps; в типовых конфигурациях сначала проверьте штатную команду показа адреса. Получите API-ключ, сохраняйте координаты в базе, ограничьте ключ от постороннего использования и тестируйте решение под профилем обычного пользователя.