Как вывести ИНН и КПП в список справочника Партнеры в 1С:УТ 11.4

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

В конфигурациях на базе 1С:ERP, таких как «Управление торговлей 11.4» или «Комплексная автоматизация», пользователи часто сталкиваются с тем, что в справочнике Партнеры не отображаются важные реквизиты: ИНН и КПП. Даже если эти поля добавлены в запрос динамического списка в конфигураторе, они могут оставаться невидимыми в пользовательском режиме. В этой статье мы подробно разберем, почему так происходит, и пройдем по всем шагам для решения этой задачи.

Анализ архитектуры справочников

Перед тем как приступать к правке кода, проанализируем структуру данных. В типовых решениях 1С разделены понятия «Партнер» (управленческая сущность) и «Контрагент» (юридическое лицо). Реквизиты ИНН и КПП принадлежат справочнику Контрагенты. Если в настройках программы включена опция «Независимое ведение партнеров и контрагентов», у одного партнера может быть несколько контрагентов. В этом случае вывод ИНН в список партнеров становится неоднозначным: какой именно ИНН показывать, если их несколько?

Если же опция выключена, связь между партнером и контрагентом — «один к одному». В такой ситуации вывод колонок технически прост, но система все равно может блокировать их отображение по ряду причин.

Шаг 1: Проверка и корректировка запроса динамического списка

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

Важный нюанс: в типовом коде часто используется ВНУТРЕННЕЕ СОЕДИНЕНИЕ (Inner Join). Это критическая ошибка, если ваша цель — видеть всех партнеров. Если у партнера еще не заведен контрагент, при внутреннем соединении такой партнер просто исчезнет из списка. Рекомендуем использовать ЛЕВОЕ СОЕДИНЕНИЕ.

Рассмотрим пример правильного построения запроса:


ВЫБРАТЬ
    СправочникПартнеры.Ссылка КАК Ссылка,
    СправочникПартнеры.Код КАК Код,
    СправочникПартнеры.Наименование КАК Наименование,
    Контрагенты.ИНН КАК ИНН,
    Контрагенты.КПП КАК КПП,
    Контрагенты.Ссылка КАК Контрагент
ИЗ
    Справочник.Партнеры КАК СправочникПартнеры
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
        ПО Контрагенты.Партнер = СправочникПартнеры.Ссылка
ГДЕ
    // Здесь обычно располагаются стандартные отборы по сегментам и поиску

Обратите внимание на поле Контрагенты.ИНН КАК ИНН. Присвоение псевдонима обязательно для того, чтобы платформа могла однозначно идентифицировать поле в настройках формы.

Шаг 2: Настройка свойства «Использовать всегда»

Даже если поле присутствует в запросе, 1С может оптимизировать выполнение запроса и не выбирать данные для этого поля, если оно не выведено на форму. Это часто приводит к тому, что при попытке добавить колонку через «Изменить форму» в пользовательском режиме поле остается пустым или недоступным.

Выполним следующие действия в Конфигураторе:

  1. Откроем форму списка справочника Партнеры.
  2. Перейдем на закладку «Данные» и найдем наш динамический список (обычно это Список).
  3. Откроем настройку списка и перейдем в список полей.
  4. Найдем поля ИНН и КПП.
  5. Установим для них флаг «Использовать всегда». Это гарантирует, что данные будут получены из базы данных вне зависимости от видимости колонки.

Шаг 3: Программное управление видимостью в общих модулях

Если после настройки запроса колонки все равно не отображаются, проанализируем программный код. В конфигурации УТ 11 управление видимостью элементов часто вынесено из модуля формы в общие модули. Рассмотрим процедуры ПриСозданииНаСервере.

Поищем вызовы процедур, связанных с управлением формой. Часто это модули:

В этих модулях может содержаться логика, которая принудительно скрывает колонки ИНН/КПП, если в системе включено независимое ведение партнеров. Система «считает», что выводить ИНН в общем списке некорректно, и выполняет код типа:


Если ПолучитьФункциональнуюОпцию("ИспользоватьРаздельноеВедениеПартнеровИКонтрагентов") Тогда
    Элементы.СписокИНН.Видимость = Ложь;
    Элементы.СписокКПП.Видимость = Ложь;
КонецЕсли;

Чтобы обойти это ограничение, нам потребуется создать расширение и в методе ПриСозданииНаСервере (после вызова основной процедуры) принудительно установить видимость в значение Истина.

Шаг 4: Проверка функциональных опций и настроек формы

Проанализируем ситуацию с пользовательскими настройками. Иногда колонки скрыты из-за примененных ранее настроек формы конкретным пользователем. Разберем, как это сбросить:

  1. В пользовательском режиме в форме списка нажмем «Еще» — «Установить стандартные настройки».
  2. Если это не помогло, проверим через «Еще» — «Изменить форму». Убедимся, что галочки напротив ИНН и КПП установлены.

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

Шаг 5: Проблема дублирования строк

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

Чтобы избежать этого, проанализируем возможность использования агрегатных функций в запросе динамического списка (хотя они не всегда поддерживаются) или вывода только основного контрагента. Если мы хотим видеть «хотя бы какой-то» ИНН, можно изменить запрос так:


ВЫБРАТЬ
    СправочникПартнеры.Ссылка КАК Ссылка,
    (ВЫБРАТЬ МИНИМУМ(К.ИНН) ИЗ Справочник.Контрагенты КАК К ГДЕ К.Партнер = СправочникПартнеры.Ссылка) КАК ИНН
ИЗ
    Справочник.Партнеры КАК СправочникПартнеры

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

Резюме

Выясним причину отсутствия колонок по шагам: сначала проверяем тип соединения в запросе (только ЛЕВОЕ СОЕДИНЕНИЕ), затем устанавливаем признак «Использовать всегда», и в завершение проверяем общие модули на наличие программного скрытия элементов. Соблюдение этой последовательности позволит корректно вывести ИНН и КПП в список партнеров, сделав работу пользователей в 1С:УТ 11.4 более эффективной.

← На главную