#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.РежимВыбора Тогда
СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ВыборПодбор");
РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
КонецЕсли;
Если Параметры.Отбор.Свойство("Владелец") Тогда
Свойство = Параметры.Отбор.Владелец;
Параметры.Отбор.Удалить("Владелец");
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Свойство) Тогда
Элементы.Свойство.Видимость = Истина;
НастроитьПорядокЗначенийПоСвойствам(Список);
КонецЕсли;
Если Параметры.РежимВыбора Тогда
Если Параметры.Свойство("ВыборГруппИЭлементов")
И Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Группы Тогда
ВыборГрупп = Истина;
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "ЭтоГруппа", Истина);
Иначе
Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы;
КонецЕсли;
Иначе
Элементы.Список.РежимВыбора = Ложь;
КонецЕсли;
УстановитьЗаголовок();
Если ВыборГрупп Тогда
Если Элементы.Найти("ФормаСоздать") <> Неопределено Тогда
Элементы.ФормаСоздать.Видимость = Ложь;
КонецЕсли;
КонецЕсли;
ПриИзмененииСвойства();
СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя();
Если СуффиксТекущегоЯзыка = Неопределено Тогда
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "ЗначенияПереопределяемый.Наименование КАК Наименование",
"ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, ЗначенияПереопределяемый.Наименование) КАК СТРОКА(150)) КАК Наименование");
СвойстваСписка.ТекстЗапроса = СвойстваСписка.ТекстЗапроса + "
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектов.Представления КАК ЗначенияПредставления
| ПО (ЗначенияПредставления.Ссылка = ЗначенияПереопределяемый.Ссылка)
| И ЗначенияПредставления.КодЯзыка = &КодЯзыка";
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
Список, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина);
Иначе
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Запись_ДополнительныеРеквизитыИСведения"
И ( Источник = Свойство
ИЛИ Источник = ВладелецДополнительныхЗначений) Тогда
ПодключитьОбработчикОжидания("ОбработчикОжиданияПриИзмененииСвойства", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СвойствоПриИзменении(Элемент)
ПриИзмененииСвойства();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок
&НаКлиенте
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Если НЕ Копирование
И Элементы.Список.Отображение = ОтображениеТаблицы.Список Тогда
Родитель = Неопределено;
КонецЕсли;
Если ВыборГрупп
И НЕ Группа Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СписокПередНачаломИзменения(Элемент, Отказ)
Отказ = Истина;
Если Элементы.Список.ТекущаяСтрока <> Неопределено Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СкрытьВладельца", Истина);
ПараметрыФормы.Вставить("ПоказатьВес", ДополнительныеЗначенияСВесом);
ПараметрыФормы.Вставить("Ключ", Элементы.Список.ТекущаяСтрока);
ОткрытьФорму("Справочник.ЗначенияСвойствОбъектов.ФормаОбъекта", ПараметрыФормы, Элементы.Список);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура НастроитьПорядокЗначенийПоСвойствам(Список)
Перем Порядок;
Порядок = Список.КомпоновщикНастроек.Настройки.Порядок;
Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок";
Порядок.Элементы.Очистить();
ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Владелец");
ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр;
ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементПорядка.Использование = Истина;
ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("ЭтоГруппа");
ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв;
ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементПорядка.Использование = Истина;
ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Наименование");
ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр;
ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементПорядка.Использование = Истина;
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовок()
СтрокаЗаголовка = "";
Если ЗначениеЗаполнено(Свойство) Тогда
СтрокаЗаголовка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Свойство, "ЗаголовокФормыВыбораЗначения",, ТекущийЯзык().КодЯзыка);
КонецЕсли;
Если ПустаяСтрока(СтрокаЗаголовка) Тогда
Если ЗначениеЗаполнено(Свойство) Тогда
Если НЕ Параметры.РежимВыбора Тогда
СтрокаЗаголовка = НСтр("ru = 'Значения свойства %1'");
ИначеЕсли ВыборГрупп Тогда
СтрокаЗаголовка = НСтр("ru = 'Выберите группу значений свойства %1'");
Иначе
СтрокаЗаголовка = НСтр("ru = 'Выберите значение свойства %1'");
КонецЕсли;
СтрокаЗаголовка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаЗаголовка,
Строка(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Свойство, "Заголовок")));
ИначеЕсли Параметры.РежимВыбора Тогда
Если ВыборГрупп Тогда
СтрокаЗаголовка = НСтр("ru = 'Выберите группу значений свойства'");
Иначе
СтрокаЗаголовка = НСтр("ru = 'Выберите значение свойства'");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если НЕ ПустаяСтрока(СтрокаЗаголовка) Тогда
АвтоЗаголовок = Ложь;
Заголовок = СтрокаЗаголовка;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработчикОжиданияПриИзмененииСвойства()
ПриИзмененииСвойства();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСвойства()
Если ЗначениеЗаполнено(Свойство) Тогда
ВладелецДополнительныхЗначений = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Свойство, "ВладелецДополнительныхЗначений");
Если ЗначениеЗаполнено(ВладелецДополнительныхЗначений) Тогда
ТолькоПросмотр = Истина;
ТипЗначения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
ВладелецДополнительныхЗначений, "ТипЗначения");
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, "Владелец", ВладелецДополнительныхЗначений);
ДополнительныеЗначенияСВесом = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
ВладелецДополнительныхЗначений, "ДополнительныеЗначенияСВесом");
Иначе
ТолькоПросмотр = Ложь;
ТипЗначения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Свойство, "ТипЗначения");
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, "Владелец", Свойство);
ДополнительныеЗначенияСВесом = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Свойство, "ДополнительныеЗначенияСВесом");
КонецЕсли;
Если ТипЗнч(ТипЗначения) = Тип("ОписаниеТипов")
И ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда
Элементы.Список.ИзменятьСоставСтрок = Истина;
Иначе
Элементы.Список.ИзменятьСоставСтрок = Ложь;
КонецЕсли;
Элементы.Список.Отображение = ОтображениеТаблицы.ИерархическийСписок;
Элементы.Владелец.Видимость = Ложь;
Элементы.Вес.Видимость = ДополнительныеЗначенияСВесом;
Иначе
ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(
Список, "Владелец");
Элементы.Список.Отображение = ОтображениеТаблицы.Список;
Элементы.Список.ИзменятьСоставСтрок = Ложь;
Элементы.Владелец.Видимость = Истина;
Элементы.Вес.Видимость = Ложь;
КонецЕсли;
Элементы.Список.Шапка = Элементы.Владелец.Видимость Или Элементы.Вес.Видимость;
КонецПроцедуры
#КонецОбласти