Как вывести юридический адрес и контактную информацию контрагента в отчет 1С?

Пользователь 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При создании и настройке отчетов по контрагентам многие пользователи сталкиваются с ситуацией, когда в списке доступных полей справочника Контрагенты нет привычных полей Юридический адрес, Фактический адрес или Телефон. Развернуть ветку контрагента через плюсик и просто выбрать адрес не получается. Выясним причину такого поведения системы и подробно разберем все способы вывода контактной информации в отчет.

Почему адрес отсутствует среди стандартных полей контрагента?

Проанализируем архитектуру хранения данных в типовых конфигурациях 1С. Для обеспечения гибкости разработчики платформенных решений не хранят адреса, телефоны и адреса электронной почты непосредственно в реквизитах справочника Контрагенты. Контактная информация вынесена в отдельный регистр сведений — КонтактнаяИнформация.

У одного контрагента может быть неограниченное число контактов: юридический, фактический и почтовый адреса, несколько номеров телефонов, адреса филиалов и контактных лиц. Поскольку это подчиненная таблица, система компоновки данных (СКД) и стандартные конструкторы отчетов по справочнику не могут однозначно определить, какую именно запись из регистра нужно подставить в строку. Рассмотрим несколько практических вариантов решения этой задачи — от простых пользовательских настроек до профессиональной доработки отчетов в СКД.

Способ 1. Построение Универсального отчета по регистру сведений

Если требуется быстро получить список контрагентов с их реквизитами и адресами без изменения конфигурации и написания кода, воспользуемся типовым инструментом Универсальный отчет. Перевернем логику: построим отчет не по справочнику, а непосредственно по регистру контактных данных.

Разберем пошаговый порядок настройки:

  1. Откроем Универсальный отчет в программе.
  2. В шапке отчета в поле Тип данных выберем значение Регистр сведений.
  3. В поле Объект выберем регистр Контактная информация.
  4. Таблицу оставим основной.
  5. Перейдем в командную панель и нажмем кнопку Настройка.
  6. На вкладке Колонки отчета (или Поля) добавим нужные данные. Так как ведущим полем регистра является Объект (ссылка на контрагента), развернем его через точку и выберем реквизиты:
    — Объект.Наименование (наименование контрагента);
    — Представление (строка с адресом из регистра сведений);
    — Объект.ИНН;
    — Объект.Код по ЕДРПОУ / Код НДС;
    — Объект.ОсновнойБанковскийСчет.НомерСчета;
    — Объект.ОсновнойБанковскийСчет.Банк.Код;
    — Объект.ОсновнойБанковскийСчет.КодIBAN.
  7. Обязательно перейдем на вкладку Отбор и добавим условие: поле Вид равно Юридический адрес контрагента. Также можно ограничить тип данных условием Тип равно Адрес.
  8. Нажмем кнопку Сформировать.

Важные ограничения и риски данного способа:

Обратим внимание на два критических нюанса при работе с этим вариантом. Во-первых, если у контрагента юридический адрес вообще не заполнен в базе, записи по нему в регистре сведений не существует. Соответственно, такой контрагент полностью выпадет из итогового отчета. Во-вторых, если забыть установить строгий отбор по виду контакта, в отчет продублируются строки на каждый телефон, фактический адрес и email партнера.

Способ 2. Подключение контактной информации через механизм характеристик СКД

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

Разберем настройку характеристик в схеме компоновки данных по шагам:

  1. Откроем схему компоновки данных отчета в конфигураторе или через консоль отчетов.
  2. Перейдем на вкладку Наборы данных и в нижней табличной части найдем раздел Характеристики.
  3. Добавим новую строку и заполним параметры:
    — Тип: выберем тип данных СправочникСсылка.Контрагенты;
    — Источник видов характеристик: укажем таблицу справочника или плана видов характеристик видов контактных данных (например, Справочник.ВидыКонтактнойИнформации);
    — Поле ключа: выберем поле Ссылка;
    — Поле имени: укажем Наименование;
    — Источник значений характеристик: выберем регистр сведений КонтактнаяИнформация;
    — Поле объекта: укажем измерение Объект;
    — Поле вида: укажем измерение Вид;
    — Поле значения: выберем ресурс Представление.

После сохранения схемы в пользовательском режиме при выборе доступных полей в ветке Контрагент автоматически появится папка Характеристики, содержащая все виды контактных данных: «Юридический адрес», «Фактический адрес», «Телефон» и другие. Их можно свободно перетаскивать в колонки, группировки и условия отбора без риска потерять контрагентов с пустыми адресами.

Способ 3. Использование запроса и левого соединения

Если мы разрабатываем собственный отчет на базе текста запроса, решим задачу с помощью левого внешнего соединения. Главное правило: ведущей таблицей должен выступать справочник контрагентов, чтобы в выборку попали абсолютно все партнеры, даже без введенного адреса.

Посмотрим на пример текста запроса:


ВЫБРАТЬ
	Контрагенты.Ссылка КАК Контрагент,
	Контрагенты.ИНН КАК ИНН,
	Контрагенты.ОсновнойБанковскийСчет КАК ОсновнойБанковскийСчет,
	ЕСТЬNULL(КонтактнаяИнформация.Представление, "") КАК ЮридическийАдрес
ИЗ
	Справочник.Контрагенты КАК Контрагенты
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
		ПО Контрагенты.Ссылка = КонтактнаяИнформация.Объект
			И (КонтактнаяИнформация.Вид = &ВидЮрАдреса)

Разберем важные детали этого запроса:

  1. Условие И (КонтактнаяИнформация.Вид = &ВидЮрАдреса) обязательно помещается в секцию соединения ПО, а не в секцию ГДЕ. Если перенести отбор в секцию ГДЕ, левое соединение превратится во внутреннее, и все контрагенты без адреса пропадут из отчета.
  2. Функция ЕСТЬNULL заменяет пустое значение отсутствующей записи регистра на пустую строку, исключая вывод значения NULL в печатную форму.
  3. Если в вашей конфигурации регистр сведений КонтактнаяИнформация является периодическим (ведется история изменений адресов), необходимо выполнять соединение не с самим регистром, а с его виртуальной таблицей СрезПоследних на рабочую дату отчета.

Способ 4. Вычисляемые поля СКД с вызовом экспортных функций

Еще один удобный метод, позволяющий не усложнять запросы связями с регистрами — использование возможностей вычисляемых полей компоновки данных. В типовых конфигурациях присутствуют общие модули управления контактной информацией (например, УправлениеКонтактнойИнформацией).

Проанализируем порядок действий:

  1. На вкладке Вычисляемые поля схемы компоновки данных добавим новую строку с именем ЮридическийАдрес.
  2. В колонке Выражение пропишем вызов экспортной функции общего модуля программы, передав в нее ссылку на контрагента:
    УправлениеКонтактнойИнформацией.ПолучитьПредставлениеКонтактнойИнформации(Контрагент, Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)
  3. В модуле конфигурации должен быть установлен флаг вызова сервера, чтобы СКД могла исполнить функцию при формировании отчета.

Данный подход полностью исключает проблему дублирования строк и гарантирует корректный формат вывода адреса в полном соответствии с алгоритмами конкретной конфигурации.

← На главную