Контактная информация корреспондентов
страница1C:Документооборот ПРОФ, КОРП, ДГУ
25.02.2016
Контактная информация корреспондентов
- Как устроен справочник корреспонденты и его контактная информация
- Получение контактной информации корреспондента
- Вывод контактной информации в отчет
Как устроен справочник корреспонденты и его контактная информация
Справочник Корреспонденты содержит в себе основные и вспомогательные реквизиты, а также таблицы контактной информации и дополнительных реквизитов. Весьма важным реквизитом корреспондента является Вид корреспондента, который может принимать такие значения как "Юридическое лицо", "Физическое лицо", "Индивидуальный предприниматель" и "Юридическое лицо за пределами РФ". В зависимости от вида, у корреспондента меняются определенные реквизиты, контактная информация и контактные лица.
Таблица справочника Контактная информация хранит в себе всю контактную информацию по корреспонденту в виде ссылки на свойство (это значение отдельного справочника "Вид контактной информации") и значения этого свойства. Таким образом, всю контактную информацию о корреспонденте можно получить из данной таблицы.
Сами виды контактной информации задаются в справочнике Виды контактной информации в разделе Нормативно-справочная информация. В нем есть предопределенные элементы, такие как Email, "Телефон", "Почтовый адрес" и пр. Но пользователи могут добавлять и свои элементы. При этом важным реквизитом вида контактной информации является "Тип", который может принимать один из шести значений: "Адрес", "Телефон", "Адрес электронной почты", "Веб-страница", "Факс" и "Другое". В зависимости от этого типа, программа понимает, как обрабатывать поле данного типа в карточке корреспондента. Например, для типа "Адрес" автоматически подключается адресный классификатор, а для "Телефона" специальная форма ввода телефонов.
Виды контактной информации справочника Корреспонденты:

