🔹 Введение
🔹 Возможности API
|
Источник
|
Поддерживаемые форматы
|
Что извлекается
|
|---|---|---|
|
Карточка компании
|
Изображение (картинка с реквизитами)
|
Юридически значимые реквизиты: ИНН, КПП, ОГРН, адрес, банковские данные
|
|
Файлы документов
|
PDF (с текстовым слоем), DOCX, DOC, TXT, RTF, HTML
|
Реквизиты сторон, номера и даты документов, подписанты, суммы
|
🔹 Технические параметры эндпоинта
|
Параметр
|
Значение
|
|---|---|
|
Метод
|
POST |
|
URL
|
https://api-k.ru/api/rekvizit_json |
|
Таймаут
|
Рекомендуется 120 секунд (для обработки больших файлов)
|
|
Кодировка
|
multipart/form-data |
|
Макс. размер файла
|
20 МБ
|
Заголовки запроса
|
Заголовок
|
Значение
|
Обязательно
|
|---|---|---|
X-API-Key |
Ваш уникальный ключ доступа
|
; Да
|
Content-Type |
multipart/form-data |
; Да (устанавливается автоматически)
|
Тело запроса
file — файл, поддерживаемые форматы текстовый PDF, docx, doc, rtf, txt, html.🟦 1С:Предприятие 8 (управляемые формы)
Процедура ОтправитьФайлНаСервере()
// 1. Проверка - выбран ли файл
Если ПустаяСтрока(ЭтотОбъект.ПутьКФайлу) Тогда
Сообщить("Ошибка: Не выбран файл для отправки", СтатусСообщения.Важное);
Возврат;
КонецЕсли;
// 2. Проверка наличия API-ключа
Если ПустаяСтрока(ЭтотОбъект.APIКлюч) Тогда
Сообщить("Ошибка: Не указан API-ключ", СтатусСообщения.Важное);
Возврат;
КонецЕсли;
// 3. Проверка существования файла
ФайлДляПроверки = Новый Файл(ЭтотОбъект.ПутьКФайлу);
Если Не ФайлДляПроверки.Существует() Тогда
Сообщить("Ошибка: Файл не найден по пути " + ЭтотОбъект.ПутьКФайлу, СтатусСообщения.Важное);
Возврат;
КонецЕсли;
// 4. Чтение файла в двоичные данные
ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ЭтотОбъект.ПутьКФайлу);
ИмяФайла = ФайлДляПроверки.Имя;
// 5. Формирование тела запроса (multipart/form-data) — ИСПРАВЛЕННЫЙ вариант
Граница = "----WebKitFormBoundary" + СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
Тело = Новый ПотокВПамяти;
ЗаписьДанных = Новый ЗаписьДанных(Тело, , , Символы.ВК + Символы.ПС, ""); // Ключ: CRLF и пустой РазделительСтрок
ЗаписьДанных.ЗаписатьСтроку("--" + Граница);
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; filename=""" + ИмяФайла + """");
ЗаписьДанных.ЗаписатьСтроку("Content-Type: application/octet-stream");
ЗаписьДанных.ЗаписатьСтроку(""); // Пустая строка перед данными
ЗаписьДанных.Записать(ДвоичныеДанныеФайла); // Двоичные данные файла
ЗаписьДанных.ЗаписатьСтроку(""); // Пустая строка после данных
ЗаписьДанных.ЗаписатьСтроку("--" + Граница + "--"); // Закрывающий разделитель
ЗаписьДанных.Закрыть();
ДвоичныеДанныеТела = Тело.ЗакрытьИПолучитьДвоичныеДанные();
// 6. Формирование HTTP-запроса
ИмяСервера = "api-k.ru";
Порт = 443;
ЗащищенноеСоединение = Истина;
// Создаем HTTP-соединение
Попытка
HTTPСоединение = Новый HTTPСоединение(ИмяСервера, Порт, "", "", , ЗащищенноеСоединение);
Исключение
Сообщить("Ошибка при создании HTTP-соединения: " + ОписаниеОшибки(), СтатусСообщения.Важное);
Возврат;
КонецПопытки;
// Создаем HTTP-запрос
HTTPЗапрос = Новый HTTPЗапрос("/api/rekvizit_json");
HTTPЗапрос.Заголовки.Вставить("X-API-Key", ЭтотОбъект.APIКлюч);
HTTPЗапрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + Граница);
HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ДвоичныеДанныеТела);
HTTPЗапрос.Заголовки.Вставить("Content-Length", XMLСтрока(ДвоичныеДанныеТела.Размер()));
// Отправляем запрос
Попытка
Ответ = HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
Если Ответ.КодСостояния = 200 Тогда
СтрокаОтвета = Ответ.ПолучитьТелоКакСтроку();
РазобратьИОтобразитьРезультат(СтрокаОтвета);
ЭтотОбъект.ОтветСервера = СтрокаОтвета;
Сообщить("Успешно! Файл обработан, реквизиты получены.", СтатусСообщения.Информация);
Иначе
СтрокаОшибки = Ответ.ПолучитьТелоКакСтроку();
ЭтотОбъект.ОтветСервера = СтрокаОшибки;
Сообщить("Ошибка HTTP " + Строка(Ответ.КодСостояния) + ": " + СтрокаОшибки, СтатусСообщения.Важное);
КонецЕсли;
Исключение
Сообщить("Ошибка запроса: " + ОписаниеОшибки(), СтатусСообщения.Важное);
КонецПопытки;
КонецПроцедуры
Структура ответа API
Успешный ответ (HTTP 200)
{
"data": {
"organization_name": "ООО «Пример»",
"inn": "7701234567",
"kpp": "770101001",
"ogrn": "1027700123456",
"address": "109457, г. Москва, ул. Привольная, д. 61, кв. 1",
"phone": "+7(899) 456-23-33",
"bank_name": "ПАО Сбербанк",
"bik": "044525225",
"checking_account": "40702810123456789012",
"correspondent_account": "30101810400000000225",
"type_doc": "акт",
"nom_doc": "1",
"signatory": "Иванова Н.В."
},
"file_size": 20480,
"filename": "2.doc",
"success": true
}
Ответ с ошибкой
{
"success": false,
"error": "invalid_request",
"message": "Отсутствует тело запроса"
}
📋 Описание полей ответа
|
Поле
|
Описание
|
|---|---|
organization_name |
Наименование организации
|
inn |
ИНН (10 или 12 цифр)
|
kpp |
КПП (9 цифр)
|
ogrn |
ОГРН (13 или 15 цифр)
|
address |
Юридический адрес
|
phone |
Контактный телефон
|
bank_name |
Наименование банка
|
bik |
БИК банка
|
checking_account |
Расчётный счёт
|
correspondent_account |
Корреспондентский счёт
|
type_doc |
Тип документа (акт, счёт, договор)
|
nom_doc |
Номер документа
|
signatory |
Подписант (ФИО)
|
🔹 Обработка ошибок
|
Код HTTP
|
Код ошибки
|
Описание
|
Решение
|
|---|---|---|---|
|
400
|
invalid_request |
Неверный формат файла, пустой запрос
|
Проверьте тело запроса и формат файла
|
|
401
|
unauthorized |
Неверный или отсутствующий
X-API-Key |
Убедитесь, что ключ передан корректно
|
|
413
|
payload_too_large |
Файл превышает лимит
|
Сожмите файл или разделите документ
|
|
408
|
timeout |
Превышено время обработки
|
Увеличьте таймаут до 120 секунд
|
|
500
|
internal_error |
Внутренняя ошибка сервера
|
Повторите запрос позже, обратитесь в поддержку
|
🔹 Рекомендации по интеграции в 1С
- Таймаут: всегда устанавливайте
120 секунд, особенно для PDF с большим объёмом текста. - Форматы файлов: для PDF убедитесь, что документ содержит текстовый слой (не скан-изображение).
- Валидация: проверяйте поле
successперед использованием данных. - Логирование: сохраняйте ответы API для отладки и аудита.
- Безопасность: храните
X-API-Keyв защищённом хранилище, не в коде.
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.195.40
Вступайте в нашу телеграмм-группу Инфостарт