Как программно заполнить карточку контрагента в справочнике «Контрагенты»?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Автоматизация ввода данных о контрагентах — одна из самых частых задач, с которой сталкиваются разработчики при доработке конфигурации Бухгалтерия предприятия 3.0. Зачастую ручной ввод информации по ИНН требует либо платной подписки, либо использования сторонних инструментов. В этой статье мы разберем, как подойти к решению данной задачи программным способом, учитывая архитектуру современной 1С:Предприятие 8.3.

Понимание архитектуры хранения данных

Прежде чем приступать к написанию кода, важно осознать, что справочник Контрагенты — это лишь «скелет» объекта. В современной конфигурации БП 3.0 данные не хранятся в «плоских» реквизитах, как это было в старых версиях системы.

Контактная информация (адреса, телефоны, email) вынесена в регистр сведений КонтактнаяИнформация. Это сделано для того, чтобы соответствовать формату адресного классификатора ФИАС/ГАР. Если вы просто попытаетесь записать строку в реквизит, программа не «увидит» эти данные в отчетах или при заполнении документов.

Реализация через штатные механизмы

Самый простой путь — использование встроенных процедур конфигурации, которые уже умеют работать с сервисом 1С:Контрагент. Если у вас есть доступ к этому функционалу, вы можете вызвать соответствующую процедуру заполнения по ИНН. Однако, если подписка отсутствует или вы хотите реализовать собственное решение, разберем альтернативный подход.

Работа с контактными лицами

Для записи Ф.И.О. и Должности контактного лица недостаточно просто создать реквизит в справочнике. В БП 3.0 существует подчиненный справочник КонтактныеЛица. Чтобы программно заполнить эти данные, вам необходимо:

  1. Создать новый элемент справочника КонтактныеЛица.
  2. Установить владельца этого элемента, указав ссылку на вашего контрагента.
  3. Заполнить реквизиты Наименование, Должность и контактные данные.
  4. Записать объект.

Альтернативный метод: получение данных через API

Поскольку использование платного сервиса 1С не всегда целесообразно, многие разработчики используют прямые запросы к открытым API (таким как Dadata или парсинг сайта ФНС). Рассмотрим примерный алгоритм действий:

Сначала мы формируем HTTP-запрос к выбранному сервису, передавая ИНН контрагента. Получив ответ в формате JSON, мы должны его распарсить в структуру 1С. Рассмотрим упрощенный пример кода для получения и обработки данных:


// Пример получения данных через HTTP-соединение
Соединение = Новый HTTPСоединение("адрес_api_сервиса");
Запрос = Новый HTTPЗапрос("/v1/find?inn=" + ИНН);
Ответ = Соединение.Получить(Запрос);
РезультатСтрокой = Ответ.ПолучитьТелоКакСтроку();

// Парсинг JSON
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(РезультатСтрокой);
ДанныеКонтрагента = ПрочитатьJSON(ЧтениеJSON);

// Заполнение объекта
КонтрагентОбъект = Справочники.Контрагенты.СоздатьЭлемент();
КонтрагентОбъект.Наименование = ДанныеКонтрагента.Название;
КонтрагентОбъект.ИНН = ДанныеКонтрагента.ИНН;
// ... запись остальных реквизитов
КонтрагентОбъект.Записать();

Запись контактной информации

Для корректной записи адреса или телефона необходимо использовать механизмы Библиотеки Стандартных Подсистем (БСП). Не пытайтесь писать данные напрямую в таблицы базы данных. Используйте процедуру УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию. Она ожидает на вход структуру данных в формате XML, которая соответствует внутренним стандартам 1С.

Важные советы для разработчика:

Используя этот комплексный подход, вы сможете создать надежный механизм для автоматизации справочника Контрагенты, который будет работать стабильно и не зависеть от жестких условий платных подписок.

← На главную