При выписке первичных документов и счетов-фактур бухгалтерия часто сталкивается с требованием сверять юридические адреса контрагентов с ЕГРЮЛ. Стандартный сервис 1С:Контрагент предоставляет ограниченное количество автозаполнений и проверок на базовых тарифах (например, 7200 обращений на весь период действия), которые быстро расходуются при большой базе партнеров. Разберем по шагам, как решить эту задачу с помощью альтернативных инструментов, правильной организации бизнес-логики и оптимизации запросов.
Основная ошибка при автоматизации сверки адресов — проведение проверки «на лету» в момент формирования или пакетной печати документов. Если в компании создаются сотни реализаций в день, проверка одного и того же контрагента выбывает из лимита десятки раз. Это приводит к нескольким проблемам:
Контрагенты могут храниться тысячи элементов, с которыми давно нет хозяйственных операций, но они всё равно попадают под массовую обработку.Отличной альтернативой для сверки реквизитов и адресов по ИНН является сервис DaData.ru. Он предоставляет бесплатный лимит (до 10 000 API-запросов в день), чего с запасом хватает большинству организаций среднего масштаба.
Для интеграции с этим сервисом отправляется JSON-запрос к API подсказок по организациям. Разберем пример получения данных о юридическом адресе по ИНН с помощью встроенных средств 1С:
Соединение = Новый HTTPСоединение("suggestions.dadata.ru", 443, , , , 60, Новый ЗащищенноеСоединениеOpenSSL());
ЗаголовокЗапроса = Новый Соответствие();
ЗаголовокЗапроса.Вставить("Content-Type", "application/json");
ЗаголовокЗапроса.Вставить("Accept", "application/json");
ЗаголовокЗапроса.Вставить("Authorization", "Token " + ТекстТокена); // Ваш API-ключ DaData
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписьJSON.ЗаписатьНачалоОбъекта();
ЗаписьJSON.ЗаписатьИмяСвойства("query");
ЗаписьJSON.ЗаписатьЗначение(ИННКонтрагента);
ЗаписьJSON.ЗаписатьКонецОбъекта();
СтрокаJSON = ЗаписьJSON.Закрыть();
Запрос = Новый HTTPЗапрос("/suggestions/api/4_1/rs/findById/party", ЗаголовокЗапроса);
Запрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния = 200 Тогда
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
ДанныеОтвета = ПрочитатьJSON(ЧтениеJSON);
// Разбор структуры адреса из ответа
КонецЕсли;
Сервис возвращает адрес в нормализованном виде со структурами ФИАС и ГАР, что позволяет сопоставить его с текущей контактной информацией в базе 1С.
Чтобы не расходовать запросы впустую, необходимо грамотно настроить сам процесс проверки контрагентов в конфигурации. Проанализируем ключевые техники оптимизации:
РегламентноеЗадание, которое запускается ночью и обрабатывает контрагентов небольшими порциями (пакетами по 100–200 записей).ДатаПоследнейПроверкиАдреса типа Дата). При выполнении проверки обновляем это поле. Если с момента последней проверки прошло меньше 30 дней, повторный запрос к внешнему API не выполняем.При автоматизации сверки важно понимать требования нормативных актов. Согласно разъяснениям Минфина и ФНС, указание адреса юридического лица в счете-фактуре в соответствии с ЕГРЮЛ в пределах местонахождения организации предназначено для правильной идентификации налогоплательщика.
При этом неопасные технические ошибки или мелкие расхождения в формате написания адреса (например, порядок указания элементов адреса, сокращения «ул.» вместо «улица»), если они не препятствуют налоговым органам идентифицировать продавца или покупателя, не являются основанием для отказа в вычете по НДС (ст. 169 НК РФ).
Кроме того, при интеграции данных учитываем следующие особенности: