Shouldercannon
26.11.2020, 11:43
Есть Справочник с контактной информацией. В нём есть предустановленные элементы и получить их данные нет проблем:
Справочники.ВидыКонтактно� �Информации.АдресЭлектронн ойПочтыРабочий
Справочники.ВидыКонтактно� �Информации.АдресЭлектронн ойПочтыДомашний
В него добавили ещё два элемента (сайт, E-Mail), но НЕ через Конфигуратор. Эти элементы не выцепить как описано выше.
Даже если так
СтруктураЭлектроннойПочты = ВернутьСтруктуруЭлектронн ойПочтыПоВидуКИ(Контраген� �, Справочники.ВидыКонтактно� �Информации.НайтиПоКоду("ЦБ000002"));
То всё равно получаю неопределённое значение АдресЭлектроннойПочты, зато Представление есть.
Функция ПолучитьЭлектроннуюПочту(� �онтрагент)
СтруктураКВозврату = Неопределено;
СтруктураЭлектроннойПочты = ВернутьСтруктуруЭлектронн ойПочтыПоВидуКИ(Контраген� �, Справочники.ВидыКонтактно� �Информации.АдресЭлектронн ойПочтыРабочий);
Если Не ЗначениеЗаполнено(Структу� �аЭлектроннойПочты.Предста вление) Тогда
СтруктураЭлектроннойПочты = ВернутьСтруктуруЭлектронн ойПочтыПоВидуКИ(Контраген� �, Справочники.ВидыКонтактно� �Информации.АдресЭлектронн ойПочтыДомашний);
Иначе
СтруктураЭлектроннойПочты .АдресЭлектроннойПочты = СтруктураЭлектроннойПочты .Представление;
СтруктураКВозврату = СтруктураЭлектроннойПочты ;
КонецЕсли;
Если Не ЗначениеЗаполнено(Структу� �аЭлектроннойПочты.Предста вление) Тогда
СтруктураЭлектроннойПочты = ВернутьСтруктуруЭлектронн ойПочтыПоВидуКИ(Контраген� �, Справочники.ВидыКонтактно� �Информации.НайтиПоКоду("ЦБ000002"));
Иначе
СтруктураЭлектроннойПочты .АдресЭлектроннойПочты = СтруктураЭлектроннойПочты .Представление;
СтруктураКВозврату = СтруктураЭлектроннойПочты ;
КонецЕсли;
Возврат СтруктураКВозврату;
КонецФункции
Функция ВернутьСтруктуруЭлектронн ойПочтыПоВидуКИ(Контраген� �, ВидКИ)
СтруктураВозврата = Новый Структура("Контрагент, АдресЭлектроннойПочты, Представление");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КонтактнаяИнформация.Объе� �т КАК Контрагент,
| КонтактнаяИнформация.Вид КАК ТипЭлектроннойПочты,
| КонтактнаяИнформация.Пред� �тавление
|ИЗ
| РегистрСведений.Контактна� �Информация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объе� �т = &Контрагент
| И КонтактнаяИнформация.Вид = &Вид";
Запрос.УстановитьПараметр("Вид", ВидКИ);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Сл� �дующий();
ЗаполнитьЗначенияСвойств(� �труктураВозврата, ВыборкаДетальныеЗаписи);
КонецЕсли;
Возврат СтруктураВозврата;
КонецФункции
Справочники.ВидыКонтактно� �Информации.АдресЭлектронн ойПочтыРабочий
Справочники.ВидыКонтактно� �Информации.АдресЭлектронн ойПочтыДомашний
В него добавили ещё два элемента (сайт, E-Mail), но НЕ через Конфигуратор. Эти элементы не выцепить как описано выше.
Даже если так
СтруктураЭлектроннойПочты = ВернутьСтруктуруЭлектронн ойПочтыПоВидуКИ(Контраген� �, Справочники.ВидыКонтактно� �Информации.НайтиПоКоду("ЦБ000002"));
То всё равно получаю неопределённое значение АдресЭлектроннойПочты, зато Представление есть.
Функция ПолучитьЭлектроннуюПочту(� �онтрагент)
СтруктураКВозврату = Неопределено;
СтруктураЭлектроннойПочты = ВернутьСтруктуруЭлектронн ойПочтыПоВидуКИ(Контраген� �, Справочники.ВидыКонтактно� �Информации.АдресЭлектронн ойПочтыРабочий);
Если Не ЗначениеЗаполнено(Структу� �аЭлектроннойПочты.Предста вление) Тогда
СтруктураЭлектроннойПочты = ВернутьСтруктуруЭлектронн ойПочтыПоВидуКИ(Контраген� �, Справочники.ВидыКонтактно� �Информации.АдресЭлектронн ойПочтыДомашний);
Иначе
СтруктураЭлектроннойПочты .АдресЭлектроннойПочты = СтруктураЭлектроннойПочты .Представление;
СтруктураКВозврату = СтруктураЭлектроннойПочты ;
КонецЕсли;
Если Не ЗначениеЗаполнено(Структу� �аЭлектроннойПочты.Предста вление) Тогда
СтруктураЭлектроннойПочты = ВернутьСтруктуруЭлектронн ойПочтыПоВидуКИ(Контраген� �, Справочники.ВидыКонтактно� �Информации.НайтиПоКоду("ЦБ000002"));
Иначе
СтруктураЭлектроннойПочты .АдресЭлектроннойПочты = СтруктураЭлектроннойПочты .Представление;
СтруктураКВозврату = СтруктураЭлектроннойПочты ;
КонецЕсли;
Возврат СтруктураКВозврату;
КонецФункции
Функция ВернутьСтруктуруЭлектронн ойПочтыПоВидуКИ(Контраген� �, ВидКИ)
СтруктураВозврата = Новый Структура("Контрагент, АдресЭлектроннойПочты, Представление");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КонтактнаяИнформация.Объе� �т КАК Контрагент,
| КонтактнаяИнформация.Вид КАК ТипЭлектроннойПочты,
| КонтактнаяИнформация.Пред� �тавление
|ИЗ
| РегистрСведений.Контактна� �Информация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объе� �т = &Контрагент
| И КонтактнаяИнформация.Вид = &Вид";
Запрос.УстановитьПараметр("Вид", ВидКИ);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Сл� �дующий();
ЗаполнитьЗначенияСвойств(� �труктураВозврата, ВыборкаДетальныеЗаписи);
КонецЕсли;
Возврат СтруктураВозврата;
КонецФункции