PDA

Просмотр полной версии : Получить данные не предустановленного элемента



Shouldercannon
26.11.2020, 11:43
Есть Справочник с контактной информацией. В нём есть предустановленные элементы и получить их данные нет проблем:

Справочники.ВидыКонтактно� �Информации.АдресЭлектронн ойПочтыРабочий
Справочники.ВидыКонтактно� �Информации.АдресЭлектронн ойПочтыДомашний

В него добавили ещё два элемента (сайт, E-Mail), но НЕ через Конфигуратор. Эти элементы не выцепить как описано выше.

Даже если так

СтруктураЭлектроннойПочты = ВернутьСтруктуруЭлектронн ойПочтыПоВидуКИ(Контраген� �, Справочники.ВидыКонтактно� �Информации.НайтиПоКоду("ЦБ000002"));

То всё равно получаю неопределённое значение АдресЭлектроннойПочты, зато Представление есть.

Функция ПолучитьЭлектроннуюПочту(� �онтрагент)

СтруктураКВозврату = Неопределено;

СтруктураЭлектроннойПочты = ВернутьСтруктуруЭлектронн ойПочтыПоВидуКИ(Контраген� �, Справочники.ВидыКонтактно� �Информации.АдресЭлектронн ойПочтыРабочий);
Если Не ЗначениеЗаполнено(Структу� �аЭлектроннойПочты.Предста вление) Тогда
СтруктураЭлектроннойПочты = ВернутьСтруктуруЭлектронн ойПочтыПоВидуКИ(Контраген� �, Справочники.ВидыКонтактно� �Информации.АдресЭлектронн ойПочтыДомашний);
Иначе
СтруктураЭлектроннойПочты .АдресЭлектроннойПочты = СтруктураЭлектроннойПочты .Представление;
СтруктураКВозврату = СтруктураЭлектроннойПочты ;
КонецЕсли;

Если Не ЗначениеЗаполнено(Структу� �аЭлектроннойПочты.Предста вление) Тогда
СтруктураЭлектроннойПочты = ВернутьСтруктуруЭлектронн ойПочтыПоВидуКИ(Контраген� �, Справочники.ВидыКонтактно� �Информации.НайтиПоКоду("ЦБ000002"));
Иначе
СтруктураЭлектроннойПочты .АдресЭлектроннойПочты = СтруктураЭлектроннойПочты .Представление;
СтруктураКВозврату = СтруктураЭлектроннойПочты ;
КонецЕсли;

Возврат СтруктураКВозврату;

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

Функция ВернутьСтруктуруЭлектронн ойПочтыПоВидуКИ(Контраген� �, ВидКИ)

СтруктураВозврата = Новый Структура("Контрагент, АдресЭлектроннойПочты, Представление");

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

Запрос.УстановитьПараметр("Вид", ВидКИ);
Запрос.УстановитьПараметр("Контрагент", Контрагент);

РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Сл� �дующий();
ЗаполнитьЗначенияСвойств(� �труктураВозврата, ВыборкаДетальныеЗаписи);
КонецЕсли;

Возврат СтруктураВозврата;

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

Konor18
26.11.2020, 16:23
Поставьте точку останова и в отладчике посмотрите параметры и результат запроса.
Возможно результат пустой.