В повседневной работе менеджера по продажам важна каждая секунда. Необходимость лишний раз переходить в карточку контрагента или партнера, чтобы посмотреть адрес доставки или контактный номер телефона, существенно замедляет процесс обработки заказа. В типовой конфигурации «1С:Управление торговлей 11.4» эти данные скрыты за ссылками, что и вызывает запрос на их вынос непосредственно на вкладку Основное документа ЗаказКлиента.
В рамках этой статьи мы разберем, как реализовать данную задачу максимально корректно, не снимая конфигурацию с замка, и какие технические нюансы подсистемы «Контактная информация» нам в этом помогут.
Разберем самый современный и правильный метод решения задачи — использование расширений конфигурации. Это позволяет нам модифицировать форму документа, не внося изменений в основную ветку разработки, что сохраняет возможность легкого обновления программы.
Проанализируем шаги, которые необходимо выполнить программисту:
ЗаказКлиента.КонтактнаяИнформацияСтрокой) с типом Строка. Важно добавлять его именно как реквизит формы, а не объекта, чтобы не загромождать структуру базы данных лишними полями.Вид как ПолеНадписи или ПолеВвода в режиме «Только просмотр».Выясним причину, по которой данные контактной информации нельзя просто «вытащить» через путь к данным. В 1С:УТ 11.4 контактная информация (адреса, телефоны, email) хранится в табличных частях справочников Партнеры и Контрагенты. Для получения текстового представления этих данных в системе предусмотрены специальные программные интерфейсы.
Рассмотрим пример кода, который позволит нам получить строковое представление адреса или телефона. Мы будем использовать модуль УправлениеКонтактнойИнформацией.
// Функция для получения КИ
&НаСервере
Функция ПолучитьПредставлениеКИ(СсылкаНаОбъект, ТипКИ)
Результат = УправлениеКонтактнойИнформацией.ПредставлениеКонтактнойИнформацииОбъекта(СсылкаНаОбъект, ТипКИ);
Возврат Результат;
КонецФункции
Для того чтобы данные обновлялись при выборе контрагента, нам необходимо перехватить событие ПриИзменении поля контрагента на форме. Рассмотрим, как это выглядит в расширении:
&НаКлиенте
Процедура Расш1_КонтрагентПриИзмененииПосле(Элемент)
// Вызываем серверную процедуру для обновления данных на форме
ОбновитьОтображениеКонтактнойИнформации();
КонецПроцедуры
&НаСервере
Процедура ОбновитьОтображениеКонтактнойИнформации()
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
// Получаем, например, юридический адрес
ВидКИ = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
ЭтаФорма.КонтактнаяИнформацияСтрокой = ПолучитьПредставлениеКИ(Объект.Контрагент, ВидКИ);
Иначе
ЭтаФорма.КонтактнаяИнформацияСтрокой = "";
КонецЕсли;
КонецПроцедуры
Проанализируем важный методологический аспект УТ 11.4. В системе разделены понятия «Партнер» (управленческая сущность) и «Контрагент» (юридическое лицо). При реализации ТЗ важно уточнить у заказчика, чьи именно контакты нужно выводить.
Если заказчику нужен телефон офиса, он чаще всего хранится у Партнера. Если же нужен адрес для первичных документов, его следует брать у Контрагента. В идеале, на форму можно вывести сводную информацию, объединяющую данные обоих объектов.
Посмотрим на ситуацию с точки зрения производительности. Если мы будем выполнять тяжелые запросы к табличным частям при каждом открытии формы, это может замедлить работу пользователей. Рекомендуется:
ПриЧтенииНаСервере, чтобы информация подтягивалась сразу при открытии существующего заказа.ДополнительныеРеквизиты, если информация статична и редко меняется.Рассмотрим подробнее штатные возможности системы. В УТ 11.4 существует «Информационная панель» (расположена справа в форме заказа). Если ее раскрыть, там можно увидеть гиперссылки на досье контрагента и сведения о контактных лицах. Это не выводит текст прямо «в лоб», но позволяет получить данные в один клик без перехода в карточку.
Также проанализируем возможность использования шаблонов печати. Иногда пользователям достаточно видеть КИ в печатной форме (например, в «Счете на оплату»), которая формируется за секунды, и вынос данных на форму документа становится избыточным требованием.
Резюмируя, отметим, что задача вывода КИ на форму решается созданием небольшого расширения. Основной акцент следует сделать на использовании типовой функции УправлениеКонтактнойИнформацией.ПредставлениеКонтактнойИнформацииОбъекта, так как она автоматически учитывает все настройки форматов адресов и телефонов, заданные в системе. Это гарантирует, что ваша доработка будет работать корректно даже после обновлений платформы или конфигурации.