В процессе сопровождения или аудита конфигурации «1С:Управление торговлей» часто возникает задача выявления всех активных каналов передачи данных на внешние ресурсы. Проблема заключается в том, что современная платформа 1С предоставляет десятки способов реализации интеграции — от типовых планов обмена до кастомных HTTP-сервисов и внешних расширений. Разберем пошагово, как провести комплексную ревизию базы и обнаружить все «точки соприкосновения» с сайтами.
Начнем аудит с наиболее очевидных мест, где разработчики фиксируют настройки интеграции. В типовых конфигурациях на базе БСП (Библиотеки стандартных подсистем) для обмена данными с сайтами (по протоколу CommerceML) используются специализированные планы обмена.
Рассмотрим порядок действий:
ОбменССайтом. Именно здесь хранятся настройки для типового обмена с CMS (Bitrix, UMI и др.).Если мы обнаружили заполненные узлы в планах обмена, необходимо проверить настройки в пользовательском режиме (раздел «Администрирование — Обмен с сайтом»), чтобы понять расписание и объем передаваемых данных.
Если обмен выполняется регулярно без участия пользователя, информация об этом обязательно должна присутствовать в планировщике заданий. Разберем, как найти скрытые процессы:
Проанализируем список в разделе Регламентные и фоновые задания. Нас интересуют задания, в имени или метаданных которых встречаются ключевые слова: «сайт», «обмен», «интеграция», «web», «http», «api». Однако помните, что разработчик мог назвать задание нейтрально, например, «Обновление остатков».
Важно понимать, что если обмен инициируется внешней системой (сайт сам запрашивает данные), то в регламентных заданиях 1С записи об этом может не быть.
Когда сайт выступает инициатором запроса, он обращается к 1С через опубликованные HTTP или Web-сервисы. Это один из самых надежных способов найти «входные ворота» в базу. Проанализируем файл публикации:
default.vrd.<httpServices> и <wsDefinitions>.В этом файле перечислены все программные интерфейсы, доступные извне. Даже если в конфигурации сервис называется ИнтеграцияСВнешнейСистемой, в файле публикации мы увидим его URL-шаблон, который поможет соотнести его с конкретным сайтом.
Если обмен написан «вручную» и не привязан к стандартным планам, нам поможет глобальный поиск (Ctrl+Shift+F). Выясним причину активности, выполнив поиск по следующим ключевым объектам и строкам:
HTTPСоединение — основной объект для инициации исходящих запросов из 1С.WinHttp.WinHttpRequest или MSXML2.ServerXMLHTTP — использование COM-объектов (характерно для старого кода или специфических обменов через Windows-библиотеки).http:// или https:// — поиск жестко прописанных URL-адресов..php, .aspx, .json — расширения скриптов, к которым может обращаться 1С.Пример поиска вызовов API может выглядеть так:
// Пример типичного кода, который мы ищем в модулях
Соединение = Новый HTTPСоединение("api.mysite.ru", 443,,,,, Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("/v1/products/update");
Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);
Современная архитектура 1С позволяет внедрять обмены без изменения основной конфигурации. Рассмотрим подробнее этот аспект:
Иногда код в 1С вообще отсутствует, а сайт забирает данные напрямую. Проанализируем ситуацию с REST API:
Проверим, включен ли в системе Стандартный интерфейс OData. Если он активен, внешняя система может читать любые справочники и документы, просто зная структуру метаданных 1С. Проверить доступность можно, попытавшись открыть в браузере адрес вида: http://server/base/odata/standard.odata/$metadata.
Если статический анализ кода не дал результатов, перейдем к мониторингу активности в реальном времени. Рассмотрим два способа:
Способ 1: Отладка сервисов. В конфигураторе включим автоматическое подключение к веб-сервисам и HTTP-сервисам (меню «Отладка — Подключение — Автоматическое подключение»). Если обмен произойдет, отладчик «остановит» выполнение кода в точке входа, и мы сможем изучить стек вызовов.
Способ 2: Логирование в Журнал регистрации. Если мы подозреваем конкретный HTTP-сервис, но не понимаем, когда он вызывается, добавим в начало его методов код записи в журнал:
ЗаписьЖурналаРегистрации("ОбменССайтом.ВызовСервиса",
УровеньЖурналаРегистрации.Информация, , ,
"Вызван метод: ИмяМетода, Параметры: " + СтрокаЗапроса);
Спустя некоторое время проанализируем Журнал регистрации, чтобы увидеть активность внешних систем и IP-адреса, с которых приходят запросы.
Для работы с сайтами почти всегда требуются логины и пароли. Посмотрим на настройки безопасности:
Проанализируем записи в регистре сведений БезопасноеХранилищеДанных (или аналогичных в зависимости от версии БСП). Наличие записей с именами, содержащими «token», «key», «password» в контексте веб-сервисов, однозначно укажет на настроенный обмен. Также проверим функциональные опции, такие как ИспользоватьОбменССайтами, которые активируют соответствующие интерфейсы в программе.