Как вывести номер телефона и адрес клиента в форму документа Заказ клиента?

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

При оформлении заказов менеджерам часто требуется сразу видеть контактные данные покупателя: номер мобильного телефона, email или адрес доставки. Однако при попытке настроить форму через стандартное меню Еще — Изменить форму пользователи обнаруживают, что в списке доступных полей реквизита Объект.Партнер или Объект.Контрагент нет привычных строк с телефоном и адресом. Разберем, почему возникает эта ситуация и как правильно вывести контактные данные на форму документа в 1С:Управление торговлей 11.

Почему контактных данных нет в стандартной настройке формы

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

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

Архитектурные особенности учета клиентов в УТ 11

Проанализируем структуру справочников перед написанием программного кода. В конфигурации 1С:Управление торговлей 11 разделены управленческий и регламентированный учет:

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

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

Реализация через расширение конфигурации без снятия с поддержки

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

  1. Перейдем в конфигуратор и создадим новое расширение (или откроем существующее) с назначением Адаптация или Дополнение.
  2. Найдем в основной конфигурации документ ЗаказКлиента, его основную форму ФормаДокумента и добавим ее в расширение.
  3. В дереве реквизитов формы в расширении добавим новый строковый реквизит, например, ТелефонКлиента (длина 50–100 символов) и АдресКлиента (длина неограниченная).
  4. Перетащим созданные реквизиты в визуальное дерево элементов формы в требуемое место (например, рядом с полем выбора партнера).

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

Не рекомендуется писать прямые запросы к табличным частям справочников вручную, так как структура хранения контактной информации может меняться разработчиками 1С. В БСП предусмотрен штатный программный интерфейс — общий модуль УправлениеКонтактнойИнформацией.

Рассмотрим пример кода для модуля формы документа в расширении. Нам необходимо заполнять контактные данные в двух случаях: при открытии уже сохраненного документа и при интерактивном изменении партнера менеджером.

В модуле формы расширения добавим обработчики событий:


&НаСервере
Процедура Расш1_ПриЧтенииНаСервереПосле(ТекущийОбъект)
	ЗаполнитьКонтактнуюИнформациюНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ПартнерПриИзмененииПосле(Элемент)
	ЗаполнитьКонтактнуюИнформациюНаСервере();
КонецПроцедуры

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

Если в заказе заполняется конкретное контактное лицо (реквизит КонтактноеЛицо), аналогичным образом можно получить и его телефон, передав в функцию ссылку на контактное лицо и вид контактной информации ТелефонКонтактногоЛица.

Альтернативные способы просмотра контактов без доработки формы

Если в штате компании нет разработчика 1С и доработка формы через расширение невозможна, можно воспользоваться типовыми возможностями системы:

  1. Панель сведений и карточка партнера: в форме заказа рядом с полем партнера расположена гиперссылка для быстрого перехода в карточку клиента, где на вкладке с контактной информацией отображаются все внесенные номера телефонов и адреса.
  2. Отчет «Досье партнера»: вызывается непосредственно из командной панели документа и предоставляет сводную информацию о контрагенте, включая контактные данные и историю взаиморасчетов.
  3. Внешняя печатная форма: если телефон и адрес требуются только для склада или курьерской службы, их можно вывести в подключаемую внешнюю печатную форму, не вмешиваясь в интерфейс формы документа.
← На главную