/// Вх Параметры: Например Объект - Документ,Контрагент,КонтактноеЛицоКонтрагнета,КонтактноеЛицо /// Тип - тип контактной информации , Вид - вид контактной информации , /// Вых Параметры: Массив Структур , возращает массив с структурой Объект,Вид_КИ,Значение_КИ Функция Получить_Все_ВозможныеВиды_КИ_Объекта(СсылкаЗнч,Тип_КИ,Вид_КИ = Неопределено) Экспорт //// В документе ищет свойства и если в свойстах есть имеил тогда п ЭтоДокумент = Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаЗнч)); МассивВозврата = Новый Массив; СоотвествияЗнч = Новый Соответствие; ТекКонтрагент = Неопределено; ТекКонтактноеЛицоКонтрагнета = Неопределено; ТекКонтактноеЛицо = Неопределено; Если ЭтоДокумент Тогда ///// Пока только для документа ЗаказПокупателя Если ТипЗнч(СсылкаЗнч) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда ТаблицаПустая = Ложь; Запрос = Новый Запрос("ВЫБРАТЬ | ЗначенияСвойствОбъектов.Свойство, | ЗначенияСвойствОбъектов.Значение, | ЗначенияСвойствОбъектов.Свойство.Наименование КАК Наименование_Свойства, | ЗначенияСвойствОбъектов.Свойство.ТипЗначения КАК ТипЗначения |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Объект = &Объект"); Запрос.УстановитьПараметр("Объект",СсылкаЗнч); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Количество() = 0 Тогда ТаблицаПустая = Истина; КонецЕсли; СоотвествиеСвойств = Новый Соответствие; Пока Выборка.Следующий() Цикл СоотвествиеСвойств.Вставить(Выборка.Свойство,Выборка.Значение); КонецЦикла; ТаблицаСоотвествий = Константы.Простир_СоотвествиеСвойствЗаказу_РеквизитамКонтрагента.Получить(); Если Не ЗначениеЗаполнено(ТаблицаСоотвествий) Тогда ТаблицаПустая = Истина; КонецЕсли; ТаблицаСоотвествий = ЗначениеИзСтрокиВнутр(ТаблицаСоотвествий); Если ТаблицаСоотвествий.Количество() = 0 Тогда ТаблицаПустая = Истина; КонецЕсли; Если НЕ ТаблицаПустая Тогда Для Каждого Стр Из ТаблицаСоотвествий Цикл Если ЗначениеЗаполнено(Вид_КИ) Тогда Если Стр.РеквизитКонтрагента = Вид_КИ Тогда ЗначениеСвойства = СоотвествиеСвойств.Получить(Стр.РеквизитКонтрагента); Если ЗначениеЗаполнено(ЗначениеСвойства) Тогда МассивВозврата.Добавить(Новый Структура("Объект,Вид_КИ,Значение_КИ",СсылкаЗнч,Стр.РеквизитКонтрагента,ЗначениеСвойства)); КонецЕсли; КонецЕсли; ИначеЕсли ТипЗнч(Стр.РеквизитКонтрагента) = Тип("СправочникСсылка.ВидыКонтактнойИнформации") И Стр.РеквизитКонтрагента.Тип = Тип_КИ Тогда ЗначениеСвойства = СоотвествиеСвойств.Получить(Стр.ИмяСовойстваЗаказа); Если ЗначениеЗаполнено(ЗначениеСвойства) Тогда МассивВозврата.Добавить(Новый Структура("Объект,Вид_КИ,Значение_КИ",СсылкаЗнч,Стр.РеквизитКонтрагента,ЗначениеСвойства)); КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; Если СсылкаЗнч.Метаданные().Реквизиты.Найти("Контрагент") <> Неопределено Тогда ТекКонтрагент = СсылкаЗнч.Контрагент; КонецЕсли; КонецЕсли; Если ТипЗнч(СсылкаЗнч) = Тип("СправочникСсылка.Контрагенты") Тогда ТекКонтрагент = СсылкаЗнч; КонецЕсли; Если ЗначениеЗаполнено(ТекКонтрагент) Тогда МассивОбъектов_КИ = Новый Массив; МассивОбъектов_КИ.Добавить(ТекКонтрагент); Выборка_КонтактныеЛица_Контрагентов = Справочники.КонтактныеЛицаКонтрагентов.Выбрать(,ТекКонтрагент); Пока Выборка_КонтактныеЛица_Контрагентов.Следующий() Цикл Если Выборка_КонтактныеЛица_Контрагентов.ПометкаУдаления Тогда Продолжить; КонецЕсли; МассивОбъектов_КИ.Добавить(Выборка_КонтактныеЛица_Контрагентов.Ссылка); Если НЕ Выборка_КонтактныеЛица_Контрагентов.КонтактноеЛицо.Пустая() Тогда МассивОбъектов_КИ.Добавить(Выборка_КонтактныеЛица_Контрагентов.КонтактноеЛицо); КонецЕсли; КонецЦикла; Запрос = Новый Запрос("ВЫБРАТЬ | КонтактнаяИнформация.Представление, | КонтактнаяИнформация.Объект, | КонтактнаяИнформация.Вид |ИЗ | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Объект В(&Объект) | И КонтактнаяИнформация.Тип = &Тип"); Запрос.УстановитьПараметр("Объект",МассивОбъектов_КИ); Запрос.УстановитьПараметр("Тип",Тип_КИ); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл МассивВозврата.Добавить(Новый Структура("Объект,Вид_КИ,Значение_КИ",Выборка.Объект,Выборка.Вид,Выборка.Представление)); КонецЦикла; КонецЕсли; Возврат МассивВозврата; КонецФункции МассивКонтактнойИнформации = Получить_Все_ВозможныеВиды_КИ_Объекта(пДокументСсылка, Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты, );
9 июл. 2019 г.
Получить контактную информацию
Автор не я.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий