Как получить юридический адрес контрагента в СКД?

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

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

Разбор структуры хранения контактной информации

Для того чтобы вытащить юридический адрес контрагента, необходимо обратиться к табличной части КонтактнаяИнформация, которая есть в справочнике Контрагенты. Важно понимать, что данные там хранятся построчно, где каждая строка соответствует определенному виду контакта (например, «Юридический адрес», «Телефон», «Email»).

Чтобы отфильтровать нужный нам адрес, мы должны использовать условие по полю Вид. Это поле ссылается на справочник ВидыКонтактнойИнформации. Чтобы запрос работал корректно в СКД, мы будем использовать параметры.

Настройка запроса в СКД

Рассмотрим пошагово, как правильно организовать получение адреса:

  1. Откройте набор данных запроса в вашей схеме компоновки данных.
  2. Добавьте обращение к табличной части КонтактнаяИнформация.
  3. В разделе условий запроса укажите ограничение по виду контактной информации. Вместо жестко заданного значения используйте параметр:

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

Передача параметра в СКД

Многие разработчики сталкиваются с тем, что параметры виртуальных таблиц или параметры запроса не сразу становятся доступными для настройки. Чтобы параметр &ВидКонтакта появился на закладке «Параметры» в настройках СКД:

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

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

Объединение полей из разных источников

Часто требуется вывести приоритетный контактный адрес или e-mail, выбирая его либо из карточки контрагента, либо из контактного лица. Если обычная функция ЕСТЬNULL не подходит (например, если поле заполнено пустой строкой, а не значением NULL), используйте конструкцию ВЫБОР.

Рассмотрим пример объединения e-mail контрагента и его контактного лица:


ВЫБОР
    КОГДА ЕСТЬNULL(Контрагенты.Email, "") <> "" 
        ТОГДА Контрагенты.Email
    ИНАЧЕ ЕСТЬNULL(Контрагенты.КонтактноеЛицо.Email, "")
КОНЕЦ КАК ОсновнойEmail

Данная конструкция проверяет, является ли e-mail контрагента непустым. Если он заполнен, система выводит его. Если же поле пустое, выполняется проверка второго источника (контактного лица), и выводится его адрес электронной почты. Это позволяет избежать появления пустых строк и обеспечить полноту данных в отчете.

Дополнительные рекомендации

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

В выражении вычисляемого поля вы можете вызывать экспортные функции общих модулей, например УправлениеКонтактнойИнформациейКлиентСервер.СведенияОбАдресе. Это позволит разобрать XML-строку и получить структурированные данные без усложнения основного запроса к базе данных.

Таким образом, работа с контактной информацией в современных версиях 1С сводится к правильной фильтрации табличных частей и умелому использованию параметров и условных выражений в СКД.

← На главную