#Область ОписаниеПеременных
&НаКлиенте
Перем ОбработкаЗавершенияЗаписи, ОбработкаПродолженияПриОшибкеЗаписи, ОтказПриЗаписи;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
СоздатьСтруктуруПереданныхПараметров();
Если ПереданныеПараметрыФормы.ВыборОбщегоСвойства
Или ПереданныеПараметрыФормы.ВыборВладельцаДополнительныхЗначений
Или ПереданныеПараметрыФормы.КопированиеСВопросом Тогда
РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
РежимПомощника = Истина;
Если ПереданныеПараметрыФормы.КопированиеСВопросом Тогда
Элементы.СтраницыПомощникКарточка.ТекущаяСтраница = Элементы.ВыборДействия;
ЗаполнитьСписокДействийПриДобавленииРеквизита();
Иначе
ЗаполнитьСтраницуВыбора();
КонецЕсли;
ОбновитьСоставЭлементовФормы();
Если ОбщегоНазначения.ЭтоВебКлиент() Тогда
Элементы.КарточкаРеквизита.Видимость = Ложь;
КонецЕсли;
Иначе
ЗаполнитьКарточкуСвойства();
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
КонецЕсли;
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПоискИУдалениеДублей") Тогда
Элементы.ФормаПоискИУдалениеДублей.Видимость = Ложь;
КонецЕсли;
Элементы.ГруппаМногострочность.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение;
Если Не УправлениеСвойствамиСлужебный.ТипЗначенияСодержитЗначенияСвойств(Объект.ТипЗначения) Тогда
Элементы.ГруппаСвойстваИЗависимости.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение;
Элементы.ОстальныеРеквизиты.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение;
КонецЕсли;
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
Элементы.НаборыСвойств.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни;
Элементы.ГруппаДополнительнаяИнформация.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение;
Элементы.Закрыть.Видимость = Ложь;
Элементы.ГруппаНаименованиеРеквизита.ВыравниваниеЭлементовИЗаголовков = ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево;
Элементы.ТипЗначенияРеквизита.ВыравниваниеЭлементовИЗаголовков = ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево;
КонецЕсли;
Элементы.ЗаполнитьИдентификаторДляФормул.Доступность = НЕ Элементы.ИдентификаторДляФормул.ТолькоПросмотр;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект);
КонецЕсли;
ТекущийЗаголовок = Объект.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ТипЗнч(ВыбранноеЗначение) = Тип("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения") Тогда
Закрыть();
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", ВыбранноеЗначение);
ПараметрыФормы.Вставить("ТекущийНаборСвойств", ТекущийНаборСвойств);
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта",
ПараметрыФормы, ВладелецФормы);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если НЕ ПараметрыЗаписи.Свойство("ПодтвержденоИзменениеНаименования") Тогда
Если ЗначениеЗаполнено(ТекущийЗаголовок) И ТекущийЗаголовок <> Объект.Заголовок Тогда
ТекстВопроса = НСтр("ru = 'Наименование было изменено. Потребуется заново настроить отображение
|дополнительного реквизита в списках и отчетах, а также использование
|в отборах.'");
ТекстВопроса = СтрЗаменить(ТекстВопроса, Символы.ПС, " ");
Кнопки = Новый СписокЗначений;
Кнопки.Добавить("ПродолжитьЗапись", НСтр("ru = 'Переименовать'"));
Кнопки.Добавить("ВернутьНаименование", НСтр("ru = 'Отмена'"));
ОтказПриЗаписи = Истина;
Отказ = Истина;
ПоказатьВопрос(
Новый ОписаниеОповещения("ПослеОтветаНаВопросОбИзмененииНаименования", ЭтотОбъект, ПараметрыЗаписи),
ТекстВопроса, Кнопки, , "ВернутьНаименование");
Возврат;
КонецЕсли;
КонецЕсли;
Если НЕ ПараметрыЗаписи.Свойство("КогдаНаименованиеУжеИспользуется") Тогда
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
ТекстВопроса = НаименованиеУжеИспользуется(
Объект.Заголовок, Объект.Ссылка, ТекущийНаборСвойств, Объект.Наименование, Объект.ЗаголовокЯзык1, Объект.ЗаголовокЯзык2);
Иначе
ТекстВопроса = НаименованиеУжеИспользуется(
Объект.Заголовок, Объект.Ссылка, ТекущийНаборСвойств, Объект.Наименование, "", "");
КонецЕсли;
Если ЗначениеЗаполнено(ТекстВопроса) Тогда
Кнопки = Новый СписокЗначений;
Кнопки.Добавить("ПродолжитьЗапись", НСтр("ru = 'Продолжить запись'"));
Кнопки.Добавить("ВернутьсяКВводуНаименования", НСтр("ru = 'Вернуться к вводу наименования'"));
ОтказПриЗаписи = Истина;
Отказ = Истина;
ПоказатьВопрос(
Новый ОписаниеОповещения("ПослеОтветаНаВопросКогдаНаименованиеУжеИспользуется", ЭтотОбъект, ПараметрыЗаписи),
ТекстВопроса, Кнопки, , "ВернутьсяКВводуНаименования");
Возврат;
КонецЕсли;
КонецЕсли;
Если НЕ ПараметрыЗаписи.Свойство("КогдаИмяУжеИспользуется")
И ЗначениеЗаполнено(Объект.Имя) Тогда
ТекстВопроса = ИмяУжеИспользуется(
Объект.Имя, Объект.Ссылка, Объект.Наименование);
Если ЗначениеЗаполнено(ТекстВопроса) Тогда
Кнопки = Новый СписокЗначений;
Кнопки.Добавить("ПродолжитьЗапись", НСтр("ru = 'Продолжить'"));
Кнопки.Добавить("ВернутьсяКВводуИмени", НСтр("ru = 'Отмена'"));
ОтказПриЗаписи = Истина;
Отказ = Истина;
ПоказатьВопрос(
Новый ОписаниеОповещения("ПослеОтветаНаВопросКогдаИмяУжеИспользуется", ЭтотОбъект, ПараметрыЗаписи),
ТекстВопроса, Кнопки, , "ПродолжитьЗапись");
Возврат;
КонецЕсли;
КонецЕсли;
Если НЕ ПараметрыЗаписи.Свойство("КогдаИдентификаторДляФормулУжеИспользуется")
И ЗначениеЗаполнено(Объект.ИдентификаторДляФормул) Тогда
ТекстВопроса = ИдентификаторДляФормулУжеИспользуется(
Объект.ИдентификаторДляФормул, Объект.Ссылка);
Если ЗначениеЗаполнено(ТекстВопроса) Тогда
Кнопки = Новый СписокЗначений;
Кнопки.Добавить("ПродолжитьЗапись", НСтр("ru = 'Продолжить'"));
Кнопки.Добавить("ВернутьсяКВводуИдентификатора", НСтр("ru = 'Отмена'"));
ОтказПриЗаписи = Истина;
Отказ = Истина;
ПоказатьВопрос(
Новый ОписаниеОповещения("ПослеОтветаНаВопросКогдаИдентификаторДляФормулУжеИспользуется", ЭтотОбъект, ПараметрыЗаписи),
ТекстВопроса, Кнопки, , "ПродолжитьЗапись");
Возврат;
Иначе
ПараметрыЗаписи.Вставить("ПроверкаИдентификатораДляФормулВыполнена");
КонецЕсли;
КонецЕсли;
ЗаполнитьМультиязычныеРеквизиты();
Если ПараметрыЗаписи.Свойство("ОбработкаПродолжения") Тогда
ОбработкаПродолженияПриОшибкеЗаписи = ПараметрыЗаписи.ОбработкаПродолжения;
ПодключитьОбработчикОжидания("ПослеОшибкиЗаписи", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если УправлениеСвойствамиСлужебный.ТипЗначенияСодержитЗначенияСвойств(Объект.ТипЗначения) Тогда
ТекущийОбъект.ДополнительныеЗначенияИспользуются = Истина;
Иначе
ТекущийОбъект.ДополнительныеЗначенияИспользуются = Ложь;
ТекущийОбъект.ЗаголовокФормыЗначения = "";
ТекущийОбъект.ЗаголовокФормыВыбораЗначения = "";
КонецЕсли;
Если Объект.ЭтоДополнительноеСведение
ИЛИ НЕ ( Объект.ТипЗначения.СодержитТип(Тип("Число" ))
ИЛИ Объект.ТипЗначения.СодержитТип(Тип("Дата" ))
ИЛИ Объект.ТипЗначения.СодержитТип(Тип("Булево")) )Тогда
ТекущийОбъект.ФорматСвойства = "";
КонецЕсли;
ТекущийОбъект.МногострочноеПолеВвода = 0;
Если НЕ Объект.ЭтоДополнительноеСведение
И Объект.ТипЗначения.Типы().Количество() = 1
И Объект.ТипЗначения.СодержитТип(Тип("Строка")) Тогда
Если ПредставлениеРеквизита = "МногострочноеПолеВвода" Тогда
ТекущийОбъект.МногострочноеПолеВвода = МногострочноеПолеВводаЧисло;
ТекущийОбъект.ВыводитьВВидеГиперссылки = Ложь;
КонецЕсли;
КонецЕсли;
Если Не ЗначениеЗаполнено(ТекущийОбъект.Имя)
Или ПараметрыЗаписи.Свойство("КогдаИмяУжеИспользуется") Тогда
ТекущийОбъект.Имя = "";
ЗаголовокОбъекта = ТекущийОбъект.Заголовок;
УправлениеСвойствамиСлужебный.УдалитьНедопустимыеСимволы(ЗаголовокОбъекта);
ЗаголовокОбъектаЧастями = СтрРазделить(ЗаголовокОбъекта, " ", Ложь);
Для Каждого ЧастьЗаголовка Из ЗаголовокОбъектаЧастями Цикл
ТекущийОбъект.Имя = ТекущийОбъект.Имя + ВРег(Лев(ЧастьЗаголовка, 1)) + Сред(ЧастьЗаголовка, 2);
КонецЦикла;
Если УправлениеСвойствамиСлужебный.ИмяНачинаетсяСЦифры(ТекущийОбъект.Имя) Тогда
ТекущийОбъект.Имя = "_" + ТекущийОбъект.Имя;
КонецЕсли;
УИД = Новый УникальныйИдентификатор();
СтрокаУИД = СтрЗаменить(Строка(УИД), "-", "");
ТекущийОбъект.Имя = ТекущийОбъект.Имя + "_" + СтрокаУИД;
КонецЕсли;
Если Не ЗначениеЗаполнено(ТекущийОбъект.ИдентификаторДляФормул)
Или ПараметрыЗаписи.Свойство("КогдаИдентификаторДляФормулУжеИспользуется") Тогда
ЗаголовокОбъекта = ТекущийОбъект.Заголовок;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
СуффиксТекущегоЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка();
Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) И ЗначениеЗаполнено(ТекущийОбъект["Заголовок" + СуффиксТекущегоЯзыка]) Тогда
ЗаголовокОбъекта = ТекущийОбъект["Заголовок" + СуффиксТекущегоЯзыка];
КонецЕсли;
КонецЕсли;
ТекущийОбъект.ИдентификаторДляФормул = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.УникальныйИдентификаторДляФормул(
ЗаголовокОбъекта, ТекущийОбъект.Ссылка);
ПараметрыЗаписи.Вставить("ПроверкаИдентификатораДляФормулВыполнена");
КонецЕсли;
Если ПараметрыЗаписи.Свойство("ПроверкаИдентификатораДляФормулВыполнена") Тогда
ТекущийОбъект.ДополнительныеСвойства.Вставить("ПроверкаИдентификатораДляФормулВыполнена");
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПередЗаписьюНаСервере(ТекущийОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ЗначениеЗаполнено(ТекущийНаборСвойств) Тогда
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.НаборыДополнительныхРеквизитовИСведений");
ЭлементБлокировки.УстановитьЗначение("Ссылка", ТекущийНаборСвойств);
Блокировка.Заблокировать();
ЗаблокироватьДанныеДляРедактирования(ТекущийНаборСвойств);
ОбъектНаборСвойств = ТекущийНаборСвойств.ПолучитьОбъект();
Если ТекущийОбъект.ЭтоДополнительноеСведение Тогда
ТабличнаяЧасть = ОбъектНаборСвойств.ДополнительныеСведения;
Иначе
ТабличнаяЧасть = ОбъектНаборСвойств.ДополнительныеРеквизиты;
КонецЕсли;
НайденнаяСтрока = ТабличнаяЧасть.Найти(ТекущийОбъект.Ссылка, "Свойство");
Если НайденнаяСтрока = Неопределено Тогда
НоваяСтрока = ТабличнаяЧасть.Добавить();
НоваяСтрока.Свойство = ТекущийОбъект.Ссылка;
ОбъектНаборСвойств.Записать();
ТекущийОбъект.ДополнительныеСвойства.Вставить("ИзмененныйНабор", ТекущийНаборСвойств);
КонецЕсли;
КонецЕсли;
Если ПараметрыЗаписи.Свойство("ОчиститьВведенныеВесовыеКоэффициенты") Тогда
ОчиститьВведенныеВесовыеКоэффициенты();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецЕсли;
Если РежимДобавленияРеквизита = "СоздатьКопированием" Тогда
ЗаписатьЗначенияДополнительногоРеквизитаПриКопировании(ТекущийОбъект);
КонецЕсли;
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
ОбновитьСоставЭлементовФормы();
Если ТекущийОбъект.ДополнительныеСвойства.Свойство("ИзмененныйНабор") Тогда
ПараметрыЗаписи.Вставить("ИзмененныйНабор", ТекущийОбъект.ДополнительныеСвойства.ИзмененныйНабор);
КонецЕсли;
ТекущийЗаголовок = Объект.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_ДополнительныеРеквизитыИСведения",
Новый Структура("Ссылка", Объект.Ссылка), Объект.Ссылка);
Если ПараметрыЗаписи.Свойство("ИзмененныйНабор") Тогда
Оповестить("Запись_НаборыДополнительныхРеквизитовИСведений",
Новый Структура("Ссылка", ПараметрыЗаписи.ИзмененныйНабор), ПараметрыЗаписи.ИзмененныйНабор);
КонецЕсли;
Если ПараметрыЗаписи.Свойство("ОбработкаПродолжения") Тогда
ОбработкаПродолженияПриОшибкеЗаписи = Неопределено;
ОтключитьОбработчикОжидания("ПослеОшибкиЗаписи");
ВыполнитьОбработкуОповещения(
Новый ОписаниеОповещения(ПараметрыЗаписи.ОбработкаПродолжения.ИмяПроцедуры,
ЭтотОбъект, ПараметрыЗаписи.ОбработкаПродолжения.Параметры),
Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если РежимПомощника Тогда
УстановитьНастройкиПомощника();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Свойства_УстановленаЗависимостьРеквизита" Тогда
Модифицированность = Истина;
ЗначениеДобавлено = Ложь;
Для Каждого УсловиеЗависимости Из УсловияЗависимостиРеквизитов Цикл
Значение = Неопределено;
Если Параметр.Свойство(УсловиеЗависимости.Представление, Значение) Тогда
ЗначениеВХранилище = ПоместитьВоВременноеХранилище(Значение, УникальныйИдентификатор);
УсловиеЗависимости.Значение = ЗначениеВХранилище;
ЗначениеДобавлено = Истина;
КонецЕсли;
КонецЦикла;
Если Не ЗначениеДобавлено Тогда
Для Каждого ПереданныйПараметр Из Параметр Цикл
ЗначениеВХранилище = ПоместитьВоВременноеХранилище(ПереданныйПараметр.Значение, УникальныйИдентификатор);
УсловияЗависимостиРеквизитов.Добавить(ЗначениеВХранилище, ПереданныйПараметр.Ключ);
КонецЦикла;
КонецЕсли;
УстановитьЗависимостиДополнительныхРеквизитов();
КонецЕсли;
Если ИмяСобытия = "ПослеВводаСтрокНаРазныхЯзыках"
И Параметр = ЭтотОбъект Тогда
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбновитьПредлагаемоеЗначениеИдентификатора();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ВидСвойствПриИзменении(Элемент)
Объект.ВидСвойства = ВидСвойства;
Если Объект.ВидСвойства = ПредопределенноеЗначение("Перечисление.ВидыСвойств.ДополнительныеСведения") Тогда
Объект.ЭтоДополнительноеСведение = Истина;
КонецЕсли;
ОбновитьСоставЭлементовФормы();
КонецПроцедуры
&НаКлиенте
Процедура УточнениеСпискаЗначенийКомментарийНажатие(Элемент)
ОбработчикПродолжения = Новый ОписаниеОповещения("УточнениеСпискаЗначенийКомментарийНажатиеЗавершение", ЭтотОбъект);
ЗаписатьОбъект("ПереходКСпискуЗначений", ОбработчикПродолжения);
КонецПроцедуры
&НаКлиенте
Процедура УточнениеНаборовКомментарийНажатие(Элемент)
ОбработчикПродолжения = Новый ОписаниеОповещения("УточнениеНаборовКомментарийНажатиеПродолжение", ЭтотОбъект);
ЗаписатьОбъект("ПереходКСпискуЗначений", ОбработчикПродолжения);
КонецПроцедуры
&НаКлиенте
Процедура ТипЗначенияПриИзменении(Элемент)
ТекстПредупреждения = "";
ОбновитьСоставЭлементовФормы(ТекстПредупреждения);
Если ЗначениеЗаполнено(ТекстПредупреждения) Тогда
ПоказатьПредупреждение(, ТекстПредупреждения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДополнительныеЗначенияСВесомПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.Ссылка)
И НЕ Объект.ДополнительныеЗначенияСВесом Тогда
ТекстВопроса =
НСтр("ru = 'Очистить введенные весовые коэффициенты?
|
|Данные будут записаны.'");
Кнопки = Новый СписокЗначений;
Кнопки.Добавить("ОчиститьИЗаписать", НСтр("ru = 'Очистить и записать'"));
Кнопки.Добавить("Отмена", НСтр("ru = 'Отмена'"));
ПоказатьВопрос(
Новый ОписаниеОповещения("ПослеПодтвержденияОчисткиВесовыхКоэффициентов", ЭтотОбъект),
ТекстВопроса, Кнопки, , "ОчиститьИЗаписать");
Иначе
ТекстВопроса = НСтр("ru = 'Данные будут записаны.'");
Кнопки = Новый СписокЗначений;
Кнопки.Добавить("Записать", НСтр("ru = 'Записать'"));
Кнопки.Добавить("Отмена", НСтр("ru = 'Отмена'"));
ПоказатьВопрос(
Новый ОписаниеОповещения("ПослеПодтвержденияВключенияВесовыхКоэффициентов", ЭтотОбъект),
ТекстВопроса, Кнопки, , "Записать");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МногострочноеПолеВводаЧислоПриИзменении(Элемент)
ПредставлениеРеквизита = "МногострочноеПолеВвода";
КонецПроцедуры
&НаКлиенте
Процедура КомментарийОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элемент.ТекстРедактирования, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнятьОбязательноПриИзменении(Элемент)
Элементы.ЗадатьУсловиеЗаполнения.Доступность = Объект.ЗаполнятьОбязательно;
КонецПроцедуры
&НаКлиенте
Процедура ЗадатьУсловиеДоступностиНажатие(Элемент)
ОткрытьФормуНастройкиЗависимости("Доступен");
КонецПроцедуры
&НаКлиенте
Процедура ЗадатьУсловиеНажатие(Элемент)
ОткрытьФормуНастройкиЗависимости("ЗаполнятьОбязательно");
КонецПроцедуры
&НаКлиенте
Процедура ЗадатьУсловиеВидимостиНажатие(Элемент)
ОткрытьФормуНастройкиЗависимости("Виден");
КонецПроцедуры
&НаКлиенте
Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элемент.ТекстРедактирования, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ВидРеквизитаПриИзменении(Элемент)
Элементы.ВыводитьВВидеГиперссылки.Доступность = (ПредставлениеРеквизита = "ОднострочноеПолеВвода");
Элементы.МногострочноеПолеВводаЧисло.Доступность = (ПредставлениеРеквизита = "МногострочноеПолеВвода");
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Открытие(Элемент, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиент");
МодульМультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыНаборыСвойств
&НаКлиенте
Процедура НаборыСвойствПриАктивизацииСтроки(Элемент)
ПодключитьОбработчикОжидания("ПриИзмененииТекущегоНабора", 0.1, Истина)
КонецПроцедуры
&НаКлиенте
Процедура НаборыСвойствПередНачаломИзменения(Элемент, Отказ)
Отказ = Истина;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСвойстваВыбор
&НаКлиенте
Процедура СвойстваВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КомандаДалее(Неопределено);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыЗначения
&НаКлиенте
Процедура ЗначенияПриИзменении(Элемент)
Если Элемент.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда
ИмяСобытия = "Запись_ЗначенияСвойствОбъектов";
Иначе
ИмяСобытия = "Запись_ЗначенияСвойствОбъектовИерархия";
КонецЕсли;
Оповестить(ИмяСобытия,
Новый Структура("Ссылка", Элемент.ТекущиеДанные.Ссылка),
Элемент.ТекущиеДанные.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ЗначенияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Копирование", Копирование);
ДополнительныеПараметры.Вставить("Родитель", Родитель);
ДополнительныеПараметры.Вставить("Группа", Группа);
ОбработчикПродолжения = Новый ОписаниеОповещения("ЗначенияПередНачаломДобавленияЗавершение", ЭтотОбъект);
ЗаписатьОбъект("ПереходКСпискуЗначений", ОбработчикПродолжения, ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура ЗначенияПередНачаломИзменения(Элемент, Отказ)
Отказ = Истина;
Если Элементы.ДополнительныеЗначения.ТолькоПросмотр Тогда
Возврат;
КонецЕсли;
ОбработчикПродолжения = Новый ОписаниеОповещения("ЗначенияПередНачаломИзмененияЗавершение", ЭтотОбъект);
ЗаписатьОбъект("ПереходКСпискуЗначений", ОбработчикПродолжения);
КонецПроцедуры
&НаКлиенте
Процедура ЗаголовокПриИзменении(Элемент)
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбновитьПредлагаемоеЗначениеИдентификатора();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура КомандаДалее(Команда)
#Если ВебКлиент Тогда
Если Не Элементы.КарточкаРеквизита.Видимость Тогда
Элементы.КарточкаРеквизита.Видимость = Истина;
КонецЕсли;
#КонецЕсли
Если РежимДобавленияРеквизита = "ДобавитьОбщийРеквизитВНабор" Тогда
Результат = Новый Структура;
Результат.Вставить("ОбщееСвойство", ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений);
Если ПереданныеПараметрыФормы.Перетаскивание Тогда
Результат.Вставить("Перетаскивание", Истина);
КонецЕсли;
ОповеститьОВыборе(Результат);
Возврат;
КонецЕсли;
ОсновнаяСтраница = Элементы.СтраницыПомощникКарточка;
ИндексСтраницы = ОсновнаяСтраница.ПодчиненныеЭлементы.Индекс(ОсновнаяСтраница.ТекущаяСтраница);
Если ИндексСтраницы = 0
И Элементы.Свойства.ТекущиеДанные = Неопределено Тогда
ТекстПредупреждения = НСтр("ru = 'Элемент не выбран.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
Если ИндексСтраницы = 2 Тогда
ЗаполнитьМультиязычныеРеквизиты();
Если Не ПроверитьЗаполнение() Тогда
Возврат;
КонецЕсли;
Если РежимДобавленияРеквизита = "СоздатьКопированием" Тогда
Элементы.СтраницыЗначенияРеквизита.ТекущаяСтраница = Элементы.ДополнительныеЗначения;
КонецЕсли;
Записать();
Если ОтказПриЗаписи <> Истина Тогда
Закрыть();
КонецЕсли;
Возврат;
КонецЕсли;
ТекущаяСтраница = ОсновнаяСтраница.ПодчиненныеЭлементы.Получить(ИндексСтраницы + 1);
УстановитьНастройкиПомощника(ТекущаяСтраница);
ПриСменеСтраницы("Вперед", ОсновнаяСтраница, ТекущаяСтраница);
КонецПроцедуры
&НаКлиенте
Процедура КомандаНазад(Команда)
ОсновнаяСтраница = Элементы.СтраницыПомощникКарточка;
ИндексСтраницы = ОсновнаяСтраница.ПодчиненныеЭлементы.Индекс(ОсновнаяСтраница.ТекущаяСтраница);
Если ИндексСтраницы = 1 Тогда
РежимДобавленияРеквизита = "";
КонецЕсли;
ТекущаяСтраница = ОсновнаяСтраница.ПодчиненныеЭлементы.Получить(ИндексСтраницы - 1);
УстановитьНастройкиПомощника(ТекущаяСтраница);
ПриСменеСтраницы("Назад", ОсновнаяСтраница, ТекущаяСтраница);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьФорму(Команда)
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьФорматЗначения(Команда)
Конструктор = Новый КонструкторФорматнойСтроки(Объект.ФорматСвойства);
Конструктор.ДоступныеТипы = Объект.ТипЗначения;
Конструктор.Показать(
Новый ОписаниеОповещения("РедактироватьФорматЗначенияЗавершение", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура УточнениеСпискаЗначенийИзменить(Команда)
ОбработчикПродолжения = Новый ОписаниеОповещения("УточнениеСпискаЗначенийИзменитьЗавершение", ЭтотОбъект);
ЗаписатьОбъект("ИзменениеВидаРеквизита", ОбработчикПродолжения);
КонецПроцедуры
&НаКлиенте
Процедура УточнениеНаборовИзменить(Команда)
ОбработчикПродолжения = Новый ОписаниеОповещения("УточнениеНаборовИзменитьЗавершение", ЭтотОбъект);
ЗаписатьОбъект("ИзменениеВидаРеквизита", ОбработчикПродолжения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
ЗаблокированныеРеквизиты = ЗапретРедактированияРеквизитовОбъектовКлиент.Реквизиты(ЭтотОбъект);
Если ЗаблокированныеРеквизиты.Количество() > 0 Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ссылка", Объект.Ссылка);
ПараметрыФормы.Вставить("ЭтоДополнительныйРеквизит", Не Объект.ЭтоДополнительноеСведение);
ПараметрыФормы.Вставить("ВидСвойства", Объект.ВидСвойства);
Оповещение = Новый ОписаниеОповещения("ПослеВыбораРеквизитовДляРазблокирования", ЭтотОбъект);
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Форма.РазблокированиеРеквизитов",
ПараметрыФормы, ЭтотОбъект,,,, Оповещение);
Иначе
ЗапретРедактированияРеквизитовОбъектовКлиент.ПоказатьПредупреждениеВсеВидимыеРеквизитыРазблокированы();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоискИУдалениеДублей(Команда)
МодульПоискИУдалениеДублейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПоискИУдалениеДублейКлиент");
ИмяФормыПоискИУдалениеДублей = МодульПоискИУдалениеДублейКлиент.ИмяФормыОбработкиПоискИУдалениеДублей();
ОткрытьФорму(ИмяФормыПоискИУдалениеДублей);
КонецПроцедуры
&НаКлиенте
Процедура Изменить(Команда)
Если Элементы.Свойства.ТекущиеДанные <> Неопределено Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", Элементы.Свойства.ТекущиеДанные.Свойство);
ПараметрыФормы.Вставить("ТекущийНаборСвойств", ВыбранныйНаборСвойств);
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта",
ПараметрыФормы, Элементы.Свойства,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьНеиспользуемыеРеквизиты(Команда)
НовоеЗначение = Не Элементы.НеиспользуемыеРеквизиты.Пометка;
ПоказатьНеиспользуемыеРеквизиты = НовоеЗначение;
Элементы.НеиспользуемыеРеквизиты.Пометка = НовоеЗначение;
Если НовоеЗначение Тогда
Элементы.СтраницыНаборыСвойств.ТекущаяСтраница = Элементы.СтраницаОбщиеНаборы;
Иначе
Элементы.СтраницыНаборыСвойств.ТекущаяСтраница = Элементы.СтраницаВсеНаборы;
КонецЕсли;
ОбновитьСписокСвойствТекущегоНабора();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСнятьПометкуУдаления(Команда)
ОбработчикПродолжения = Новый ОписаниеОповещения("УстановитьСнятьПометкуУдаленияПродолжение", ЭтотОбъект);
ЗаписатьОбъект("ИзменениеПометкиУдаления", ОбработчикПродолжения);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьИдентификаторДляФормул(Команда)
ЗаполнитьИдентификаторДляФормулНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура СвойствоСерое(Команда)
Объект.ЦветСвойства = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Серый");
УстановитьЦветМетки(ЭтотОбъект, Объект.ЦветСвойства);
КонецПроцедуры
&НаКлиенте
Процедура СвойствоГолубое(Команда)
Объект.ЦветСвойства = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Голубой");
УстановитьЦветМетки(ЭтотОбъект, Объект.ЦветСвойства);
КонецПроцедуры
&НаКлиенте
Процедура СвойствоЖелтое(Команда)
Объект.ЦветСвойства = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Желтый");
УстановитьЦветМетки(ЭтотОбъект, Объект.ЦветСвойства);
КонецПроцедуры
&НаКлиенте
Процедура СвойствоЗеленое(Команда)
Объект.ЦветСвойства = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Зеленый");
УстановитьЦветМетки(ЭтотОбъект, Объект.ЦветСвойства);
КонецПроцедуры
&НаКлиенте
Процедура СвойствоКоричневое(Команда)
Объект.ЦветСвойства = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Лаймовый");
УстановитьЦветМетки(ЭтотОбъект, Объект.ЦветСвойства);
КонецПроцедуры
&НаКлиенте
Процедура СвойствоКрасное(Команда)
Объект.ЦветСвойства = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Красный");
УстановитьЦветМетки(ЭтотОбъект, Объект.ЦветСвойства);
КонецПроцедуры
&НаКлиенте
Процедура СвойствоОранжевое(Команда)
Объект.ЦветСвойства = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Оранжевый");
УстановитьЦветМетки(ЭтотОбъект, Объект.ЦветСвойства);
КонецПроцедуры
&НаКлиенте
Процедура СвойствоРозовое(Команда)
Объект.ЦветСвойства = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Розовый");
УстановитьЦветМетки(ЭтотОбъект, Объект.ЦветСвойства);
КонецПроцедуры
&НаКлиенте
Процедура СвойствоСинее(Команда)
Объект.ЦветСвойства = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Синий");
УстановитьЦветМетки(ЭтотОбъект, Объект.ЦветСвойства);
КонецПроцедуры
&НаКлиенте
Процедура СвойствоФиолетовое(Команда)
Объект.ЦветСвойства = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Фиолетовый");
УстановитьЦветМетки(ЭтотОбъект, Объект.ЦветСвойства);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ОбновитьПредлагаемоеЗначениеИдентификатора()
ПредлагаемыйИдентификатор = "";
Если Не Элементы.ИдентификаторДляФормул.ТолькоПросмотр Тогда
Представление = Объект.Заголовок;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
СуффиксТекущегоЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка();
Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) И ЗначениеЗаполнено(Объект["Заголовок" + СуффиксТекущегоЯзыка]) Тогда
Представление = Объект["Заголовок" + СуффиксТекущегоЯзыка];
КонецЕсли;
КонецЕсли;
ПредлагаемыйИдентификатор = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.УникальныйИдентификаторДляФормул(
Представление, Объект.Ссылка);
Если ПредлагаемыйИдентификатор <> Объект.ИдентификаторДляФормул Тогда
Объект.ИдентификаторДляФормул = ПредлагаемыйИдентификатор;
Модифицированность = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьИдентификаторДляФормулНаСервере()
ЗаголовокДляИдентификатора = Объект.Заголовок;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
СуффиксТекущегоЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка();
Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) И ЗначениеЗаполнено(Объект["Заголовок" + СуффиксТекущегоЯзыка]) Тогда
ЗаголовокДляИдентификатора = Объект["Заголовок" + СуффиксТекущегоЯзыка];
КонецЕсли;
КонецЕсли;
Объект.ИдентификаторДляФормул = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.УникальныйИдентификаторДляФормул(
ЗаголовокДляИдентификатора, Объект.Ссылка);
КонецПроцедуры
&НаСервере
Процедура УстановитьЗависимостиДополнительныхРеквизитов()
Если УсловияЗависимостиРеквизитов.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ТекущийОбъект = РеквизитФормыВЗначение("Объект");
ЗависимостиДополнительныхРеквизитов = ТекущийОбъект.ЗависимостиДополнительныхРеквизитов;
Для Каждого УсловиеЗависимости Из УсловияЗависимостиРеквизитов Цикл
ОтборСтрок = Новый Структура;
ОтборСтрок.Вставить("ЗависимоеСвойство", УсловиеЗависимости.Представление);
ОтборСтрок.Вставить("НаборСвойств", ТекущийНаборСвойств);
МассивСтрок = ЗависимостиДополнительныхРеквизитов.НайтиСтроки(ОтборСтрок);
Для Каждого СтрокаТабличнойЧасти Из МассивСтрок Цикл
ЗависимостиДополнительныхРеквизитов.Удалить(СтрокаТабличнойЧасти);
КонецЦикла;
ЗначениеИзХранилища = ПолучитьИзВременногоХранилища(УсловиеЗависимости.Значение);
Если ЗначениеИзХранилища = Неопределено Тогда
Продолжить;
КонецЕсли;
Для Каждого НоваяЗависимость Из ЗначениеИзХранилища.Получить() Цикл
ЗаполнитьЗначенияСвойств(ТекущийОбъект.ЗависимостиДополнительныхРеквизитов.Добавить(), НоваяЗависимость);
КонецЦикла;
КонецЦикла;
ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект");
УстановитьЗаголовкиГиперссылок();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтраницуВыбора()
Если ПереданныеПараметрыФормы.ВидСвойства <> Неопределено Тогда
ВидСвойства = ПереданныеПараметрыФормы.ВидСвойства;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Наборы.Ссылка КАК Ссылка
|ИЗ
| Справочник.НаборыДополнительныхРеквизитовИСведений КАК Наборы
|ГДЕ
| Наборы.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка)";
Наборы = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
ДоступныеНаборы = Новый Массив;
Для Каждого Ссылка Из Наборы Цикл
ВидыСвойствНабора = УправлениеСвойствамиСлужебный.ВидыСвойствНабора(Ссылка, Ложь);
Если ВидСвойства = Перечисления.ВидыСвойств.ДополнительныеСведения И ВидыСвойствНабора.ДополнительныеСведения
ИЛИ ВидСвойства = Перечисления.ВидыСвойств.ДополнительныеРеквизиты И ВидыСвойствНабора.ДополнительныеРеквизиты
ИЛИ ВидСвойства = Перечисления.ВидыСвойств.Метки И ВидыСвойствНабора.Метки Тогда
ДоступныеНаборы.Добавить(Ссылка);
КонецЕсли;
КонецЦикла;
РодительТекущегоНабора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
ПереданныеПараметрыФормы.ТекущийНаборСвойств, "Родитель");
ИсключаемыеНаборы = Новый Массив;
ИсключаемыеНаборы.Добавить(ПереданныеПараметрыФормы.ТекущийНаборСвойств);
Если ЗначениеЗаполнено(РодительТекущегоНабора) Тогда
ПредопределенныеНаборы = УправлениеСвойствамиПовтИсп.ПредопределенныеНаборыСвойств();
СвойстваНабора = ПредопределенныеНаборы.Получить(РодительТекущегоНабора);
Если СвойстваНабора = Неопределено Тогда
ИмяПредопределенныхДанных = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РодительТекущегоНабора, "ИмяПредопределенныхДанных");
Иначе
ИмяПредопределенныхДанных = СвойстваНабора.Имя;
КонецЕсли;
ПозицияЗаменяемогоСимвола = СтрНайти(ИмяПредопределенныхДанных, "_");
ПолноеИмяОбъекта = Лев(ИмяПредопределенныхДанных, ПозицияЗаменяемогоСимвола - 1)
+ "."
+ Сред(ИмяПредопределенныхДанных, ПозицияЗаменяемогоСимвола + 1);
Менеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмяОбъекта);
Если СтрНачинаетсяС(ПолноеИмяОбъекта, "Документ") Тогда
НовыйОбъект = Менеджер.СоздатьДокумент();
ИначеЕсли СтрНачинаетсяС(ПолноеИмяОбъекта, "БизнесПроцесс") Тогда
НовыйОбъект = Менеджер.СоздатьБизнесПроцесс();
ИначеЕсли СтрНачинаетсяС(ПолноеИмяОбъекта, "Задача") Тогда
НовыйОбъект = Менеджер.СоздатьЗадачу();
ИначеЕсли СтрНачинаетсяС(ПолноеИмяОбъекта, "ПланСчетов") Тогда
НовыйОбъект = Менеджер.СоздатьСчет();
ИначеЕсли СтрНачинаетсяС(ПолноеИмяОбъекта, "ПланВидовРасчета") Тогда
НовыйОбъект = Менеджер.СоздатьВидРасчета();
ИначеЕсли СтрНачинаетсяС(ПолноеИмяОбъекта, "ПланОбмена") Тогда
НовыйОбъект = Менеджер.СоздатьУзел();
Иначе
НовыйОбъект = Менеджер.СоздатьЭлемент();
КонецЕсли;
НаборыОбъекта = УправлениеСвойствамиСлужебный.ПолучитьНаборыСвойствОбъекта(НовыйОбъект);
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ОбщийНабор", Истина);
НайденныеСтроки = НаборыОбъекта.НайтиСтроки(ПараметрыОтбора);
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
Если ПереданныеПараметрыФормы.ТекущийНаборСвойств = НайденнаяСтрока.Набор Тогда
Продолжить;
КонецЕсли;
ИсключаемыеНаборы.Добавить(НайденнаяСтрока.Набор);
КонецЦикла;
КонецЕсли;
Если ВидСвойства = Перечисления.ВидыСвойств.ДополнительныеСведения Тогда
Элементы.НеиспользуемыеРеквизиты.Заголовок = НСтр("ru = 'Неиспользуемые дополнительные сведения'");
ИначеЕсли ВидСвойства = Перечисления.ВидыСвойств.Метки Тогда
Элементы.НеиспользуемыеРеквизиты.Заголовок = НСтр("ru = 'Неиспользуемые метки'");
Иначе
Элементы.НеиспользуемыеРеквизиты.Заголовок = НСтр("ru = 'Неиспользуемые дополнительные реквизиты'");
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
НаборыСвойств, "Наборы", ДоступныеНаборы, Истина);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
НаборыСвойств, "ИсключаемыеНаборы", ИсключаемыеНаборы, Истина);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
НаборыСвойств, "ВидСвойства", ВидСвойства, Истина);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
НаборыСвойств, "ЭтоОсновнойЯзык", ОбщегоНазначения.ЭтоОсновнойЯзык(), Истина);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
НаборыСвойств, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
ОбщиеНаборыСвойств, "ВидСвойства", ВидСвойства, Истина);
ПредставлениеСписка = "";
Если ВидСвойства = ПредопределенноеЗначение("Перечисление.ВидыСвойств.ДополнительныеСведения") Тогда
ПредставлениеСписка = НСтр("ru = 'Неиспользуемые дополнительные сведения'");
ИначеЕсли ВидСвойства = ПредопределенноеЗначение("Перечисление.ВидыСвойств.ДополнительныеРеквизиты") Тогда
ПредставлениеСписка = НСтр("ru = 'Неиспользуемые дополнительные реквизиты'");
ИначеЕсли ВидСвойства = ПредопределенноеЗначение("Перечисление.ВидыСвойств.Метки") Тогда
ПредставлениеСписка = НСтр("ru = 'Неиспользуемые метки'");
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
ОбщиеНаборыСвойств, "ПредставлениеСписка", ПредставлениеСписка, Истина);
УстановитьУсловноеОформлениеСписка(ДоступныеНаборы);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеСписка(ДоступныеНаборыСписок)
ЭлементУсловногоОформления = НаборыСвойств.УсловноеОформление.Элементы.Добавить();
ЭлементВидимость = ЭлементУсловногоОформления.Оформление.Элементы.Найти("Видимость");
ЭлементВидимость.Значение = Ложь;
ЭлементВидимость.Использование = Истина;
ГруппаЭлементовОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаЭлементовОтбораДанных.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ГруппаЭлементовОтбораДанных.Использование = Истина;
ЭлементОтбораДанных = ГруппаЭлементовОтбораДанных.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ЭлементОтбораДанных.ПравоеЗначение = ДоступныеНаборыСписок;
ЭлементОтбораДанных.Использование = Истина;
ЭлементОтбораДанных = ГруппаЭлементовОтбораДанных.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Родитель");
ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ЭлементОтбораДанных.ПравоеЗначение = ДоступныеНаборыСписок;
ЭлементОтбораДанных.Использование = Истина;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗначенияДополнительныхРеквизитов(ВладелецЗначений)
ДеревоЗначений = РеквизитФормыВЗначение("ЗначенияДополнительныхРеквизитов");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Ссылка КАК Ссылка,
| ЗначенияСвойствОбъектов.Владелец КАК Владелец,
| 0 КАК КодКартинки,
| ЗначенияСвойствОбъектов.Вес,
| ПРЕДСТАВЛЕНИЕ(ЗначенияСвойствОбъектов.Ссылка) КАК Наименование
|ИЗ
| Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.ПометкаУдаления = ЛОЖЬ
| И ЗначенияСвойствОбъектов.Владелец = &Владелец
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗначенияСвойствОбъектовИерархия.Ссылка,
| ЗначенияСвойствОбъектовИерархия.Владелец,
| 0,
| ЗначенияСвойствОбъектовИерархия.Вес,
| ПРЕДСТАВЛЕНИЕ(ЗначенияСвойствОбъектовИерархия.Наименование) КАК Наименование
|ИЗ
| Справочник.ЗначенияСвойствОбъектовИерархия КАК ЗначенияСвойствОбъектовИерархия
|ГДЕ
| ЗначенияСвойствОбъектовИерархия.ПометкаУдаления = ЛОЖЬ
| И ЗначенияСвойствОбъектовИерархия.Владелец = &Владелец
|
|УПОРЯДОЧИТЬ ПО
| Ссылка ИЕРАРХИЯ";
Запрос.УстановитьПараметр("Владелец", ВладелецЗначений);
Результат = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ДеревоЗначений = Результат.Скопировать();
ЗначениеВРеквизитФормы(ДеревоЗначений, "ЗначенияДополнительныхРеквизитов");
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьКарточкуСвойства()
Если ЗначениеЗаполнено(ПереданныеПараметрыФормы.ЗначениеКопирования) Тогда
РежимДобавленияРеквизита = "СоздатьКопированием";
КонецЕсли;
СозданиеРеквизитаКопированием = (РежимДобавленияРеквизита = "СоздатьКопированием");
ТекущийНаборСвойств = ПереданныеПараметрыФормы.ТекущийНаборСвойств;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Элементы.ВидСвойства.Доступность = Ложь;
ПоказатьУточнениеНабора = ПереданныеПараметрыФормы.ПоказатьУточнениеНабора;
Иначе
Объект.Доступен = Истина;
Объект.Виден = Истина;
Объект.ЗависимостиДополнительныхРеквизитов.Очистить();
Если ЗначениеЗаполнено(ТекущийНаборСвойств) Тогда
Объект.НаборСвойств = ТекущийНаборСвойств;
КонецЕсли;
Если СозданиеРеквизитаКопированием Тогда
Объект.ВладелецДополнительныхЗначений = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПустаяСсылка();
ИначеЕсли ЗначениеЗаполнено(ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений) Тогда
Объект.ВладелецДополнительныхЗначений = ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений;
КонецЕсли;
Если ПереданныеПараметрыФормы.ВидСвойства <> Неопределено Тогда
Объект.ВидСвойства = ПереданныеПараметрыФормы.ВидСвойства;
Если Объект.ВидСвойства = Перечисления.ВидыСвойств.ДополнительныеСведения Тогда
Объект.ЭтоДополнительноеСведение = Истина;
КонецЕсли;
ИначеЕсли НЕ ЗначениеЗаполнено(ПереданныеПараметрыФормы.ЗначениеКопирования) Тогда
Элементы.ВидСвойства.Видимость = Истина;
КонецЕсли;
КонецЕсли;
Если Объект.Предопределенный И НЕ ЗначениеЗаполнено(Объект.Заголовок) Тогда
Объект.Заголовок = Объект.Наименование;
КонецЕсли;
ВидСвойства = Объект.ВидСвойства;
Если СозданиеРеквизитаКопированием Тогда
Если Не ЗначениеЗаполнено(ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений) Тогда
ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений = ПереданныеПараметрыФормы.ЗначениеКопирования;
КонецЕсли;
СвойстваВладельца = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений, "ТипЗначения, ДополнительныеЗначенияСВесом, ФорматСвойства");
Объект.ТипЗначения = СвойстваВладельца.ТипЗначения;
Объект.ФорматСвойства = СвойстваВладельца.ФорматСвойства;
ЗначенияВладельцаСВесом = СвойстваВладельца.ДополнительныеЗначенияСВесом;
Объект.ДополнительныеЗначенияСВесом = ЗначенияВладельцаСВесом;
Элементы.ЗначенияДополнительногоРеквизита.Шапка = ЗначенияВладельцаСВесом;
Элементы.ЗначенияДополнительногоРеквизитаВес.Видимость = ЗначенияВладельцаСВесом;
Элементы.СтраницыЗначенияРеквизита.ТекущаяСтраница = Элементы.СтраницаДеревоЗначений;
ЗаполнитьЗначенияДополнительныхРеквизитов(ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений);
КонецЕсли;
ОбновитьСоставЭлементовФормы();
Если Объект.МногострочноеПолеВвода > 0 Тогда
ПредставлениеРеквизита = "МногострочноеПолеВвода";
МногострочноеПолеВводаЧисло = Объект.МногострочноеПолеВвода;
Иначе
ПредставлениеРеквизита = "ОднострочноеПолеВвода";
КонецЕсли;
Элементы.ВыводитьВВидеГиперссылки.Доступность = (ПредставлениеРеквизита = "ОднострочноеПолеВвода");
Элементы.МногострочноеПолеВводаЧисло.Доступность = (ПредставлениеРеквизита = "МногострочноеПолеВвода");
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьМультиязычныеРеквизиты()
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
Возврат;
КонецЕсли;
Если ПустаяСтрока(Объект.ЗаголовокЯзык1) Тогда
Объект.ЗаголовокЯзык1 = Объект.Заголовок;
КонецЕсли;
Если ПустаяСтрока(Объект.ЗаголовокЯзык2) Тогда
Объект.ЗаголовокЯзык2 = Объект.Заголовок;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораРеквизитовДляРазблокирования(РазблокируемыеРеквизиты, Контекст) Экспорт
Если ТипЗнч(РазблокируемыеРеквизиты) <> Тип("Массив") Тогда
Возврат;
КонецЕсли;
ЗапретРедактированияРеквизитовОбъектовКлиент.УстановитьДоступностьЭлементовФормы(ЭтотОбъект,
РазблокируемыеРеквизиты);
Элементы.ЗаполнитьИдентификаторДляФормул.Доступность = НЕ Элементы.ИдентификаторДляФормул.ТолькоПросмотр;
КонецПроцедуры
&НаКлиенте
Процедура ПослеОтветаНаВопросКогдаНаименованиеУжеИспользуется(Ответ, ПараметрыЗаписи) Экспорт
Если Ответ <> "ПродолжитьЗапись" Тогда
ТекущийЭлемент = Элементы.Заголовок;
Если ПараметрыЗаписи.Свойство("ОбработкаПродолжения") Тогда
ВыполнитьОбработкуОповещения(
Новый ОписаниеОповещения(ПараметрыЗаписи.ОбработкаПродолжения.ИмяПроцедуры,
ЭтотОбъект, ПараметрыЗаписи.ОбработкаПродолжения.Параметры),
Истина);
КонецЕсли;
Иначе
ПараметрыЗаписи.Вставить("КогдаНаименованиеУжеИспользуется");
Записать(ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеОтветаНаВопросОбИзмененииНаименования(Ответ, ПараметрыЗаписи) Экспорт
Если Ответ <> "ПродолжитьЗапись" Тогда
Объект.Заголовок = ТекущийЗаголовок;
Если ПараметрыЗаписи.Свойство("ОбработкаПродолжения") Тогда
ВыполнитьОбработкуОповещения(
Новый ОписаниеОповещения(ПараметрыЗаписи.ОбработкаПродолжения.ИмяПроцедуры,
ЭтотОбъект, ПараметрыЗаписи.ОбработкаПродолжения.Параметры),
Истина);
КонецЕсли;
Иначе
ПараметрыЗаписи.Вставить("ПодтвержденоИзменениеНаименования");
Записать(ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеОтветаНаВопросКогдаИмяУжеИспользуется(Ответ, ПараметрыЗаписи) Экспорт
Если Ответ <> "ПродолжитьЗапись" Тогда
ТекущийЭлемент = Элементы.Заголовок;
Если ПараметрыЗаписи.Свойство("ОбработкаПродолжения") Тогда
ВыполнитьОбработкуОповещения(
Новый ОписаниеОповещения(ПараметрыЗаписи.ОбработкаПродолжения.ИмяПроцедуры,
ЭтотОбъект, ПараметрыЗаписи.ОбработкаПродолжения.Параметры),
Истина);
КонецЕсли;
Иначе
ПараметрыЗаписи.Вставить("КогдаИмяУжеИспользуется");
Записать(ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеОтветаНаВопросКогдаИдентификаторДляФормулУжеИспользуется(Ответ, ПараметрыЗаписи) Экспорт
Если Ответ <> "ПродолжитьЗапись" Тогда
Если ПараметрыЗаписи.Свойство("ОбработкаПродолжения") Тогда
ВыполнитьОбработкуОповещения(
Новый ОписаниеОповещения(ПараметрыЗаписи.ОбработкаПродолжения.ИмяПроцедуры,
ЭтотОбъект, ПараметрыЗаписи.ОбработкаПродолжения.Параметры),
Истина);
КонецЕсли;
Иначе
ПараметрыЗаписи.Вставить("КогдаИдентификаторДляФормулУжеИспользуется");
Записать(ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодтвержденияОчисткиВесовыхКоэффициентов(Ответ, Контекст) Экспорт
Если Ответ <> "ОчиститьИЗаписать" Тогда
Объект.ДополнительныеЗначенияСВесом = НЕ Объект.ДополнительныеЗначенияСВесом;
Возврат;
КонецЕсли;
ПараметрыЗаписи = Новый Структура;
ПараметрыЗаписи.Вставить("ОчиститьВведенныеВесовыеКоэффициенты");
ОбработчикПродолжения = Новый ОписаниеОповещения("ДополнительныеЗначенияСВесомПриИзмененииЗавершение", ЭтотОбъект);
ЗаписатьОбъект("ИзменениеИспользованияВеса", ОбработчикПродолжения,, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодтвержденияВключенияВесовыхКоэффициентов(Ответ, Контекст) Экспорт
Если Ответ <> "Записать" Тогда
Объект.ДополнительныеЗначенияСВесом = НЕ Объект.ДополнительныеЗначенияСВесом;
Возврат;
КонецЕсли;
ОбработчикПродолжения = Новый ОписаниеОповещения("ДополнительныеЗначенияСВесомПриИзмененииЗавершение", ЭтотОбъект);
ЗаписатьОбъект("ИзменениеИспользованияВеса", ОбработчикПродолжения);
КонецПроцедуры
&НаКлиенте
Процедура ДополнительныеЗначенияСВесомПриИзмененииЗавершение(Отказ, Контекст) Экспорт
Если Отказ Тогда
Объект.ДополнительныеЗначенияСВесом = НЕ Объект.ДополнительныеЗначенияСВесом;
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Оповестить(
"Изменение_ЗначениеХарактеризуетсяВесовымКоэффициентом",
Объект.ДополнительныеЗначенияСВесом,
Объект.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УточнениеСпискаЗначенийКомментарийНажатиеЗавершение(Отказ, Контекст) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
Закрыть();
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ПоказатьУточнениеНабора", Истина);
ПараметрыФормы.Вставить("Ключ", Объект.ВладелецДополнительныхЗначений);
ПараметрыФормы.Вставить("ТекущийНаборСвойств", ТекущийНаборСвойств);
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ФормаОбъекта",
ПараметрыФормы, ВладелецФормы);
КонецПроцедуры
&НаКлиенте
Процедура УточнениеНаборовКомментарийНажатиеПродолжение(Отказ, Контекст) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
Если СписокНаборов.Количество() > 1 Тогда
ПоказатьВыборИзСписка(
Новый ОписаниеОповещения("УточнениеНаборовКомментарийНажатиеЗавершение", ЭтотОбъект),
СписокНаборов, Элементы.УточнениеНаборовКомментарий);
Иначе
УточнениеНаборовКомментарийНажатиеЗавершение(Неопределено, СписокНаборов[0].Значение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УточнениеНаборовКомментарийНажатиеЗавершение(ВыбранныйЭлемент, ВыбранныйНабор) Экспорт
Если ВыбранныйЭлемент <> Неопределено Тогда
ВыбранныйНабор = ВыбранныйЭлемент.Значение;
КонецЕсли;
Если Не ЗначениеЗаполнено(ТекущийНаборСвойств) Тогда
Возврат;
КонецЕсли;
Если ВыбранныйНабор <> Неопределено Тогда
ЗначениеВыбора = Новый Структура;
ЗначениеВыбора.Вставить("Набор", ВыбранныйНабор);
ЗначениеВыбора.Вставить("Свойство", Объект.Ссылка);
Если Не ЗначениеЗаполнено(Объект.ВидСвойства)
И Объект.ЭтоДополнительноеСведение Тогда
ЗначениеВыбора.Вставить("ВидСвойства", ПредопределенноеЗначение("Перечисление.ВидыСвойств.ДополнительныеСведения"));
ИначеЕсли Не ЗначениеЗаполнено(Объект.ВидСвойства)
И Не Объект.ЭтоДополнительноеСведение Тогда
ЗначениеВыбора.Вставить("ВидСвойства", ПредопределенноеЗначение("Перечисление.ВидыСвойств.ДополнительныеРеквизиты"));
Иначе
ЗначениеВыбора.Вставить("ВидСвойства", Объект.ВидСвойства);
КонецЕсли;
ОповеститьОВыборе(ЗначениеВыбора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗначенияПередНачаломДобавленияЗавершение(Отказ, ПараметрыОбработки) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
Если РежимДобавленияРеквизита = "СоздатьКопированием" Тогда
Элементы.СтраницыЗначенияРеквизита.ТекущаяСтраница = Элементы.ДополнительныеЗначения;
КонецЕсли;
Если Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда
ИмяТаблицыЗначений = "Справочник.ЗначенияСвойствОбъектов";
Иначе
ИмяТаблицыЗначений = "Справочник.ЗначенияСвойствОбъектовИерархия";
КонецЕсли;
ЗначенияЗаполнения = Новый Структура;
ЗначенияЗаполнения.Вставить("Родитель", ПараметрыОбработки.Родитель);
ЗначенияЗаполнения.Вставить("Владелец", Объект.Ссылка);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СкрытьВладельца", Истина);
ПараметрыФормы.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения);
Если ПараметрыОбработки.Группа Тогда
ПараметрыФормы.Вставить("ЭтоГруппа", Истина);
ОткрытьФорму(ИмяТаблицыЗначений + ".ФормаГруппы", ПараметрыФормы, Элементы.Значения);
Иначе
ПараметрыФормы.Вставить("ПоказатьВес", Объект.ДополнительныеЗначенияСВесом);
Если ПараметрыОбработки.Копирование Тогда
ПараметрыФормы.Вставить("ЗначениеКопирования", Элементы.Значения.ТекущаяСтрока);
КонецЕсли;
ОткрытьФорму(ИмяТаблицыЗначений + ".ФормаОбъекта", ПараметрыФормы, Элементы.Значения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗначенияПередНачаломИзмененияЗавершение(Отказ, Контекст) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
Если Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда
ИмяТаблицыЗначений = "Справочник.ЗначенияСвойствОбъектов";
Иначе
ИмяТаблицыЗначений = "Справочник.ЗначенияСвойствОбъектовИерархия";
КонецЕсли;
Если Элементы.Значения.ТекущаяСтрока <> Неопределено Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СкрытьВладельца", Истина);
ПараметрыФормы.Вставить("ПоказатьВес", Объект.ДополнительныеЗначенияСВесом);
ПараметрыФормы.Вставить("Ключ", Элементы.Значения.ТекущаяСтрока);
ОткрытьФорму(ИмяТаблицыЗначений + ".ФормаОбъекта", ПараметрыФормы, Элементы.Значения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УточнениеСпискаЗначенийИзменитьЗавершение(Отказ, Контекст) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ТекущийНаборСвойств", ТекущийНаборСвойств);
ПараметрыФормы.Вставить("Свойство", Объект.Ссылка);
ПараметрыФормы.Вставить("ВладелецДополнительныхЗначений", Объект.ВладелецДополнительныхЗначений);
ПараметрыФормы.Вставить("ЭтоДополнительноеСведение", Объект.ЭтоДополнительноеСведение);
ПараметрыФормы.Вставить("ВидСвойства", Объект.ВидСвойства);
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Форма.ИзменениеНастройкиСвойства",
ПараметрыФормы, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура УточнениеНаборовИзменитьЗавершение(Отказ, Контекст) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ТекущийНаборСвойств", ТекущийНаборСвойств);
ПараметрыФормы.Вставить("Свойство", Объект.Ссылка);
ПараметрыФормы.Вставить("ВладелецДополнительныхЗначений", Объект.ВладелецДополнительныхЗначений);
ПараметрыФормы.Вставить("ЭтоДополнительноеСведение", Объект.ЭтоДополнительноеСведение);
ПараметрыФормы.Вставить("ВидСвойства", Объект.ВидСвойства);
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Форма.ИзменениеНастройкиСвойства",
ПараметрыФормы, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьОбъект(ВариантТекстаВопроса, ОбработчикПродолжения, ДополнительныеПараметры = Неопределено, ПараметрыЗаписи = Неопределено)
Если ПараметрыЗаписи = Неопределено Тогда
ПараметрыЗаписи = Новый Структура;
КонецЕсли;
Если ВариантТекстаВопроса = "ИзменениеПометкиУдаления" Тогда
Если Модифицированность Тогда
Если Объект.ПометкаУдаления Тогда
ТекстВопроса = НСтр("ru = 'Для снятия пометки удаления запишите внесенные изменения. Записать данные?'");
Иначе
ТекстВопроса = НСтр("ru = 'Для установки пометки удаления запишите внесенные изменения. Записать данные?'");
КонецЕсли;
Иначе
ТекстВопроса = НСтр("ru = 'Пометить ""%1"" на удаление?'");
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, Объект.Наименование);
КонецЕсли;
ПоказатьВопрос(
Новый ОписаниеОповещения(
ОбработчикПродолжения.ИмяПроцедуры, ОбработчикПродолжения.Модуль, ПараметрыЗаписи),
ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да);
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Ссылка) И НЕ Модифицированность Тогда
ВыполнитьОбработкуОповещения(Новый ОписаниеОповещения(
ОбработчикПродолжения.ИмяПроцедуры, ОбработчикПродолжения.Модуль, ДополнительныеПараметры), Ложь);
Возврат;
КонецЕсли;
ОбработкаПродолжения = Новый Структура;
ОбработкаПродолжения.Вставить("ИмяПроцедуры", ОбработчикПродолжения.ИмяПроцедуры);
ОбработкаПродолжения.Вставить("Параметры", ДополнительныеПараметры);
ПараметрыЗаписи.Вставить("ОбработкаПродолжения", ОбработкаПродолжения);
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбработкаЗавершенияЗаписи = Новый ОписаниеОповещения("ЗаписатьОбъектПродолжение", ЭтотОбъект, ПараметрыЗаписи);
ПодключитьОбработчикОжидания("Подключаемый_ЗавершениеЗаписиОбъекта", 0.1, Истина);
Возврат;
КонецЕсли;
Если ВариантТекстаВопроса = "ПереходКСпискуЗначений" Тогда
ТекстВопроса = НСтр("ru = 'Перед переходом к списку значений данные будут записаны.'");
Иначе
ТекстВопроса = НСтр("ru = 'Данные будут записаны.'")
КонецЕсли;
Кнопки = Новый СписокЗначений;
Кнопки.Добавить("Записать", НСтр("ru = 'Записать'"));
Кнопки.Добавить("Отмена", НСтр("ru = 'Отмена'"));
ПоказатьВопрос(
Новый ОписаниеОповещения(
"ЗаписатьОбъектПродолжение", ЭтотОбъект, ПараметрыЗаписи),
ТекстВопроса, Кнопки, , "Записать");
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗавершениеЗаписиОбъекта()
ВыполнитьОбработкуОповещения(ОбработкаЗавершенияЗаписи, "Записать");
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСнятьПометкуУдаленияПродолжение(Ответ, ПараметрыЗаписи) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Объект.ПометкаУдаления = Не Объект.ПометкаУдаления;
КонецЕсли;
ЗаписатьОбъектПродолжение(Ответ, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьОбъектПродолжение(Ответ, ПараметрыЗаписи) Экспорт
Если Ответ = "Записать"
Или Ответ = КодВозвратаДиалога.Да Тогда
Записать(ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеОшибкиЗаписи()
Если ОбработкаПродолженияПриОшибкеЗаписи <> Неопределено Тогда
ВыполнитьОбработкуОповещения(
Новый ОписаниеОповещения(ОбработкаПродолженияПриОшибкеЗаписи.ИмяПроцедуры,
ЭтотОбъект, ОбработкаПродолженияПриОшибкеЗаписи.Параметры),
Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьФорматЗначенияЗавершение(Текст, Контекст) Экспорт
Если Текст <> Неопределено Тогда
Объект.ФорматСвойства = Текст;
УстановитьЗаголовокКнопкиФормата(ЭтотОбъект);
ТекстПредупреждения = НСтр("ru = 'Следующие настройки формата автоматически не применяются в большинстве мест:'");
Массив = СтрРазделить(Текст, ";", Ложь);
Для каждого Подстрока Из Массив Цикл
Если СтрНайти(Подстрока, "ДП=") > 0 ИЛИ СтрНайти(Подстрока, "DE=") > 0 Тогда
ТекстПредупреждения = ТекстПредупреждения + Символы.ПС
+ " - " + НСтр("ru = 'представление пустой даты'");
Продолжить;
КонецЕсли;
Если СтрНайти(Подстрока, "ЧН=") > 0 ИЛИ СтрНайти(Подстрока, "NZ=") > 0 Тогда
ТекстПредупреждения = ТекстПредупреждения + Символы.ПС
+ " - " + НСтр("ru = 'представление пустого числа'");
Продолжить;
КонецЕсли;
Если СтрНайти(Подстрока, "ДФ=") > 0 ИЛИ СтрНайти(Подстрока, "DF=") > 0 Тогда
Если СтрНайти(Подстрока, "ддд") > 0 ИЛИ СтрНайти(Подстрока, "ddd") > 0 Тогда
ТекстПредупреждения = ТекстПредупреждения + Символы.ПС
+ " - " + НСтр("ru = 'кратное название дня недели'");
КонецЕсли;
Если СтрНайти(Подстрока, "дддд") > 0 ИЛИ СтрНайти(Подстрока, "dddd") > 0 Тогда
ТекстПредупреждения = ТекстПредупреждения + Символы.ПС
+ " - " + НСтр("ru = 'полное название дня недели'");
КонецЕсли;
Если СтрНайти(Подстрока, "МММ") > 0 ИЛИ СтрНайти(Подстрока, "MMM") > 0 Тогда
ТекстПредупреждения = ТекстПредупреждения + Символы.ПС
+ " - " + НСтр("ru = 'кратное название месяца'");
КонецЕсли;
Если СтрНайти(Подстрока, "ММММ") > 0 ИЛИ СтрНайти(Подстрока, "MMMM") > 0 Тогда
ТекстПредупреждения = ТекстПредупреждения + Символы.ПС
+ " - " + НСтр("ru = 'полное название месяца'");
КонецЕсли;
КонецЕсли;
Если СтрНайти(Подстрока, "ДЛФ=") > 0 ИЛИ СтрНайти(Подстрока, "DLF=") > 0 Тогда
Если СтрНайти(Подстрока, "ДД") > 0 ИЛИ СтрНайти(Подстрока, "DD") > 0 Тогда
ТекстПредупреждения = ТекстПредупреждения + Символы.ПС
+ " - " + НСтр("ru = 'длинная дата (месяц прописью)'");
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если СтрЧислоСтрок(ТекстПредупреждения) > 1 Тогда
ПоказатьПредупреждение(, ТекстПредупреждения);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьНастройкиПомощника(ТекущаяСтраница = Неопределено)
Если ТекущаяСтраница = Неопределено Тогда
ТекущаяСтраница = Элементы.СтраницыПомощникКарточка.ТекущаяСтраница;
КонецЕсли;
Если ТекущаяСтраница = Элементы.ВыборРеквизита Тогда
Если ПереданныеПараметрыФормы.ВидСвойства =
ПредопределенноеЗначение("Перечисление.ВидыСвойств.ДополнительныеСведения") Тогда
Заголовок = НСтр("ru = 'Добавление дополнительного сведения'");
ШаблонЗаголовкаСписка =
НСтр("ru = 'Выберите дополнительное сведение для включения в набор ""%1""'");
ШаблонЗаголовкаПереключателя =
НСтр("ru = 'Выберите вариант добавления дополнительного сведения ""%1"" в набор ""%2""'");
ИначеЕсли ПереданныеПараметрыФормы.ВидСвойства =
ПредопределенноеЗначение("Перечисление.ВидыСвойств.Метки") Тогда
Заголовок = НСтр("ru = 'Добавление метки'");
ШаблонЗаголовкаСписка =
НСтр("ru = 'Выберите метку для включения в набор ""%1""'");
ШаблонЗаголовкаПереключателя =
НСтр("ru = 'Выберите вариант добавления метки ""%1"" в набор ""%2""'");
Иначе
Заголовок = НСтр("ru = 'Добавление дополнительного реквизита'");
ШаблонЗаголовкаСписка =
НСтр("ru = 'Выберите дополнительный реквизит для включения в набор ""%1""'");
ШаблонЗаголовкаПереключателя =
НСтр("ru = 'Выберите вариант добавления дополнительного реквизита ""%1"" в набор ""%2""'");
КонецЕсли;
Элементы.КоманднаяПанельЛево.Доступность = Ложь;
Элементы.КомандаДалее.Заголовок = НСтр("ru = 'Далее >'");
Элементы.ДекорацияЗаголовок.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонЗаголовкаСписка,
Строка(ПереданныеПараметрыФормы.ТекущийНаборСвойств));
ИначеЕсли ТекущаяСтраница = Элементы.ВыборДействия Тогда
Если ПереданныеПараметрыФормы.КопированиеСВопросом Тогда
Элементы.КоманднаяПанельЛево.Доступность = Ложь;
ВладелецДополнительныхЗначений = ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений;
Иначе
Элементы.КоманднаяПанельЛево.Доступность = Истина;
ВыбранныйЭлемент = Элементы.Свойства.ТекущиеДанные;
Если ВыбранныйЭлемент = Неопределено Тогда
ВладелецДополнительныхЗначений = ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений;
Иначе
ВладелецДополнительныхЗначений = Элементы.Свойства.ТекущиеДанные.Свойство;
КонецЕсли;
КонецЕсли;
Элементы.КомандаДалее.Заголовок = НСтр("ru = 'Далее >'");
Элементы.РежимДобавленияРеквизита.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонЗаголовкаПереключателя,
Строка(ВладелецДополнительныхЗначений),
Строка(ПереданныеПараметрыФормы.ТекущийНаборСвойств));
Если ПереданныеПараметрыФормы.ВидСвойства =
ПредопределенноеЗначение("Перечисление.ВидыСвойств.ДополнительныеСведения") Тогда
Заголовок = НСтр("ru = 'Добавление дополнительного сведения'");
ИначеЕсли ПереданныеПараметрыФормы.ВидСвойства =
ПредопределенноеЗначение("Перечисление.ВидыСвойств.Метки") Тогда
Заголовок = НСтр("ru = 'Добавление метки'");
Иначе
Заголовок = НСтр("ru = 'Добавление дополнительного реквизита'");
КонецЕсли;
Иначе
Элементы.КомандаДалее.Заголовок = НСтр("ru = 'Готово'");
Элементы.КоманднаяПанельЛево.Доступность = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСоставЭлементовФормы(ТекстПредупреждения = "")
Если РежимПомощника Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Нет;
Элементы.КомандаДалее.КнопкаПоУмолчанию = Истина;
Иначе
Элементы.КоманднаяПанельПомощника.Видимость = Ложь;
Элементы.СтраницыПомощникКарточка.ТекущаяСтраница = Элементы.КарточкаРеквизита;
КонецЕсли;
УстановитьЗаголовокФормы();
Если НЕ Объект.ТипЗначения.СодержитТип(Тип("Число"))
И НЕ Объект.ТипЗначения.СодержитТип(Тип("Дата"))
И НЕ Объект.ТипЗначения.СодержитТип(Тип("Булево")) Тогда
Объект.ФорматСвойства = "";
КонецЕсли;
УстановитьЗаголовокКнопкиФормата(ЭтотОбъект);
Если Объект.ЭтоДополнительноеСведение
ИЛИ НЕ ( Объект.ТипЗначения.СодержитТип(Тип("Число" ))
ИЛИ Объект.ТипЗначения.СодержитТип(Тип("Дата" ))
ИЛИ Объект.ТипЗначения.СодержитТип(Тип("Булево")) )Тогда
Элементы.РедактироватьФорматЗначения.Видимость = Ложь;
Иначе
Элементы.РедактироватьФорматЗначения.Видимость = Истина;
КонецЕсли;
Если Объект.ЭтоДополнительноеСведение
И Объект.ТипЗначения.СодержитТип(Тип("Строка"))
И Объект.ТипЗначения.КвалификаторыСтроки.Длина = 0 Тогда
Элементы.ГруппаПояснениеТипаЗначения.Видимость = Истина;
Иначе
Элементы.ГруппаПояснениеТипаЗначения.Видимость = Ложь;
КонецЕсли;
Если НЕ Объект.ЭтоДополнительноеСведение Тогда
Элементы.ГруппаМногострочность.Видимость = Истина;
ПереключитьНастройкиВыводаРеквизита(Объект.ТипЗначения);
Иначе
Элементы.ГруппаМногострочность.Видимость = Ложь;
КонецЕсли;
Если Объект.ВидСвойства = Перечисления.ВидыСвойств.Метки Тогда
Объект.ТипЗначения = Новый ОписаниеТипов("Булево");
Элементы.ГруппаТипЗначения.Видимость = Ложь;
Элементы.ГруппаЦветаСвойств.Видимость = Истина;
Элементы.ВыводитьВВидеГиперссылки.Видимость = Ложь;
Элементы.ГруппаВиден.Видимость = Ложь;
Элементы.ГруппаДоступен.Видимость = Ложь;
Элементы.СвойствоСерое.Пометка = Истина;
Элементы.Заголовок.ОграничениеТипа = Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(15));
Если Не ЗначениеЗаполнено(Объект.ЦветСвойства) Тогда
Объект.ЦветСвойства = Перечисления.ЦветаСвойств.Серый;
КонецЕсли;
УстановитьЦветМетки(ЭтотОбъект, Объект.ЦветСвойства);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
СтарыйТипЗначения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Ссылка, "ТипЗначения");
Иначе
СтарыйТипЗначения = Новый ОписаниеТипов;
КонецЕсли;
Если Объект.ЭтоДополнительноеСведение Тогда
Объект.ЗаполнятьОбязательно = Ложь;
Элементы.ГруппаСвойстваИЗависимости.Видимость = Ложь;
Иначе
РеквизитБулево = (Объект.ТипЗначения = Новый ОписаниеТипов("Булево"));
Элементы.ЗаполнятьОбязательно.Видимость = Не РеквизитБулево;
Элементы.ЗадатьУсловиеЗаполнения.Видимость = Не РеквизитБулево;
Элементы.ГруппаСвойстваИЗависимости.Видимость = Истина;
Элементы.ЗадатьУсловиеЗаполнения.Доступность = Объект.ЗаполнятьОбязательно;
Элементы.ЗадатьУсловиеДоступности.Доступность = Истина;
Элементы.ЗадатьУсловиеВидимости.Доступность = Истина;
УстановитьЗаголовкиГиперссылок();
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ВладелецДополнительныхЗначений) Тогда
СвойстваВладельца = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Объект.ВладелецДополнительныхЗначений, "ТипЗначения, ДополнительныеЗначенияСВесом");
Если СвойстваВладельца.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) Тогда
Объект.ТипЗначения = Новый ОписаниеТипов(
Объект.ТипЗначения,
"СправочникСсылка.ЗначенияСвойствОбъектовИерархия",
"СправочникСсылка.ЗначенияСвойствОбъектов");
Иначе
Объект.ТипЗначения = Новый ОписаниеТипов(
Объект.ТипЗначения,
"СправочникСсылка.ЗначенияСвойствОбъектов",
"СправочникСсылка.ЗначенияСвойствОбъектовИерархия");
КонецЕсли;
ВладелецЗначений = Объект.ВладелецДополнительныхЗначений;
ЗначенияСВесом = СвойстваВладельца.ДополнительныеЗначенияСВесом;
Иначе
Если УправлениеСвойствамиСлужебный.ТипЗначенияСодержитЗначенияСвойств(СтарыйТипЗначения) Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Владелец", Объект.Ссылка);
Если СтарыйТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) Тогда
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА КАК ЗначениеИстина
|ИЗ
| Справочник.ЗначенияСвойствОбъектовИерархия КАК ЗначенияСвойствОбъектовИерархия
|ГДЕ
| ЗначенияСвойствОбъектовИерархия.Владелец = &Владелец";
Иначе
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА КАК ЗначениеИстина
|ИЗ
| Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Владелец = &Владелец";
КонецЕсли;
Если НЕ Запрос.Выполнить().Пустой() Тогда
Если СтарыйТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия"))
И НЕ Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) Тогда
ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Недопустимо удалять тип ""%1"",
|так как дополнительные значения уже введены.
|Сначала нужно удалить введенные дополнительные значения.
|
|Удаление отменено.'"),
Строка(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) );
Объект.ТипЗначения = Новый ОписаниеТипов(
Объект.ТипЗначения,
"СправочникСсылка.ЗначенияСвойствОбъектовИерархия",
"СправочникСсылка.ЗначенияСвойствОбъектов");
ИначеЕсли СтарыйТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов"))
И НЕ Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда
ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Недопустимо удалять тип ""%1"",
|так как дополнительные значения уже введены.
|Сначала нужно удалить введенные дополнительные значения.
|
|Удаление отменено.'"),
Строка(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) );
Объект.ТипЗначения = Новый ОписаниеТипов(
Объект.ТипЗначения,
"СправочникСсылка.ЗначенияСвойствОбъектов",
"СправочникСсылка.ЗначенияСвойствОбъектовИерархия");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия"))
И Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда
Если НЕ СтарыйТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) Тогда
ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Недопустимо одновременно использовать типы значения
|""%1"" и
|""%2"".
|
|Второй тип удален.'"),
Строка(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")),
Строка(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) );
Объект.ТипЗначения = Новый ОписаниеТипов(
Объект.ТипЗначения,
,
"СправочникСсылка.ЗначенияСвойствОбъектовИерархия");
Иначе
ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Недопустимо одновременно использовать типы значения
|""%1"" и
|""%2"".
|
|Первый тип удален.'"),
Строка(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")),
Строка(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) );
Объект.ТипЗначения = Новый ОписаниеТипов(
Объект.ТипЗначения,
,
"СправочникСсылка.ЗначенияСвойствОбъектов");
КонецЕсли;
КонецЕсли;
ВладелецЗначений = Объект.Ссылка;
ЗначенияСВесом = Объект.ДополнительныеЗначенияСВесом;
КонецЕсли;
Если УправлениеСвойствамиСлужебный.ТипЗначенияСодержитЗначенияСвойств(Объект.ТипЗначения) Тогда
Элементы.ГруппаЗаголовкиФормЗначений.Видимость = Истина;
Элементы.ДополнительныеЗначенияСВесом.Видимость = Истина;
Элементы.СтраницаЗначения.Видимость = Истина;
Элементы.Страницы.ОтображениеСтраниц = ОтображениеСтраницФормы.ЗакладкиСверху;
Иначе
Элементы.ГруппаЗаголовкиФормЗначений.Видимость = Ложь;
Элементы.ДополнительныеЗначенияСВесом.Видимость = Ложь;
Элементы.СтраницаЗначения.Видимость = Ложь;
Элементы.Страницы.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
КонецЕсли;
Элементы.Значения.Шапка = ЗначенияСВесом;
Элементы.ЗначенияВес.Видимость = ЗначенияСВесом;
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Значения, "Владелец", ВладелецЗначений, , , Истина);
Если Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса =
"ВЫБРАТЬ
| Значения.Ссылка,
| Значения.ВерсияДанных,
| Значения.ПометкаУдаления,
| Значения.Предопределенный,
| Значения.Владелец,
| Значения.Родитель,
| Значения.Наименование КАК Наименование,
| Значения.Вес
|ИЗ
| Справочник.ЗначенияСвойствОбъектов КАК Значения";
СвойстваСписка.ОсновнаяТаблица = "Справочник.ЗначенияСвойствОбъектов";
СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя();
Если СуффиксТекущегоЯзыка = Неопределено Тогда
СвойстваСписка.ТекстЗапроса = СвойстваСписка.ТекстЗапроса + "
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектов.Представления КАК ЗначенияПредставления
| ПО (ЗначенияПредставления.Ссылка = Значения.Ссылка)
| И ЗначенияПредставления.КодЯзыка = &КодЯзыка";
СвойстваСписка.ТекстЗапроса = СтрЗаменить(СвойстваСписка.ТекстЗапроса, "Значения.Наименование КАК Наименование",
"ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, Значения.Наименование) КАК СТРОКА(150)) КАК Наименование");
ИначеЕсли ЗначениеЗаполнено(СуффиксТекущегоЯзыка)
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(СвойстваСписка.ТекстЗапроса, "Значения.Наименование");
КонецЕсли;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Значения,
СвойстваСписка);
Иначе
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса =
"ВЫБРАТЬ
| Значения.Ссылка,
| Значения.ВерсияДанных,
| Значения.ПометкаУдаления,
| Значения.Предопределенный,
| Значения.Владелец,
| Значения.Родитель,
| Значения.Наименование КАК Наименование,
| Значения.Вес
|ИЗ
| Справочник.ЗначенияСвойствОбъектовИерархия КАК Значения";
СвойстваСписка.ОсновнаяТаблица = "Справочник.ЗначенияСвойствОбъектовИерархия";
СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя();
Если СуффиксТекущегоЯзыка = Неопределено Тогда
СвойстваСписка.ТекстЗапроса = СвойстваСписка.ТекстЗапроса + "
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектовИерархия.Представления КАК ЗначенияПредставления
| ПО (ЗначенияПредставления.Ссылка = Значения.Ссылка)
| И ЗначенияПредставления.КодЯзыка = &КодЯзыка";
СвойстваСписка.ТекстЗапроса = СтрЗаменить(СвойстваСписка.ТекстЗапроса, "Значения.Наименование КАК Наименование",
"ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, Значения.Наименование) КАК СТРОКА(150)) КАК Наименование");
ИначеЕсли ЗначениеЗаполнено(СуффиксТекущегоЯзыка)
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(СвойстваСписка.ТекстЗапроса, "Значения.Наименование");
КонецЕсли;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Значения, СвойстваСписка);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
Значения, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина);
Если НЕ ЗначениеЗаполнено(Объект.ВладелецДополнительныхЗначений) Тогда
Элементы.УточнениеСпискаЗначений.Видимость = Ложь;
Элементы.ДополнительныеЗначения.ТолькоПросмотр = Ложь;
Элементы.ЗначенияКоманднаяПанельРедактирования.Видимость = Истина;
Элементы.ЗначенияКонтекстноеМенюРедактирования.Видимость = Истина;
Элементы.ДополнительныеЗначенияСВесом.Видимость = Истина;
Иначе
Элементы.УточнениеСпискаЗначений.Видимость = Истина;
Элементы.ДополнительныеЗначения.ТолькоПросмотр = Истина;
Элементы.ЗначенияКоманднаяПанельРедактирования.Видимость = Ложь;
Элементы.ЗначенияКонтекстноеМенюРедактирования.Видимость = Ложь;
Элементы.ДополнительныеЗначенияСВесом.Видимость = Ложь;
Элементы.УточнениеСпискаЗначенийКомментарий.Гиперссылка = ЗначениеЗаполнено(Объект.Ссылка);
Элементы.УточнениеСпискаЗначенийИзменить.Доступность = ЗначениеЗаполнено(Объект.Ссылка);
СвойстваВладельца = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Объект.ВладелецДополнительныхЗначений, "Заголовок, ВидСвойства");
Если СвойстваВладельца.ВидСвойства = Перечисления.ВидыСвойств.ДополнительныеСведения Тогда
ШаблонУточнения = НСтр("ru = 'Список значений общий со сведением ""%1""'");
ИначеЕсли СвойстваВладельца.ВидСвойства = Перечисления.ВидыСвойств.Метки Тогда
ШаблонУточнения = НСтр("ru = 'Список значений общий с меткой ""%1""'");
Иначе
ШаблонУточнения = НСтр("ru = 'Список значений общий с реквизитом ""%1""'");
КонецЕсли;
Элементы.УточнениеСпискаЗначенийКомментарий.Заголовок =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонУточнения, СвойстваВладельца.Заголовок);
КонецЕсли;
ОбновитьСписокНаборов();
Если НЕ ПоказатьУточнениеНабора И СписокНаборов.Количество() < 2 Тогда
Элементы.УточнениеНаборов.Видимость = Ложь;
Иначе
Элементы.УточнениеНаборов.Видимость = Истина;
Элементы.УточнениеНаборовКомментарий.Гиперссылка = Истина;
Элементы.УточнениеНаборовИзменить.Доступность = ЗначениеЗаполнено(Объект.Ссылка);
Если СписокНаборов.Количество() < 2 Тогда
Элементы.УточнениеНаборовИзменить.Видимость = Ложь;
ИначеЕсли ЗначениеЗаполнено(ТекущийНаборСвойств) Тогда
Элементы.УточнениеНаборовИзменить.Видимость = Истина;
Иначе
Элементы.УточнениеНаборовИзменить.Видимость = Ложь;
КонецЕсли;
Если СписокНаборов.Количество() = 0 Тогда
Элементы.УточнениеНаборовКомментарий.Гиперссылка = Ложь;
Элементы.УточнениеНаборовИзменить.Видимость = Ложь;
Если Объект.ВидСвойства = Перечисления.ВидыСвойств.ДополнительныеСведения
Или Объект.ЭтоДополнительноеСведение Тогда
ТекстКомментария = НСтр("ru = 'Сведение не входит в наборы'");
ИначеЕсли Объект.ВидСвойства = Перечисления.ВидыСвойств.Метки Тогда
ТекстКомментария = НСтр("ru = 'Метка не входит в наборы'");
Иначе
ТекстКомментария = НСтр("ru = 'Реквизит не входит в наборы'");
КонецЕсли;
ИначеЕсли СписокНаборов.Количество() < 2 Тогда
Если Объект.ВидСвойства = Перечисления.ВидыСвойств.ДополнительныеСведения
Или Объект.ЭтоДополнительноеСведение Тогда
ШаблонУточнения = НСтр("ru = 'Сведение входит в набор: %1'");
ИначеЕсли Объект.ВидСвойства = Перечисления.ВидыСвойств.Метки Тогда
ШаблонУточнения = НСтр("ru = 'Метка входит в набор: %1'");
Иначе
ШаблонУточнения = НСтр("ru = 'Реквизит входит в набор: %1'");
КонецЕсли;
ТекстКомментария = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонУточнения, СокрЛП(СписокНаборов[0].Представление));
Иначе
Если Объект.ВидСвойства = Перечисления.ВидыСвойств.ДополнительныеСведения
Или Объект.ЭтоДополнительноеСведение Тогда
ШаблонУточнения = НСтр("ru = 'Сведение входит в %1 %2'");
ИначеЕсли Объект.ВидСвойства = Перечисления.ВидыСвойств.Метки Тогда
ШаблонУточнения = НСтр("ru = 'Метка входит в %1 %2'");
Иначе
ШаблонУточнения = НСтр("ru = 'Реквизит входит в %1 %2'");
КонецЕсли;
СтрокаНаборы = ПользователиСлужебныйКлиентСервер.ПредметЦелогоЧисла(СписокНаборов.Количество(),
"", НСтр("ru = 'набор,набора,наборов,,,,,,0'"));
ТекстКомментария = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонУточнения, Формат(СписокНаборов.Количество(), "ЧГ="), СтрокаНаборы);
КонецЕсли;
Элементы.УточнениеНаборовКомментарий.Заголовок = ТекстКомментария + " ";
Если Элементы.УточнениеНаборовКомментарий.Гиперссылка Тогда
Элементы.УточнениеНаборовКомментарий.Подсказка = НСтр("ru = 'Переход к набору'");
Иначе
Элементы.УточнениеНаборовКомментарий.Подсказка = "";
КонецЕсли;
КонецЕсли;
Элементы.ЗаполнитьИдентификаторДляФормул.Доступность = НЕ Элементы.ИдентификаторДляФормул.ТолькоПросмотр;
КонецПроцедуры
&НаСервере
Процедура ПереключитьНастройкиВыводаРеквизита(ТипЗначения)
РазрешитьВыборМногострочногоПоля = (Объект.ТипЗначения.Типы().Количество() = 1)
И (Объект.ТипЗначения.СодержитТип(Тип("Строка")));
РазрешитьВыводВВидеГиперссылки = РазрешитьВыборМногострочногоПоля
Или (Не Объект.ТипЗначения.СодержитТип(Тип("Строка"))
И Не Объект.ТипЗначения.СодержитТип(Тип("Дата"))
И Не Объект.ТипЗначения.СодержитТип(Тип("Булево"))
И Не Объект.ТипЗначения.СодержитТип(Тип("Число")));
Элементы.ОднострочныйВид.Видимость = РазрешитьВыборМногострочногоПоля;
Элементы.ГруппаМногострочноеПолеВводаНастройки.Видимость = РазрешитьВыборМногострочногоПоля;
Элементы.ВыводитьВВидеГиперссылки.Видимость = РазрешитьВыводВВидеГиперссылки;
КонецПроцедуры
&НаСервере
Процедура ОчиститьВведенныеВесовыеКоэффициенты()
Если Объект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда
ИмяТаблицыЗначений = "Справочник.ЗначенияСвойствОбъектов";
Иначе
ИмяТаблицыЗначений = "Справочник.ЗначенияСвойствОбъектовИерархия";
КонецЕсли;
Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить(ИмяТаблицыЗначений);
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТекущаяТаблица.Ссылка КАК Ссылка
|ИЗ
| Справочник.ЗначенияСвойствОбъектов КАК ТекущаяТаблица
|ГДЕ
| ТекущаяТаблица.Вес <> 0";
Запрос.Текст = СтрЗаменить(Запрос.Текст , "Справочник.ЗначенияСвойствОбъектов", ИмяТаблицыЗначений);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ЗначениеОбъект = Выборка.Ссылка.ПолучитьОбъект();
ЗначениеОбъект.Вес = 0;
ЗначениеОбъект.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСписокНаборов()
СписокНаборов.Очистить();
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ДополнительныеРеквизиты.Ссылка КАК Набор,
| ДополнительныеРеквизиты.Ссылка.Наименование
|ИЗ
| Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК ДополнительныеРеквизиты
|ГДЕ
| ДополнительныеРеквизиты.Свойство = &Свойство
| И НЕ ДополнительныеРеквизиты.Ссылка.ЭтоГруппа
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДополнительныеСведения.Ссылка,
| ДополнительныеСведения.Ссылка.Наименование
|ИЗ
| Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеСведения КАК ДополнительныеСведения
|ГДЕ
| ДополнительныеСведения.Свойство = &Свойство
| И НЕ ДополнительныеСведения.Ссылка.ЭтоГруппа");
Запрос.УстановитьПараметр("Свойство", Объект.Ссылка);
НачатьТранзакцию();
Попытка
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СписокНаборов.Добавить(Выборка.Набор, Выборка.Наименование + " ");
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриСменеСтраницы(Направление, ОсновнаяСтраница, ТекущаяСтраница)
ОсновнаяСтраница.ТекущаяСтраница = ТекущаяСтраница;
Если ТекущаяСтраница = Элементы.ВыборДействия Тогда
Если Направление = "Вперед" Тогда
ВыбранныйЭлемент = Элементы.Свойства.ТекущиеДанные;
ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений = ВыбранныйЭлемент.Свойство;
ЗаполнитьСписокДействийПриДобавленииРеквизита();
КонецЕсли;
ИначеЕсли ТекущаяСтраница = Элементы.КарточкаРеквизита Тогда
ЗаполнитьКарточкуСвойства();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция РеквизитСоСпискомДополнительныхЗначений()
РеквизитСоСпискомДополнительныхЗначений = Истина;
СвойстваВладельца = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений, "ТипЗначения");
Если Не СвойстваВладельца.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов"))
И Не СвойстваВладельца.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) Тогда
РеквизитСоСпискомДополнительныхЗначений = Ложь;
КонецЕсли;
Возврат РеквизитСоСпискомДополнительныхЗначений;
КонецФункции
&НаСервере
Процедура ЗаполнитьСписокДействийПриДобавленииРеквизита()
РеквизитСоСпискомДополнительныхЗначений = РеквизитСоСпискомДополнительныхЗначений();
Если ПереданныеПараметрыФормы.ВидСвойства = Перечисления.ВидыСвойств.ДополнительныеСведения Тогда
ДобавитьОбщий = НСтр("ru = 'Добавить сведение как есть (рекомендуется)
|
|В этом случае будет возможно отбирать по нему данные разных типов в списках и отчетах.'");
СделатьПоОбразцу = НСтр("ru = 'Сделать копию сведения по образцу (с общим списком значений)
|
|Список значений этого сведения будет общим с исходным сведением.
|С помощью этого варианта удобно выполнять централизованную настройку списка значений сразу для нескольких однотипных сведений.
|При этом можно отредактировать наименование и ряд других свойств сведения.'");
Если РеквизитСоСпискомДополнительныхЗначений Тогда
СоздатьКопированием = НСтр("ru = 'Сделать копию сведения
|
|Будет создана копия сведения и всех его значений.'")
Иначе
СоздатьКопированием = НСтр("ru = 'Сделать копию сведения
|
|Будет создана копия сведения.'");
КонецЕсли;
ИначеЕсли ПереданныеПараметрыФормы.ВидСвойства = Перечисления.ВидыСвойств.Метки Тогда
ДобавитьОбщий = НСтр("ru = 'Добавить метку как есть (рекомендуется)
|
|В этом случае будет возможно отбирать по ней данные разных типов в списках и отчетах.'");
СоздатьКопированием = НСтр("ru = 'Сделать копию метки
|
|Будет создана копия метки'");
Иначе
ДобавитьОбщий = НСтр("ru = 'Добавить реквизит как есть (рекомендуется)
|
|В этом случае будет возможно отбирать по нему данные разных типов в списках и отчетах.'");
СделатьПоОбразцу = НСтр("ru = 'Сделать копию реквизита по образцу (с общим списком значений)
|
|Список значений этого реквизита будет общим с исходным реквизитом.
|С помощью этого варианта удобно выполнять централизованную настройку списка значений сразу для нескольких однотипных реквизитов.
|При этом можно отредактировать наименование и ряд других свойств реквизита.'");
Если РеквизитСоСпискомДополнительныхЗначений Тогда
СоздатьКопированием = НСтр("ru = 'Сделать копию реквизита
|
|Будет создана копия реквизита и всех его значений.'");
Иначе
СоздатьКопированием = НСтр("ru = 'Сделать копию реквизита
|
|Будет создана копия реквизита.'");
КонецЕсли;
КонецЕсли;
СписокВыбора = Элементы.РежимДобавленияРеквизита.СписокВыбора;
СписокВыбора.Очистить();
СписокВыбора.Добавить("ДобавитьОбщийРеквизитВНабор", ДобавитьОбщий);
Если РеквизитСоСпискомДополнительныхЗначений Тогда
СписокВыбора.Добавить("СоздатьПоОбразцу", СделатьПоОбразцу);
КонецЕсли;
СписокВыбора.Добавить("СоздатьКопированием", СоздатьКопированием);
РежимДобавленияРеквизита = "ДобавитьОбщийРеквизитВНабор";
КонецПроцедуры
&НаСервере
Процедура ЗаписатьЗначенияДополнительногоРеквизитаПриКопировании(ТекущийОбъект)
Если ТекущийОбъект.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектовИерархия")) Тогда
Родитель = Справочники.ЗначенияСвойствОбъектовИерархия.ПустаяСсылка();
Иначе
Родитель = Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка();
КонецЕсли;
Владелец = ТекущийОбъект.Ссылка;
СтрокаДерева = ЗначенияДополнительныхРеквизитов.ПолучитьЭлементы();
ЗаписатьЗначенияДополнительногоРеквизитаПриКопированииРекурсивно(Владелец, СтрокаДерева, Родитель);
СтрокаДерева.Очистить();
Элементы.СтраницыЗначенияРеквизита.ТекущаяСтраница = Элементы.ДополнительныеЗначения;
КонецПроцедуры
&НаСервере
Процедура ЗаписатьЗначенияДополнительногоРеквизитаПриКопированииРекурсивно(Владелец, СтрокаДерева, Родитель)
Для Каждого ЭлементДерева Из СтрокаДерева Цикл
КопияОбъекта = ЭлементДерева.Ссылка.ПолучитьОбъект().Скопировать();
КопияОбъекта.Владелец = Владелец;
КопияОбъекта.Родитель = Родитель;
КопияОбъекта.Записать();
ДочерниеЭлементы = ЭлементДерева.ПолучитьЭлементы();
ЗаписатьЗначенияДополнительногоРеквизитаПриКопированииРекурсивно(Владелец, ДочерниеЭлементы, КопияОбъекта.Ссылка)
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовкиГиперссылок()
ЗаданаЗависимостьДоступности = Ложь;
ЗаданаЗависимостьОбязательностиЗаполнения = Ложь;
ЗаданаЗависимостьВидимости = Ложь;
ОтборПоНабору = Новый Структура;
ОтборПоНабору.Вставить("НаборСвойств", ТекущийНаборСвойств);
НайденныеЗависимости = Объект.ЗависимостиДополнительныхРеквизитов.НайтиСтроки(ОтборПоНабору);
Для Каждого ЗависимостьСвойства Из НайденныеЗависимости Цикл
Если ЗависимостьСвойства.ЗависимоеСвойство = "Доступен" Тогда
ЗаданаЗависимостьДоступности = Истина;
ИначеЕсли ЗависимостьСвойства.ЗависимоеСвойство = "ЗаполнятьОбязательно" Тогда
ЗаданаЗависимостьОбязательностиЗаполнения = Истина;
ИначеЕсли ЗависимостьСвойства.ЗависимоеСвойство = "Виден" Тогда
ЗаданаЗависимостьВидимости = Истина;
КонецЕсли;
КонецЦикла;
ШаблонЗависимостьЗадана = НСтр("ru = 'с условием'");
ШаблонЗависимостьНеЗадана = НСтр("ru = 'всегда'");
Элементы.ЗадатьУсловиеДоступности.Заголовок = ?(ЗаданаЗависимостьДоступности,
ШаблонЗависимостьЗадана,
ШаблонЗависимостьНеЗадана);
Элементы.ЗадатьУсловиеЗаполнения.Заголовок = ?(ЗаданаЗависимостьОбязательностиЗаполнения,
ШаблонЗависимостьЗадана,
ШаблонЗависимостьНеЗадана);
Элементы.ЗадатьУсловиеВидимости.Заголовок = ?(ЗаданаЗависимостьВидимости,
ШаблонЗависимостьЗадана,
ШаблонЗависимостьНеЗадана);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуНастройкиЗависимости(НастраиваемоеСвойство)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ДополнительныйРеквизит", Объект.Ссылка);
ПараметрыФормы.Вставить("ЗависимостиРеквизитов", Объект.ЗависимостиДополнительныхРеквизитов);
ПараметрыФормы.Вставить("Набор", ТекущийНаборСвойств);
ПараметрыФормы.Вставить("НастраиваемоеСвойство", НастраиваемоеСвойство);
ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Форма.ЗависимостьРеквизитов", ПараметрыФормы);
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовокФормы()
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Если Объект.ВидСвойства = Перечисления.ВидыСвойств.ДополнительныеСведения
Или Объект.ЭтоДополнительноеСведение Тогда
Заголовок = Строка(Объект.Заголовок) + " " + НСтр("ru = '(Дополнительное сведение)'");
ИначеЕсли Объект.ВидСвойства = Перечисления.ВидыСвойств.Метки Тогда
Заголовок = Строка(Объект.Заголовок) + " " + НСтр("ru = '(Метка)'");
Иначе
Заголовок = Строка(Объект.Заголовок) + " " + НСтр("ru = '(Дополнительный реквизит)'");
КонецЕсли;
Иначе
Если Объект.ВидСвойства = Перечисления.ВидыСвойств.ДополнительныеСведения
Или Объект.ЭтоДополнительноеСведение Тогда
Заголовок = НСтр("ru = 'Дополнительное сведение (создание)'");
ИначеЕсли Объект.ВидСвойства = Перечисления.ВидыСвойств.Метки Тогда
Заголовок = НСтр("ru = 'Метка (создание)'");
Иначе
Заголовок = НСтр("ru = 'Дополнительный реквизит (создание)'");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииТекущегоНабора()
Если Элементы.НаборыСвойств.ТекущиеДанные = Неопределено Тогда
Если ЗначениеЗаполнено(ВыбранныйНаборСвойств) Тогда
ВыбранныйНаборСвойств = Неопределено;
ПриИзмененииТекущегоНабораНаСервере();
КонецЕсли;
ИначеЕсли Элементы.НаборыСвойств.ТекущиеДанные.Ссылка <> ВыбранныйНаборСвойств Тогда
ВыбранныйНаборСвойств = Элементы.НаборыСвойств.ТекущиеДанные.Ссылка;
ТекущийНаборЭтоГруппа = Элементы.НаборыСвойств.ТекущиеДанные.ЭтоГруппа;
ПриИзмененииТекущегоНабораНаСервере(ТекущийНаборЭтоГруппа);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииТекущегоНабораНаСервере(ТекущийНаборЭтоГруппа = Неопределено)
Если ЗначениеЗаполнено(ВыбранныйНаборСвойств)
И НЕ ТекущийНаборЭтоГруппа Тогда
ОбновитьСписокСвойствТекущегоНабора();
Иначе
Свойства.Очистить();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСписокСвойствТекущегоНабора()
УправлениеСвойствамиСлужебный.ОбновитьСписокСвойствТекущегоНабора(ЭтотОбъект,
ВыбранныйНаборСвойств,
ВидСвойства);
КонецПроцедуры
&НаСервере
Процедура СоздатьСтруктуруПереданныхПараметров()
ПереданныеПараметрыФормы = Новый Структура;
ПереданныеПараметрыФормы.Вставить("ВладелецДополнительныхЗначений");
ПереданныеПараметрыФормы.Вставить("ПоказатьУточнениеНабора", Истина);
ПереданныеПараметрыФормы.Вставить("ТекущийНаборСвойств");
ПереданныеПараметрыФормы.Вставить("ВидСвойства");
ПереданныеПараметрыФормы.Вставить("ВыборОбщегоСвойства");
ПереданныеПараметрыФормы.Вставить("ВыбранныеЗначения");
ПереданныеПараметрыФормы.Вставить("ВыборВладельцаДополнительныхЗначений");
ПереданныеПараметрыФормы.Вставить("ЗначениеКопирования");
ПереданныеПараметрыФормы.Вставить("КопированиеСВопросом");
ПереданныеПараметрыФормы.Вставить("Перетаскивание", Ложь);
ЗаполнитьЗначенияСвойств(ПереданныеПараметрыФормы, Параметры, , "ПоказатьУточнениеНабора");
ВладелецЗначений = ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений;
Если ЗначениеЗаполнено(ВладелецЗначений) Тогда
ВладелецЗначений = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВладелецЗначений, "ВладелецДополнительныхЗначений");
Если ЗначениеЗаполнено(ВладелецЗначений) Тогда
ПереданныеПараметрыФормы.ВладелецДополнительныхЗначений = ВладелецЗначений;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция НаименованиеУжеИспользуется(Знач Заголовок, Знач ТекущееСвойство, Знач НаборСвойств, НовоеНаименование, Знач ЗаголовокЯзык1, Знач ЗаголовокЯзык2)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
Если МодульМультиязычностьСервер.КодПервогоДополнительногоЯзыкаИнформационнойБазы() = ТекущийЯзык().КодЯзыка Тогда
Заголовок = ЗаголовокЯзык1;
ИначеЕсли МодульМультиязычностьСервер.КодВторогоДополнительногоЯзыкаИнформационнойБазы() = ТекущийЯзык().КодЯзыка Тогда
Заголовок = ЗаголовокЯзык2;
КонецЕсли;
КонецЕсли;
НовоеНаименование = Заголовок;
Возврат УправлениеСвойствамиСлужебный.НаименованиеУжеИспользуется(ТекущееСвойство, НаборСвойств, НовоеНаименование);
КонецФункции
&НаСервереБезКонтекста
Функция ИмяУжеИспользуется(Знач Имя, Знач ТекущееСвойство, НовоеНаименование)
Возврат УправлениеСвойствамиСлужебный.ИмяУжеИспользуется(Имя, ТекущееСвойство);
КонецФункции
&НаСервереБезКонтекста
Функция ИдентификаторДляФормулУжеИспользуется(Знач ИдентификаторДляФормул, Знач ТекущееСвойство)
ТекстВопроса = УправлениеСвойствамиСлужебный.ИдентификаторДляФормулУжеИспользуется(ИдентификаторДляФормул, ТекущееСвойство);
Если Не ЗначениеЗаполнено(ТекстВопроса) Тогда
Возврат "";
КонецЕсли;
Уточнение = НСтр("ru = 'Создать новый идентификатор для формул и продолжить запись?'");
ТекстВопроса = ТекстВопроса + Символы.ПС + Символы.ПС + Уточнение;
Возврат ТекстВопроса;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьЗаголовокКнопкиФормата(Форма)
Если ПустаяСтрока(Форма.Объект.ФорматСвойства) Тогда
ТекстЗаголовка = НСтр("ru = 'Формат по умолчанию'");
Иначе
ТекстЗаголовка = НСтр("ru = 'Формат установлен'");
КонецЕсли;
Форма.Элементы.РедактироватьФорматЗначения.Заголовок = ТекстЗаголовка;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьЦветМетки(Форма, ЦветМетки)
Элементы = Форма.Элементы;
Элементы.СвойствоСерое.Пометка = (ЦветМетки = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.ПустаяСсылка")
ИЛИ ЦветМетки = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Серый"));
Элементы.СвойствоГолубое.Пометка = (ЦветМетки = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Голубой"));
Элементы.СвойствоЖелтое.Пометка = (ЦветМетки = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Желтый"));
Элементы.СвойствоЗеленое.Пометка = (ЦветМетки = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Зеленый"));
Элементы.СвойствоЛаймовое.Пометка = (ЦветМетки = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Лаймовый"));
Элементы.СвойствоКрасное.Пометка = (ЦветМетки = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Красный"));
Элементы.СвойствоОранжевое.Пометка = (ЦветМетки = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Оранжевый"));
Элементы.СвойствоРозовое.Пометка = (ЦветМетки = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Розовый"));
Элементы.СвойствоСинее.Пометка = (ЦветМетки = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Синий"));
Элементы.СвойствоФиолетовое.Пометка = (ЦветМетки = ПредопределенноеЗначение("Перечисление.ЦветаСвойств.Фиолетовый"));
КонецПроцедуры
#КонецОбласти