У справочника Корреспонденты есть подчиненный справочник Контактные лица, который содержит контактные данные контактных лиц корреспондента, например, мобильный телефон директора или электронную почту менеджера. Контактная информация контактных лиц также содержится в одноименной таблице справочника.
Получение контактной информации корреспондента
Рассмотрим примеры получения контактной информации по корреспонденту.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КонтактнаяИнформация.Ссылка КАК Коррепсондент, | КонтактнаяИнформация.Вид КАК Вид, | КонтактнаяИнформация.Тип КАК Тип, | КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей, | КонтактнаяИнформация.Представление КАК Представление |ИЗ | Справочник.Корреспонденты.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Ссылка = &Корреспондент"; Запрос.Параметры.Вставить("Корреспондент", ИскомыйКорреспондент); Выборка = Запрос.Выполнить().Выбрать();
Данный запрос вернет таблицу всей контактной информации искомого корреспондента.
Получение контактной информации по корреспонденту и всем его контактным лицам
Данный код вернет таблицу всей контактной информации искомого корреспондента и всех его контактных лиц:
Запрос.Текст = "ВЫБРАТЬ | КонтактнаяИнформация.Ссылка КАК Коррепсондент, | """" КАК КонтактноеЛицо, | КонтактнаяИнформация.Вид КАК Вид, | КонтактнаяИнформация.Тип КАК Тип, | КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей, | КонтактнаяИнформация.Представление КАК Представление |ИЗ | Справочник.Корреспонденты.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Ссылка = &Корреспондент | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | КонтактнаяИнформация.Ссылка.Владелец, | КонтактнаяИнформация.Ссылка, | КонтактнаяИнформация.Вид, | КонтактнаяИнформация.Тип, | КонтактнаяИнформация.ЗначенияПолей, | КонтактнаяИнформация.Представление |ИЗ | Справочник.КонтактныеЛица.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Ссылка.Владелец = &Корреспондент"; Запрос.Параметры.Вставить("Корреспондент", ИскомыйКорреспондент); Выборка = Запрос.Выполнить().Выбрать();
Получение контактной информации с помощью стандартных процедур
Помимо запросов, описанных выше, для работы с контактной информацией в программе можно воспользоваться и стандартными процедурами и функциями. Все такие процедуры расположены в общих модулях УправлениеКонтактнойИнформациейКлиентСервер, УправлениеКонтактнойИнформацией, УправлениеКонтактнойИнформациейКлиент.
Например, рассмотрим следующую функцию:
Функция ПолучитьКонтактнуюИнформация(Корреспондент)
КонтактнаяИнформация = Новый Структура;
Емайл = "";Телефон = "";
Если ТипЗнч(Корреспондент) = Тип("СправочникСсылка.Корреспонденты") Тогда
Емайл = УправлениеКонтактнойИнформацией.ПолучитьКонтактнуюИнформацияОбъекта(Корреспондент,
Справочники.ВидыКонтактнойИнформации.EmailКорреспондента);
Телефон = УправлениеКонтактнойИнформацией.ПолучитьКонтактнуюИнформацияОбъекта(Корреспондент,
Справочники.ВидыКонтактнойИнформации.ТелефонКорреспондента);
КонецЕсли;
Если ЗначениеЗаполнено(Телефон) Тогда
КонтактнаяИнформация.Вставить("Телефон", СтрШаблон(
НСтр("ru = 'Телефон: %1'"), Телефон));
Иначе
КонтактнаяИнформация.Вставить("Телефон", Телефон);
КонецЕсли;
КонтактнаяИнформация.Вставить("Емайл", Емайл);
Возврат КонтактнаяИнформация;
КонецФункции
Функция получает значение "Телефона" и "Email адреса" корреспондента. При этом основана она на общей функции УправлениеКонтактнойИнформацией.ПолучитьКонтактнуюИнформацияОбъекта (Ссылка, ВидКонтактнойИнформации), с помощью которой можно получить любой тип контактной информации по любому объекту, содержащем контактную информацию.
Также полезной может быть функция КонтактнаяИнформацияОбъектов (МассивОбъектов, ТипыКИ = Неопределено, ВидыКИ = Неопределено) — предназначена для получения контактной информации для нескольких объектов.
УправлениеКонтактнойИнформациейКлиентСервер. СформироватьПредставлениеАдреса(СтруктураАдреса, Представление, НаименованиеВида = Неопределено) — формирует представление контактной информации с видом для формы ввода адреса.
Вывод контактной информации в отчет
Контактную информацию также можно выводить в отчеты СКД. Например, в типовой конфигурации есть отчет "Договоры", в котором есть вариант "Договоры с истекающим сроком действия". В нем выводится контактная информация контакта корреспондента, указанного в документе. Посмотрим "листинг скд запроса":
ВЫБРАТЬ РАЗРЕШЕННЫЕ ВнутреннийДокументКорреспонденты.Ссылка, ВнутреннийДокументКорреспонденты.Корреспондент, ВнутреннийДокументКорреспонденты.КонтактноеЛицо, ВнутреннийДокументКорреспонденты.ПодписалОтКорреспондента, КонтактныеЛицаТелефон.Представление КАК ТелефонКонтактногоЛица, КонтактныеЛицаEmail.Представление КАК EmailКонтактногоЛица ИЗ Справочник.ВнутренниеДокументы.Корреспонденты КАК ВнутреннийДокументКорреспонденты
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛица.КонтактнаяИнформация КАК КонтактныеЛицаТелефон
ПО (КонтактныеЛицаТелефон.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтактногоЛица))
И (КонтактныеЛицаТелефон.Ссылка = ВнутреннийДокументКорреспонденты.КонтактноеЛицо)
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛица.КонтактнаяИнформация КАК КонтактныеЛицаEmail
ПО (КонтактныеЛицаEmail.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.EmailКонтактногоЛица))
И (КонтактныеЛицаEmail.Ссылка = ВнутреннийДокументКорреспонденты.КонтактноеЛицо)
Как видно из запроса, с помощью левого соединения с таблицей Контактной информации справочника Контактные лица мы получаем "Телефон" и "Email адрес" контакта. Применяя подобный метод, мы можем получать и любую другую контактную информацию, как контактных лиц, так и самого корреспондента. Например, можно в отчет вывести юридический адрес корреспондента:
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Корреспонденты.КонтактнаяИнформация КАК КорреспондентыАдрес
ПО (КорреспондентыАдрес.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации. ЮридическийАдресКорреспондента))
И (КонтактныеЛицаEmail.Ссылка = ВнутреннийДокументКорреспонденты.Корреспондент)
Комбинируя приведенные выше методы можно найти широкое применение контактной информации объектов системы. Например, контактную информацию можно выводить в отчеты или использовать для автозаполнения шаблонов файлов. Также можно добавлять ее в превью документов, либо выводить в динамические списки объектов.