#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.ВладелецКонтактнойИнформации <> Неопределено Тогда
УстановитьОтборПоВладельцуКонтактнойИнформации(Параметры.ВладелецКонтактнойИнформации);
КонецЕсли;
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя();
Если СуффиксТекущегоЯзыка = Неопределено Тогда
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса = "ВЫБРАТЬ
| ВЫБОР
| КОГДА СправочникВидыКонтактнойИнформации.ЭтоГруппа
| ТОГДА ВЫБОР
| КОГДА СправочникВидыКонтактнойИнформации.ПометкаУдаления
| ТОГДА 1
| КОГДА СправочникВидыКонтактнойИнформации.Предопределенный
| ТОГДА 2
| ИНАЧЕ 0
| КОНЕЦ
| КОГДА СправочникВидыКонтактнойИнформации.ПометкаУдаления
| ТОГДА 4
| КОГДА СправочникВидыКонтактнойИнформации.Предопределенный
| ТОГДА ВЫБОР СправочникВидыКонтактнойИнформации.Тип
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
| ТОГДА 14
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
| ТОГДА 15
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница)
| ТОГДА 16
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Факс)
| ТОГДА 17
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое)
| ТОГДА 18
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
| ТОГДА 19
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Skype)
| ТОГДА 21
| ИНАЧЕ 3
| КОНЕЦ
| ИНАЧЕ ВЫБОР СправочникВидыКонтактнойИнформации.Тип
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
| ТОГДА 7
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
| ТОГДА 8
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница)
| ТОГДА 9
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Факс)
| ТОГДА 10
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое)
| ТОГДА 11
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
| ТОГДА 12
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Skype)
| ТОГДА 20
| ИНАЧЕ 3
| КОНЕЦ
| КОНЕЦ КАК ИндексПиктограммы,
| СправочникВидыКонтактнойИнформации.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзык
| ТОГДА СправочникВидыКонтактнойИнформации.Наименование
| ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ВидыКонтактнойИнформацииПредставления.Наименование,
| СправочникВидыКонтактнойИнформации.Наименование) КАК СТРОКА(150))
| КОНЕЦ КАК Наименование,
| СправочникВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания,
| СправочникВидыКонтактнойИнформации.Используется КАК Используется,
| СправочникВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоГруппа
|ИЗ
| Справочник.ВидыКонтактнойИнформации КАК СправочникВидыКонтактнойИнформации
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыКонтактнойИнформации.Представления КАК ВидыКонтактнойИнформацииПредставления
| ПО (ВидыКонтактнойИнформацииПредставления.Ссылка = СправочникВидыКонтактнойИнформации.Ссылка)
| И (ВидыКонтактнойИнформацииПредставления.КодЯзыка = &КодЯзыка)
|ГДЕ
| СправочникВидыКонтактнойИнформации.Используется
| И ЕСТЬNULL(СправочникВидыКонтактнойИнформации.Родитель.Используется, ИСТИНА)";
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
Список.Параметры.УстановитьЗначениеПараметра("ЭтоОсновнойЯзык", ОбщегоНазначения.ЭтоОсновнойЯзык());
Список.Параметры.УстановитьЗначениеПараметра("КодЯзыка", ТекущийЯзык().КодЯзыка);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда
МодульВерсионированиеОбъектов = ОбщегоНазначения.ОбщийМодуль("ВерсионированиеОбъектов");
МодульВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Если Копирование И Группа Тогда
Отказ = Истина;
ПоказатьПредупреждение(, НСтр("ru = 'Добавление новых групп в справочнике запрещено.'"));
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элементы.Список.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
Если ТекущиеДанные.ЭтоГруппа Тогда
СтандартнаяОбработка = Ложь;
ПерейтиКСписку(Неопределено);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПерейтиКСписку(Команда)
Если Элементы.Список.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ОткрытьФорму(ИмяФормыСписка(Элементы.Список.ТекущиеДанные.Ссылка));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Список);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
Элемент = Список.УсловноеОформление.Элементы.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Используется");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
КонецПроцедуры
&НаСервере
Процедура УстановитьОтборПоВладельцуКонтактнойИнформации(ВладелецКонтактнойИнформации)
ТипСсылки = ТипЗнч(ВладелецКонтактнойИнформации);
МетаданныеСправочника = Метаданные.НайтиПоТипу(ТипСсылки);
Если МетаданныеСправочника = Неопределено Тогда
Возврат;
КонецЕсли;
ГруппаВидовКИ = УправлениеКонтактнойИнформациейСлужебныйПовтИсп.ГруппаВидаКонтактнойИнформацииПоИмениОбъекта(
МетаданныеСправочника.ПолноеИмя());
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Родитель");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = ГруппаВидовКИ;
Элементы.Список.Отображение = ОтображениеТаблицы.Список;
Заголовок = ?(ГруппаВидовКИ = Неопределено, "", ГруппаВидовКИ.Наименование);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ИмяФормыСписка(ВидКонтактнойИнформацииСсылка)
ЭтоГруппа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВидКонтактнойИнформацииСсылка, "ЭтоГруппа,Родитель");
ГруппаВидаСсылка = ?(ЭтоГруппа.ЭтоГруппа, ВидКонтактнойИнформацииСсылка, ЭтоГруппа.Родитель);
Запрос = Новый Запрос(
"ВЫБРАТЬ
|ВЫБОР
| КОГДА ВидыКонтактнойИнформации.ИмяПредопределенногоВида <> """"
| ТОГДА ВидыКонтактнойИнформации.ИмяПредопределенногоВида
| ИНАЧЕ ВидыКонтактнойИнформации.ИмяПредопределенныхДанных
|КОНЕЦ КАК ИмяПредопределенногоВида
|ИЗ
| Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
|ГДЕ
| ВидыКонтактнойИнформации.Ссылка = &ГруппаВидаСсылка");
Запрос.УстановитьПараметр("ГруппаВидаСсылка", ГруппаВидаСсылка);
ИмяПредопределенногоВида = ВРЕГ(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ИмяПредопределенногоВида")[0]);
ИменаБазовыхТипов = Новый Массив;
ИменаБазовыхТипов.Добавить("Справочник");
ИменаБазовыхТипов.Добавить("Документ");
ИменаБазовыхТипов.Добавить("БизнесПроцесс");
ИменаБазовыхТипов.Добавить("Задача");
ИменаБазовыхТипов.Добавить("ПланСчетов");
ИменаБазовыхТипов.Добавить("ПланОбмена");
ИменаБазовыхТипов.Добавить("ПланВидовХарактеристик");
ИменаБазовыхТипов.Добавить("ПланВидовРасчета");
Для каждого ИмяБазовогоТипа Из ИменаБазовыхТипов Цикл
Если СтрНачинаетсяС(ИмяПредопределенногоВида, ВРег(ИмяБазовогоТипа)) Тогда
Возврат ИмяБазовогоТипа + "."
+ Сред(ИмяПредопределенногоВида, СтрДлина(ИмяБазовогоТипа) + 1, СтрДлина(ИмяПредопределенногоВида))
+ ".ФормаСписка";
КонецЕсли;
КонецЦикла;
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Невозможно перейти к списку %1'"), ВидКонтактнойИнформацииСсылка);
КонецФункции
#КонецОбласти