API 1С: ERP: расширение функционала и интеграция с внешними системами
В современном бизнесе система 1С: ERP — это не просто система учета, а центральный хаб данных, который должен взаимодействовать с CRM, маркетплейсами, бухгалтерскими сервисами и другими платформами. В этой статье разберем, как API системы 1С: ERP позволяет расширять возможности системы и интегрировать ее с внешними сервисами, а также рассмотрим три ключевых способа подключения: COM, OData и REST API.
1. Зачем нужно API в 1С: ERP
Система 1С: ERP — мощный инструмент, который должен связываться с другими программами, к примеру для:
– Автоматизировании рутинных операций(выгрузка отчетов, создание документов).
– Интегрирования с CRM, маркетплейсами, ERP-системами.
– Связи с мобильными приложениямина основе данных из 1С.
Но не все API одинаковы. Рассмотрим три самых частых подхода к интеграции.
2. Три способа подключения к системе 1С: ERP
2.1. COM-соединение (устаревший, но надежный метод)
COM (Component Object Model) — технология Microsoft для локального взаимодействия программ. В 1С используется для автоматизации из внешних приложений (Excel, C#, Python).
Как работает?
– 1С запускается как COM-объект.
– Внешняя программа (например, Python-скрипт) подключается к 1С и выполняет код на встроенном языке.
Плюсы:
✅ Работает даже в старых версиях 1С.
✅ Высокая скорость (локальное подключение).
✅ Полный доступ к данным (можно выполнять любые запросы).
Минусы:
❌ Только для Windows (нет поддержки Linux/macOS).
❌ Требует установленного 1С на машине.
❌ Менее безопасен (нет встроенной аутентификации).
Пример:
// Создаем COM-соединение с Excel
Excel = Новый COMОбъект(“Excel.Application”);
Excel.Visible = Истина; // Показать Excel
Книга = Excel.Workbooks.Add(); // Новая книга
Лист = Книга.Worksheets(1); // Первый лист
// Запись данных в Excel
Лист.Cells(1, 1).Value = “Номенклатура”;
Лист.Cells(1, 2).Value = “Количество”;
// Чтение данных из 1С и запись в Excel
Запрос = Новый Запрос;
Запрос.Текст = “ВЫБРАТЬ Наименование, Остаток ИЗ Справочник.Номенклатура”;
Результат = Запрос.Выполнить().Выгрузить();
Для Сч = 1 По Результат.Количество() Цикл
Лист.Cells(Сч+1, 1).Value = Результат[Сч-1].Наименование;
Лист.Cells(Сч+1, 2).Value = Результат[Сч-1].Остаток;
КонецЦикла;
Когда использовать?
– Если нужно быстро автоматизировать задачи на Windows.
– Если REST API недоступен(например, в 1С: ERP 8.2).
2.2. OData (стандартизированный REST для 1С)
Что это?
OData — протокол для доступа к данным через HTTP. В системе 1С: ERP встроен начиная с версии 8.3.10+.
Как работает?
– Данные доступны по URL (/odata/standard.odata/).
– Поддерживает сложные запросы($filter, $expand).
– Возвращает данные в JSON/XML.
Плюсы:
✅ Стандартизированный синтаксис (легко интегрировать с Power BI, SAP).
✅ Метаданные (/$metadata) — клиент сам понимает структуру API.
✅ Поддержка связей между таблицами ($expand=Договоры).
Минусы:
❌ Сложнее REST API (нужно учить синтаксис $filter).
❌ Не все конфигурации 1С поддерживают OData.
Пример запроса:
http
GET /odata/standard.odata/Document_Заказ?$filter=Дата ge 2024-01-01&$select=Номер,Сумма
Когда использовать?
– Если нужна интеграция с BI-системами(Power BI, Tableau).
– Если система 1С: ERP поддерживает OData(проверьте в настройках)
2.3. REST API (гибкость и простота)
Что это?
REST API — это HTTP-интерфейс для работы с 1С без строгих стандартов. Доступен в 1С: ERP 2.x.
Как работает?
– Данные передаются в JSON.
– Используются стандартные HTTP-методы (GET, POST, PUT, DELETE).
– Аутентификация через Basic Auth или OAuth 2.0.
Плюсы:
✅ Проще, чем OData (нет сложных параметров).
✅ Подходит для мобильных приложений.
✅ Можно использовать с любым языком (Python, JavaScript, C#).
Минусы:
❌ Нет стандартизации (каждый API свой).
❌ Меньше возможностей для фильтрации, чем в OData.
Вызов внешнего REST API из 1С:
// Отправка данных в CRM
Функция ОтправитьВCRM(ДанныеКонтрагента)
// Подготовка данных
Тело = Новый Структура;
Тело.Вставить(“name”, ДанныеКонтрагента.Наименование);
Тело.Вставить(“inn”, ДанныеКонтрагента.ИНН);
Тело.Вставить(“phone”, ДанныеКонтрагента.Телефон);
// Создаем HTTP-запрос
Запрос = Новый HTTPЗапрос(“https://crm.example.com/api/v1/customers”);
Запрос.УстановитьТелоИзСтроки(JSON.stringify(Тело));
Запрос.Заголовки.Вставить(“Content-Type”, “application/json”);
Запрос.Заголовки.Вставить(“Authorization”, “Bearer ” + КлючAPI);
// Отправляем POST-запрос
HTTP = Новый HTTPСоединение(,,,Истина); // Используем HTTPS
Ответ = HTTP.Отправить(Запрос, “POST”);
// Обрабатываем ответ
Если Ответ.КодСостояния = 200 Тогда
Возврат Истина;
Иначе
Сообщить(“Ошибка: ” + Ответ.ПолучитьТелоКакСтроку());
Возврат Ложь;
КонецЕсли;
КонецФункции
Когда использовать?
– Если OData не поддерживаетсяили слишком сложен.
– Если нужна быстрая интеграция с веб-сервисами.
3. Что выбрать: COM, OData или REST API
Критерий | COM | OData | REST API |
Поддержка ОС | Только Windows | Любая | Любая |
Скорость | Высокая (локально) | Средняя | Средняя/Низкая |
Сложность | Средняя | Высокая | Низкая |
Гибкость | Полный доступ к 1С | Стандартные запросы | Зависит от разработчика |
Безопасность | Низкая | Средняя | Высокая |
Вывод:
– COM— если нужно локальное быстрое решение под Windows.
– OData— если важна стандартизация и интеграция с BI.
– REST API— если нужна простота и кроссплатформенность.
4. Практические кейсы интеграции с внешними системами
4.1. Система 1С: ERP + Wildberries (REST API)
– Задача:Автоматически выгружать остатки и заказы.
– Решение:
// Получение заказов с Wildberries
Функция ПолучитьЗаказыWB()
// Настройки подключения
КлючAPI = “ваш_api_ключ”;
URL = “https://suppliers-api.wildberries.ru/api/v2/orders”;
// Формируем запрос
Запрос = Новый HTTPЗапрос(URL);
Запрос.Заголовки.Вставить(“Authorization”, КлючAPI);
// Отправляем запрос
HTTP = Новый HTTPСоединение();
Ответ = HTTP.Получить(Запрос);
// Обрабатываем ответ
Если Ответ.КодСостояния = 200 Тогда
Данные = ПрочитатьJSON(Ответ.ПолучитьТелоКакСтроку());
// Создаем документы в 1С
Для каждого Заказ Из Данные Цикл
НовыйЗаказ = Документы.ЗаказПокупателя.СоздатьДокумент();
НовыйЗаказ.Дата = ТекущаяДата();
НовыйЗаказ.Контрагент = Справочники.Контрагенты.НайтиПоИНН(Заказ.inn);
// … заполнение других полей
НовыйЗаказ.Записать();
КонецЦикла;
Возврат Истина;
Иначе
Сообщить(“Ошибка при получении заказов: ” + Ответ.ПолучитьТелоКакСтроку());
Возврат Ложь;
КонецЕсли;
КонецФункции
4.2. Система 1С: ERP + Power BI (OData)
– Задача:Построить дашборд по продажам.
– Решение:
— В Power BI
Источник = OData.Feed(“https://erp.company.com/odata/standard.odata/Document_Продажи”)
4.3. Система 1С: ERP + Excel (COM)
– Задача:Ежедневная выгрузка отчета в Excel.
– Решение:
Set v8 = CreateObject(“V83.COMConnector”)
Set conn = v8.Connect(“File=””C:\base\erp”””, “login”, “pass”)
conn.ВыгрузитьОтчетВExcel(“Продажи”, “C:\report.xlsx”)
Заключение:
Система 1С: ERP — это не изолированная система, а центр данных бизнеса. С помощью COM, OData и REST API можно:
– Автоматизировать рутину.
– Подключать CRM, маркетплейсы, аналитику.
– Создавать мобильные приложения.
Какой метод выбрать?
– COM— для локальных задач на Windows.
– OData— для аналитики и интеграции с корпоративными системами.
REST API — для веб-интеграций и простых сценариев.
Семёнкин Александр,
Специалист компании ООО “Кодерлайн”