Справочники и Данные · 9 мин
Как получить данные контрагента в 1С
Как получить данные контрагента в 1С: поиск по ИНН, запрос на встроенном языке, обращение к реквизитам и табличным частям, типовые ошибки и проверка результата.
Данные контрагента в 1С хранятся в справочнике «Контрагенты», и способ их получения зависит от задачи: пользователю достаточно карточки элемента, а разработчику нужен программный доступ к реквизитам через запрос или методы встроенного языка. В типовых конфигурациях (1С:Бухгалтерия, 1С:Управление торговлей, 1С:ERP) структура справочника почти одинакова: наименование, ИНН, КПП, адреса, банковские счета, контактная информация.
Чаще всего данные нужны в трёх ситуациях: заполнить документ по известному контрагенту, вывести реквизиты в печатную форму или отчёт, проверить контрагента по ИНН через встроенный сервис. Каждый сценарий решается своим инструментом, и ошибка в выборе подхода приводит к лишним обращениям к базе или к получению неактуальных значений.
Ниже разобраны практические способы: работа через интерфейс, программное получение ссылки и реквизитов, запросы к справочнику, чтение контактной информации и банковских счетов, а также проверка результата и типичные ошибки.
Где хранятся данные контрагента и как открыть карточку
В пользовательском режиме справочник «Контрагенты» обычно находится в разделе «Покупки» или «Справочники» (в 1С:Бухгалтерии — «Справочники → Контрагенты»). Список поддерживает поиск по наименованию, ИНН и другим полям: достаточно начать вводить значение в строку поиска. Двойной клик открывает карточку, где собраны основные реквизиты: полное наименование, ИНН/КПП, юридический и фактический адреса, банковские счета, договоры.
Часть данных хранится не в самом элементе справочника, а в связанных объектах. Контактная информация (адреса, телефоны, email) в типовых конфигурациях лежит в табличной части «КонтактнаяИнформация» в формате подсистемы БСП, банковские счета — в подчинённом справочнике «БанковскиеСчета», договоры — в справочнике «ДоговорыКонтрагентов». Это важно учитывать при программном доступе: одним обращением к реквизитам элемента получить всё не удастся.
Как найти контрагента по ИНН программно
Самый надёжный способ получить ссылку на контрагента — поиск по реквизиту ИНН. Метод НайтиПоРеквизиту() возвращает ссылку на первый найденный элемент или пустую ссылку, если совпадений нет. Для организаций стоит проверять пару ИНН + КПП, так как у филиалов одного юрлица ИНН совпадает.
КонтрагентСсылка = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "7712345678");
Если КонтрагентСсылка.Пустая() Тогда
Сообщить("Контрагент с таким ИНН не найден");
Иначе
ДанныеКонтрагента = КонтрагентСсылка.ПолучитьОбъект();
Наименование = ДанныеКонтрагента.Наименование;
КонецЕсли;
Обратите внимание: обращение к реквизитам через точку от ссылки (КонтрагентСсылка.Наименование) работает, но каждое такое обращение в цикле выполняет отдельный запрос к базе. Если нужно прочитать несколько реквизитов или обработать много контрагентов — используйте запрос, это критично для производительности.
Получение данных запросом
Запрос — основной инструмент, когда данные контрагента нужны в отчёте, печатной форме или при пакетной обработке. Он читает только указанные поля и не создаёт объектов в памяти, поэтому работает быстрее и безопаснее для больших выборок.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Ссылка КАК Ссылка,
| Контрагенты.Наименование КАК Наименование,
| Контрагенты.ИНН КАК ИНН,
| Контрагенты.КПП КАК КПП
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ИНН = &ИНН
| И НЕ Контрагенты.ПометкаУдаления";
Запрос.УстановитьПараметр("ИНН", "7712345678");
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ИНН = Выборка.ИНН;
КонецЕсли;
Обязательно передавайте значения через параметры (&ИНН), а не конкатенацией строк — это защищает от ошибок синтаксиса и упрощает поддержку. Условие на пометку удаления отсекает элементы, которые пользователи уже вывели из оборота, но физически они ещё присутствуют в базе.
Как прочитать адреса, телефоны и банковские счета
Контактная информация в типовых конфигурациях устроена иначе, чем обычные реквизиты. Значения хранятся в табличной части «КонтактнаяИнформация» с колонками «Тип», «Вид» и «Представление». Чтобы получить, например, юридический адрес, нужно найти строку табличной части по виду контактной информации. В конфигурациях на БСП есть готовые функции модуля УправлениеКонтактнойИнформацией, которые возвращают адрес в виде структуры или строки — используйте их вместо ручного разбора.
Банковские счета — отдельный подчинённый справочник. Получить основной счёт контрагента можно запросом с отбором по владельцу, либо через реквизит «ОсновнойБанковскийСчет» элемента справочника, если он предусмотрен конфигурацией. Аналогично устроены договоры: у контрагента может быть несколько договоров, и выбирать нужный приходится по виду, валюте или признаку основного.
- 1Определите ключ поиска: ИНН, ссылка из документа или наименование
- 2Получите ссылку через НайтиПоРеквизиту() или запрос с параметром
- 3Проверьте, что ссылка не пустая, прежде чем читать реквизиты
- 4Прочитайте основные реквизиты запросом или через объект
- 5Отдельно получите контактную информацию, банковские счета и договоры
- 6Проверьте результат на тестовом контрагенте с заведомо известными данными
Получение данных по ИНН через сервис 1С:Контрагент
В типовых конфигурациях при действующей подписке ИТС доступно автоматическое заполнение карточки по ИНН: вводите ИНН в новой карточке, нажимаете «Заполнить», и программа подтягивает наименование, адрес, КПП и руководителя из официальных реестров. Это снижает риск опечаток при ручном вводе реквизитов.
Тот же механизм доступен программно через объекты подсистемы «РаботаСКонтрагентами» — например, для массовой проверки списка контрагентов. Учитывайте ограничения: сервис требует подключения к интернету и активной подписки, а данные реестров могут отставать от реальных изменений в организации на несколько дней. Для юридически значимых документов сверяйте реквизиты с первичными документами контрагента.
Выбор способа под задачу
Единого «правильного» способа нет — выбор зависит от контекста. Для разового просмотра достаточно интерфейса, для печатной формы — запроса, для изменения данных — объекта. Ниже сопоставлены основные варианты.
| Способ | Когда применять | Ограничения |
|---|---|---|
| Карточка в интерфейсе | Разовый просмотр и ручное редактирование | Не подходит для автоматизации |
| НайтиПоРеквизиту + объект | Нужно читать и изменять элемент | Медленно в циклах, создаёт объект в памяти |
| Запрос | Отчёты, печатные формы, пакетная обработка | Только чтение данных |
| Сервис 1С:Контрагент | Заполнение и проверка по ИНН | Нужны интернет и подписка ИТС |
Как проверить результат
ИНН и наименование совпадают с ожидаемыми, элемент не помечен на удаление
Ссылка пустая или найден дубль с похожим ИНН
В табличной части есть строки нужного вида, представление заполнено
Строки есть, но поле Представление пустое — данные не заполнены
Счёт привязан к контрагенту, банк и номер счёта актуальны
Основной счёт не задан, запрос возвращает пустой результат
Частые вопросы
Как получить контрагента из документа, например из реализации?
В документах контрагент хранится как реквизит с типом «СправочникСсылка.Контрагенты». Достаточно обратиться к реквизиту: ДокументОбъект.Контрагент вернёт ссылку, а в запросе поле доступно напрямую из таблицы документа — отдельный поиск не нужен.
Почему НайтиПоРеквизиту ничего не находит, хотя контрагент есть?
Чаще всего причина в лишних пробелах или разном формате ИНН (число вместо строки с ведущими нулями). Проверьте значение в карточке и приведите искомую строку к тому же виду; также убедитесь, что у пользователя есть права на чтение справочника.
Как получить всех контрагентов списком?
Используйте запрос к таблице Справочник.Контрагенты без условия ГДЕ или с условием на пометку удаления. Для больших баз добавляйте отборы (по группе, по дате создания), чтобы не выгружать десятки тысяч строк целиком.
Чем отличается ПолучитьОбъект() от чтения через ссылку?
ПолучитьОбъект() загружает элемент целиком и позволяет изменять и записывать его. Чтение реквизитов через ссылку или запрос быстрее, но доступно только для чтения. Для анализа данных объект создавать не нужно.
Как найти дубли контрагентов по ИНН?
Запросом сгруппируйте элементы по ИНН и отберите группы, где количество ссылок больше одного. В типовых конфигурациях также есть штатная обработка «Поиск и удаление дублей» в разделе администрирования.
Что важно запомнить
Ищите контрагента по ИНН, а не по наименованию; для чтения данных используйте запрос, для изменения — объект; адреса, счета и договоры хранятся отдельно и требуют отдельного обращения; всегда проверяйте ссылку на пустоту и делайте копию базы перед массовыми изменениями.