Как вывести контактную информацию контрагента в форму заказа клиента 1С:УТ 11.4

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

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

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

Использование механизма расширений

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

Проанализируем шаги, которые необходимо выполнить программисту:

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

Программное получение данных через стандартные функции

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

Рассмотрим пример кода, который позволит нам получить строковое представление адреса или телефона. Мы будем использовать модуль УправлениеКонтактнойИнформацией.


// Функция для получения КИ
&НаСервере
Функция ПолучитьПредставлениеКИ(СсылкаНаОбъект, ТипКИ)
    Результат = УправлениеКонтактнойИнформацией.ПредставлениеКонтактнойИнформацииОбъекта(СсылкаНаОбъект, ТипКИ);
    Возврат Результат;
КонецФункции

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


&НаКлиенте
Процедура Расш1_КонтрагентПриИзмененииПосле(Элемент)
    // Вызываем серверную процедуру для обновления данных на форме
    ОбновитьОтображениеКонтактнойИнформации();
КонецПроцедуры

&НаСервере
Процедура ОбновитьОтображениеКонтактнойИнформации()
    Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
        // Получаем, например, юридический адрес
        ВидКИ = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
        ЭтаФорма.КонтактнаяИнформацияСтрокой = ПолучитьПредставлениеКИ(Объект.Контрагент, ВидКИ);
    Иначе
        ЭтаФорма.КонтактнаяИнформацияСтрокой = "";
    КонецЕсли;
КонецПроцедуры

Архитектура «Партнер — Контрагент»

Проанализируем важный методологический аспект УТ 11.4. В системе разделены понятия «Партнер» (управленческая сущность) и «Контрагент» (юридическое лицо). При реализации ТЗ важно уточнить у заказчика, чьи именно контакты нужно выводить.

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

Оптимизация производительности и кэширование

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

  1. Выполнять заполнение данных в процедуре ПриЧтенииНаСервере, чтобы информация подтягивалась сразу при открытии существующего заказа.
  2. Использовать стандартный механизм ДополнительныеРеквизиты, если информация статична и редко меняется.
  3. Если необходимо выводить информацию в списке заказов, лучше использовать механизм Дополнительных сведений, которые хранятся в отдельном регистре и легче подтягиваются в динамические списки.

Альтернативные способы без программирования

Рассмотрим подробнее штатные возможности системы. В УТ 11.4 существует «Информационная панель» (расположена справа в форме заказа). Если ее раскрыть, там можно увидеть гиперссылки на досье контрагента и сведения о контактных лицах. Это не выводит текст прямо «в лоб», но позволяет получить данные в один клик без перехода в карточку.

Также проанализируем возможность использования шаблонов печати. Иногда пользователям достаточно видеть КИ в печатной форме (например, в «Счете на оплату»), которая формируется за секунды, и вынос данных на форму документа становится избыточным требованием.

Итоги реализации

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

← На главную