API для 1С: REST, HTTP-сервисы и OData
Делаем 1С доступной для сайтов, мобильных приложений, ботов и партнёров. REST API на HTTP-сервисах внутри 1С или стандартный интерфейс OData, обмен в JSON, с авторизацией, журналом и документацией.
- REST API 1С в JSON под ваши сценарии, а не сырые таблицы
- Стандартный OData для быстрого чтения каталога и остатков
- Авторизация, ограничения доступа и журнал запросов
- Документация для разработчиков внешней системы
API для 1С на HTTP-сервисах стоит от 350 000 тенге и занимает две-три недели. Вариант с кэшем, очередью и ограничением нагрузки занимает от четырёх недель.
Зачем 1С нужен API
Когда к данным 1С должны обращаться другие системы, и делать это надёжно.
1С хранит главное: товары, цены, остатки, клиентов, заказы, долги. Рано или поздно эти данные нужны снаружи. Сайту нужен каталог, мобильному приложению торгового представителя остатки и цены клиента, Telegram-боту статус заказа, партнёру прайс в своём формате.
Типичная картина без API: менеджер раз в день выгружает Excel с остатками и отправляет партнёрам, сайт обновляется ночным файлом, а мобильное приложение показывает данные вчерашнего дня. Каждый канал живёт со своей задержкой.
Без API обмен строится на выгрузках файлов, ручных отчётах или прямом доступе к базе данных, который ломается при каждом обновлении. API для 1С делает обмен предсказуемым: внешняя система отправляет запрос и получает ответ в понятном формате JSON, а правила доступа и проверки остаются внутри 1С.
Ещё один довод за API: скорость изменений. Когда появляется новое приложение или новый партнёр, его подключают к уже работающему API, а не строят ещё один отдельный обмен. Через год у компании не пять разных выгрузок, которые никто не помнит, а один понятный вход в 1С с журналом и правами.
Хороший API живёт годами. Конфигурация обновляется, внутренние таблицы меняются, а внешний контракт остаётся прежним, и приложению не нужно ничего переделывать.
Три способа открыть данные 1С
Выбор зависит от задачи: читать, писать или и то и другое.
| Способ | Когда подходит | Срок и цена |
|---|---|---|
| Стандартный интерфейс OData | быстрое чтение каталога, остатков, справочников | 2-3 недели, от 350 000 ₸ |
| HTTP-сервис (REST API в JSON) | двусторонний обмен, своя логика, приложения | 2-3 недели, от 350 000 ₸ |
| HTTP-сервис с кэшем и очередью | высокая нагрузка, много клиентов, мгновенные события | от 4 недель |
| Веб-сервис SOAP | партнёр или госсистема требует SOAP | по оценке |
Отдельно бывает нужен обратный путь: 1С сама сообщает внешней системе о событии. Например, заказ отгружен или поступила оплата. Тогда 1С вызывает адрес внешней системы сразу после проведения документа, и приложение узнаёт о событии за секунды, а не при следующем опросе.
Для большинства задач мы рекомендуем HTTP-сервис: внешней системе не нужно знать внутреннее устройство конфигурации, а логика проверок остаётся в 1С. OData хорош там, где нужен быстрый старт на чтение. Сравнение двух подходов с примерами в статье OData или HTTP-сервисы.
REST API на HTTP-сервисах 1С
Основной способ для приложений, сайтов и ботов.
HTTP-сервис это объект конфигурации 1С, который принимает обычные HTTP-запросы и отвечает в JSON. Мы проектируем его под ваши сценарии, а не под структуру базы. Например, вместо выдачи всей таблицы остатков приложение спрашивает «остатки товаров этой категории на складе в Астане» и получает короткий ответ.
Типичный набор методов REST API 1С для торговой компании:
- каталог с характеристиками и изменениями с момента последнего запроса;
- цены по типу цен клиента и остатки по складам;
- создание заказа с проверкой цены, остатка и лимита долга;
- статус заказа, отгрузки и оплаты;
- карточка клиента: долг, бонусы, история покупок.
Для каталогов от десятков тысяч позиций добавляем постраничную выдачу и выборку изменений: приложение получает не весь каталог при каждом запросе, а только то, что изменилось с прошлого раза. Это снижает трафик и нагрузку на сервер в десятки раз.
HTTP-сервис добавляем в расширение конфигурации, поэтому типовая остаётся на поддержке. Публикация идёт через веб-сервер, который уже стоит у вас или который мы настроим.
Стандартный интерфейс OData в 1С
Готовый механизм платформы для быстрого чтения данных.
Стандартный интерфейс OData в 1С появился давно и поддерживается всеми современными конфигурациями на платформе 8.3. Для многих задач чтения это самый быстрый способ получить REST API 1С без единой строки кода внутри базы.
Платформа 1С:Предприятие 8.3 умеет автоматически публиковать объекты конфигурации по протоколу OData. Для этого не нужно писать код в 1С: достаточно выбрать состав объектов и опубликовать базу на веб-сервере. Внешняя система сразу может читать справочники, документы и регистры.
Ограничения OData важно понимать заранее. Внешняя система работает с внутренними именами объектов 1С, поэтому при изменении конфигурации её запросы могут сломаться. Запись через OData обходит часть бизнес-логики, поэтому для создания документов мы его не используем. И на больших объёмах OData нагружает сервер сильнее, чем специально спроектированный метод.
Запросы к OData пишутся в стандартном виде: фильтры, выбор полей, сортировка, постраничная выдача. Многие готовые инструменты аналитики и интеграционные платформы умеют работать с OData напрямую, и это ещё один повод использовать его для чтения.
Хорошая схема на практике: OData для чтения каталога и остатков на старте, HTTP-сервис для записи заказов и для всего, что растёт.
Безопасность и нагрузка
API открывает доступ к учёту. Значит, его нужно защищать.
- Отдельный пользователь с минимальными правами. API видит только то, что ему нужно, и не может, например, менять цены.
- Авторизация по токену или логину. Каждая внешняя система получает свой доступ, который можно отключить отдельно.
- HTTPS. Данные между 1С и внешней системой передаются в зашифрованном виде.
- Журнал запросов. Кто, когда и что спрашивал, с какой ошибкой. Это первое место, куда смотрим при любом сбое.
- Ограничение частоты. Внешняя система не может завалить 1С запросами и затормозить работу бухгалтерии.
- Кэш для частых запросов. Каталог и остатки отдаются из кэша, а не пересчитываются при каждом обращении.
Для запросов, которые меняют данные, например создание заказа, добавляем защиту от повторов. Если связь оборвалась и приложение отправило заказ дважды, 1С создаст его один раз. Без этого дубли заказов появляются при каждом плохом интернете у торгового представителя.
Для мобильных приложений с тысячами пользователей ставим промежуточный слой: приложение обращается к нему, а он раз в несколько минут синхронизируется с 1С. Тогда нагрузка на 1С не зависит от числа пользователей.
Как мы разрабатываем API для 1С
От сценариев к методам, от методов к документации.
- Сценарии. Что делает внешняя система: показывает каталог, создаёт заказ, проверяет долг. Из сценариев получаем список методов.
- Контракт. Формат запросов и ответов в JSON, коды ошибок. Согласуем с разработчиками внешней системы до начала кода.
- Разработка. HTTP-сервис в расширении на копии базы, с проверками и журналом.
- Тестовый стенд. Внешняя система подключается к копии и проверяет все сценарии на реальных данных.
- Публикация. Настройка веб-сервера, HTTPS, прав, ограничений.
- Документация. Описание методов с примерами запросов и ответов, чтобы любой разработчик мог подключиться без нас.
Версионирование закладываем с первого дня. Когда нужно изменить формат ответа, появляется новая версия метода, а старая продолжает работать, пока все внешние системы не перейдут. Так обновление API не останавливает работающие приложения.
Весь путь для API под одну задачу обычно занимает 2-3 недели, из них неделя уходит на тестирование вместе с разработчиками внешней системы.
Если внешнюю систему тоже делаем мы, например сайт или мобильное приложение, контракт проектируем один раз для обеих сторон.
Для каких задач нужен API
Самые частые сценарии у компаний Казахстана.
Мобильное приложение для торговых представителей. Каталог, цены клиента, остатки, создание заказа с проверкой долга. Само приложение делает наша команда Applications.kz, API со стороны 1С делаем мы.
Сайт и личный кабинет B2B-клиента. Клиент видит свои цены, остатки, историю заказов, акты сверки и долг. Подробнее на странице интеграции 1С с сайтом.
Telegram-бот и уведомления. Бот спрашивает у 1С статус заказа или остаток, а 1С сама отправляет уведомления о событиях.
Склад и ТСД. Терминалы сбора данных и складские приложения получают задания на сборку и отправляют результаты в 1С без файлов и ручного переноса. Подробнее на странице автоматизации склада.
Партнёры и поставщики. Дилер получает прайс и остатки автоматически, а не ждёт файл по почте.
Аналитика и дашборды. Данные 1С уходят в BI-систему или в свой дашборд. Об этом на странице отчётов для 1С.
Сколько стоит API для 1С
Цена зависит от количества методов, нагрузки и состояния базы.
| Работа | Срок | Стоимость |
|---|---|---|
| Публикация OData для чтения | 2-3 недели | от 350 000 ₸ |
| HTTP-сервис под одну задачу | 2-3 недели | от 350 000 ₸ |
| REST API с кэшем, лимитами и журналом | от 4 недель | по оценке |
| Обмен с очередью и событиями | 6-10 недель | 1 500 000-3 000 000 ₸ |
| Поддержка API | ежемесячно | от 80 000 ₸/мес |
Работу удобно разбить на этапы: сначала методы чтения, на которых внешняя система уже может работать, затем запись заказов и события. Каждый этап принимаете на тестовом стенде до оплаты следующего.
Документация и тестовый стенд входят в стоимость. Дороже выходит, если в базе много старых правок типовой без описания: на разбор нужно время. Дешевле, если внешнюю систему делаем тоже мы и контракт не нужно согласовывать с третьей стороной.
Частые ошибки при открытии данных 1С
Что мы чиним после чужих интеграций.
Большинство этих ошибок появляются не от небрежности, а от спешки: API нужен вчера, и его делают так, чтобы заработало сегодня. Через полгода экономия оборачивается остановкой продаж.
- Прямой доступ к базе SQL. Внешняя система читает таблицы напрямую. Работает до первого обновления, потом ломается без предупреждения.
- Пользователь API с полными правами. Ошибка в приложении может изменить или удалить данные учёта.
- Запись документов через OData. Документ создаётся в обход проверок, и потом бухгалтерия разбирается, откуда он взялся.
- Нет журнала. При сбое невозможно понять, отправил ли сайт заказ и что ответила 1С.
- Нет документации. Разработчик, который делал API, ушёл, и никто не знает, какие методы есть и как их вызывать.
Почему мы
Видим обмен с обеих сторон и оставляем вам документацию.
Мы программируем 1С и разрабатываем сайты, приложения и ботов. Поэтому проектируем API так, чтобы им было удобно пользоваться, а не только чтобы он работал. Контракт, документация, тестовый стенд и журнал входят в работу по умолчанию.
Работаем со всем Казахстаном удалённо. К копии базы подключаемся через доступ, который вы контролируете, публикацию на рабочем сервере делаем в согласованное время, чтобы не мешать сотрудникам.
Код делаем в расширении, типовая конфигурация обновляется штатно. Исходники и документацию передаём вам. Если у вас есть свой программист 1С или внешний разработчик, он продолжит без нас. Если нужны доработки логики в самой 1С, их делает тот же программист 1С, который пишет API.
Частые вопросы об API для 1С
О REST API, OData и безопасности.
Есть ли у 1С готовый REST API?
Платформа умеет публиковать стандартный интерфейс OData, это готовый REST для чтения. Для записи и своей логики делаем HTTP-сервис, который отвечает в JSON.
Сколько стоит разработка API для 1С?
От 350 000 ₸ за HTTP-сервис под одну задачу или публикацию OData, срок 2-3 недели. API с кэшем, лимитами и журналом от 4 недель.
Что лучше: OData или HTTP-сервис?
OData быстрее запустить для чтения. HTTP-сервис стабильнее при обновлениях и безопаснее для записи, потому что проверки остаются в 1С.
Не затормозит ли API работу 1С?
Нет, если ограничить частоту запросов и кэшировать частые ответы. Для приложений с тысячами пользователей ставим промежуточный слой.
Нужен ли веб-сервер для API 1С?
Да, HTTP-сервисы и OData публикуются через веб-сервер Apache или IIS. Настроим его вместе с HTTPS, если его ещё нет.
Сломается ли API после обновления 1С?
HTTP-сервис в расширении переживает обновления типовой. Контракт для внешней системы остаётся прежним, даже если внутри 1С что-то изменилось.
Работает ли API с файловой базой 1С?
Технически да, но для постоянной нагрузки рекомендуем клиент-серверный вариант. Поможем с выбором сервера.
Даёте документацию к API?
Да, всегда: описание методов, примеры запросов и ответов, коды ошибок. Плюс тестовый стенд на копии базы.
Ещё по 1С
Смежные задачи, которые обычно решаются вместе.
Оставить заявку
Опишите задачу: ответим в течение рабочего дня, оценку даём до начала работ.
Другие IT-услуги для бизнеса в Алматы
Запускаем под ключ за 4-12 недель. 19 лет в Казахстане, 27 штатных специалистов.