Как получить ФИО и должность руководителя контрагента в 1С:УТ 11?

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

При разработке внешних печатных форм для конфигурации 1С:Управление торговлей 11 часто возникает потребность вывести в шапку договора или заказа данные о руководителе контрагента. В данной статье мы разберем, как правильно извлечь эту информацию из информационной базы, учитывая архитектурные особенности системы.

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

Важно помнить, что в УТ 11 данные о людях, представляющих контрагентов, хранятся не внутри самого справочника Контрагенты, а в справочнике КонтактныеЛицаПартнеров. Этот справочник подчинен справочнику Партнеры. Поскольку в современных редакциях УТ существует разделение на Партнеров (управленческий учет) и Контрагентов (юридические лица), нам необходимо правильно выстроить связь в запросе.

Решение задачи с помощью запроса

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

Рассмотрим пример кода, который позволит нам выбрать необходимые данные:


ВЫБРАТЬ
    КонтактныеЛицаПартнеровРолиКонтактногоЛица.Ссылка.Наименование КАК ФИО,
    КонтактныеЛицаПартнеровРолиКонтактногоЛица.Ссылка.ДолжностьПоВизитке КАК Должность
ИЗ
    Справочник.КонтактныеЛицаПартнеров.РолиКонтактногоЛица КАК КонтактныеЛицаПартнеровРолиКонтактногоЛица
ГДЕ
    КонтактныеЛицаПартнеровРолиКонтактногоЛица.Ссылка.Владелец.Ссылка = &Партнер
    И КонтактныеЛицаПартнеровРолиКонтактногоЛица.РольКонтактногоЛица.Наименование = \"Руководитель\"

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

Разберем, почему поиск по текстовому полю Должность или ДолжностьПоВизитке является ненадежным:

  1. Человеческий фактор: Один пользователь может написать «Генеральный директор», другой — «Ген. дир.», а третий — «Директор». Система не поймет, что это один и тот же статус.
  2. Масштабируемость: Если вы решите изменить логику поиска, текстовый поиск потребует переписывания кода под все возможные варианты написания должностей.
  3. Архитектурный подход: Справочник РолиКонтактныхЛицПартнеров предназначен именно для классификации людей. Создав или выбрав предопределенную роль, вы гарантируете стабильность работы алгоритма.

Рекомендации по реализации

Чтобы ваша печатная форма работала максимально надежно, придерживайтесь следующих шагов:

Шаг 1: Работа с дисциплиной данных. Проинструктируйте пользователей, чтобы в карточке партнера на вкладке контактных лиц обязательно выбиралась роль из справочника, а не просто заполнялось поле «Должность».

Шаг 2: Использование параметра партнера. Помните, что в документе Заказ клиента хранится ссылка на контрагента. Чтобы получить партнера, необходимо обратиться к реквизиту Контрагент.Партнер. Именно этого партнера нужно передавать в качестве параметра &Партнер в наш запрос.

Шаг 3: Обработка пустого результата. Всегда предусматривайте ситуацию, когда контактное лицо не найдено. В коде внешней печатной формы добавьте проверку:


РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
    // Сообщить пользователю о необходимости заполнения контактного лица
    ВывестиПредупреждение(\"Не найден руководитель для данного партнера!\");
КонецЕсли;

Заключение

Использование связки справочников КонтактныеЛицаПартнеров и РолиКонтактногоЛица — это единственно верный путь при работе с УТ 11. Это не только позволяет избежать ошибок в печатных формах, но и делает структуру данных вашей системы прозрачной и готовой к отчетности любого уровня сложности.

← На главную