830 документов
← К списку

Контактная информация корреспондентов

страница

1C:Документооборот ПРОФ, КОРП, ДГУ
25.02.2016

Контактная информация корреспондентов

Как устроен справочник корреспонденты и его контактная информация

Справочник Корреспонденты содержит в себе основные и вспомогательные реквизиты, а также таблицы контактной информации и дополнительных реквизитов. Весьма важным реквизитом корреспондента является Вид корреспондента, который может принимать такие значения как "Юридическое лицо", "Физическое лицо", "Индивидуальный предприниматель" и "Юридическое лицо за пределами РФ". В зависимости от вида, у корреспондента меняются определенные реквизиты, контактная информация и контактные лица.

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

Сами виды контактной информации задаются в справочнике Виды контактной информации в разделе Нормативно-справочная информация. В нем есть предопределенные элементы, такие как Email, "Телефон", "Почтовый адрес" и пр. Но пользователи могут добавлять и свои элементы. При этом важным реквизитом вида контактной информации является "Тип", который может принимать один из шести значений: "Адрес", "Телефон", "Адрес электронной почты", "Веб-страница", "Факс" и "Другое". В зависимости от этого типа, программа понимает, как обрабатывать поле данного типа в карточке корреспондента. Например, для типа "Адрес" автоматически подключается адресный классификатор, а для "Телефона" специальная форма ввода телефонов.

Виды контактной информации справочника Корреспонденты:

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

Получение контактной информации корреспондента

Рассмотрим примеры получения контактной информации по корреспонденту.

Копировать в буфер обмена

Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КонтактнаяИнформация.Ссылка КАК Коррепсондент, | КонтактнаяИнформация.Вид КАК Вид, | КонтактнаяИнформация.Тип КАК Тип, | КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей, | КонтактнаяИнформация.Представление КАК Представление |ИЗ | Справочник.Корреспонденты.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Ссылка = &Корреспондент"; Запрос.Параметры.Вставить("Корреспондент", ИскомыйКорреспондент); Выборка = Запрос.Выполнить().Выбрать();

Данный запрос вернет таблицу всей контактной информации искомого корреспондента.

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

Данный код вернет таблицу всей контактной информации искомого корреспондента и всех его контактных лиц:

Копировать в буфер обмена

Запрос.Текст = "ВЫБРАТЬ | КонтактнаяИнформация.Ссылка КАК Коррепсондент, | """" КАК КонтактноеЛицо, | КонтактнаяИнформация.Вид КАК Вид, | КонтактнаяИнформация.Тип КАК Тип, | КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей, | КонтактнаяИнформация.Представление КАК Представление |ИЗ | Справочник.Корреспонденты.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Ссылка = &Корреспондент | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | КонтактнаяИнформация.Ссылка.Владелец, | КонтактнаяИнформация.Ссылка, | КонтактнаяИнформация.Вид, | КонтактнаяИнформация.Тип, | КонтактнаяИнформация.ЗначенияПолей, | КонтактнаяИнформация.Представление |ИЗ | Справочник.КонтактныеЛица.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Ссылка.Владелец = &Корреспондент"; Запрос.Параметры.Вставить("Корреспондент", ИскомыйКорреспондент); Выборка = Запрос.Выполнить().Выбрать();

Получение контактной информации с помощью стандартных процедур

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

Например, рассмотрим следующую функцию:

Копировать в буфер обмена

Функция ПолучитьКонтактнуюИнформация(Корреспондент)

КонтактнаяИнформация = Новый Структура;
Емайл = "";Телефон = "";

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

Если ЗначениеЗаполнено(Телефон) Тогда 
	КонтактнаяИнформация.Вставить("Телефон", СтрШаблон(
		НСтр("ru = 'Телефон: %1'"), Телефон));	
Иначе
	КонтактнаяИнформация.Вставить("Телефон", Телефон);
КонецЕсли;

КонтактнаяИнформация.Вставить("Емайл", Емайл);

Возврат КонтактнаяИнформация;

КонецФункции

Функция получает значение "Телефона" и "Email адреса" корреспондента. При этом основана она на общей функции УправлениеКонтактнойИнформацией.ПолучитьКонтактнуюИнформацияОбъекта (Ссылка, ВидКонтактнойИнформации), с помощью которой можно получить любой тип контактной информации по любому объекту, содержащем контактную информацию.

Также полезной может быть функция КонтактнаяИнформацияОбъектов (МассивОбъектов, ТипыКИ = Неопределено, ВидыКИ = Неопределено) — предназначена для получения контактной информации для нескольких объектов.

УправлениеКонтактнойИнформациейКлиентСервер. СформироватьПредставлениеАдреса(СтруктураАдреса, Представление, НаименованиеВида = Неопределено) — формирует представление контактной информации с видом для формы ввода адреса.

Вывод контактной информации в отчет

Контактную информацию также можно выводить в отчеты СКД. Например, в типовой конфигурации есть отчет "Договоры", в котором есть вариант "Договоры с истекающим сроком действия". В нем выводится контактная информация контакта корреспондента, указанного в документе. Посмотрим "листинг скд запроса":

Копировать в буфер обмена

ВЫБРАТЬ РАЗРЕШЕННЫЕ ВнутреннийДокументКорреспонденты.Ссылка, ВнутреннийДокументКорреспонденты.Корреспондент, ВнутреннийДокументКорреспонденты.КонтактноеЛицо, ВнутреннийДокументКорреспонденты.ПодписалОтКорреспондента, КонтактныеЛицаТелефон.Представление КАК ТелефонКонтактногоЛица, КонтактныеЛицаEmail.Представление КАК EmailКонтактногоЛица ИЗ Справочник.ВнутренниеДокументы.Корреспонденты КАК ВнутреннийДокументКорреспонденты

    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛица.КонтактнаяИнформация КАК КонтактныеЛицаТелефон
	ПО (КонтактныеЛицаТелефон.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтактногоЛица))
		И (КонтактныеЛицаТелефон.Ссылка = ВнутреннийДокументКорреспонденты.КонтактноеЛицо)
	ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛица.КонтактнаяИнформация КАК КонтактныеЛицаEmail
	ПО (КонтактныеЛицаEmail.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.EmailКонтактногоЛица))
		И (КонтактныеЛицаEmail.Ссылка = ВнутреннийДокументКорреспонденты.КонтактноеЛицо)

Как видно из запроса, с помощью левого соединения с таблицей Контактной информации справочника Контактные лица мы получаем "Телефон" и "Email адрес" контакта. Применяя подобный метод, мы можем получать и любую другую контактную информацию, как контактных лиц, так и самого корреспондента. Например, можно в отчет вывести юридический адрес корреспондента:

Копировать в буфер обмена

ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Корреспонденты.КонтактнаяИнформация КАК КорреспондентыАдрес
	ПО (КорреспондентыАдрес.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации. ЮридическийАдресКорреспондента))
		И (КонтактныеЛицаEmail.Ссылка = ВнутреннийДокументКорреспонденты.Корреспондент)

Комбинируя приведенные выше методы можно найти широкое применение контактной информации объектов системы. Например, контактную информацию можно выводить в отчеты или использовать для автозаполнения шаблонов файлов. Также можно добавлять ее в превью документов, либо выводить в динамические списки объектов.