#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ТолькоПросмотр = Параметры.ТолькоПросмотр;
ТипДокумента = Параметры.ТипДокумента;
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип(ТипДокумента));
ОписаниеТипов = Новый ОписаниеТипов(МассивТипов);
МассивРеквизитов = Новый Массив();
МассивРеквизитов.Добавить(Новый РеквизитФормы("Объект", ОписаниеТипов));
ИзменитьРеквизиты(МассивРеквизитов);
ДокументОбъект = ЭтотОбъект.Объект;
ДокументОбъект.ДополнительныеРеквизиты.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресВоВременномХранилище));
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", ДокументОбъект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
Если ТолькоПросмотр Тогда
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаДополнительныеРеквизиты", "ТолькоПросмотр", Истина);
КонецЕсли;
РеквизитыОтсутсвуют = (Элементы.ГруппаДополнительныеРеквизиты.ПодчиненныеЭлементы.Количество() = 0);
Элементы.ГруппаРеквизитыОтсутствуют.Видимость = РеквизитыОтсутсвуют;
Попытка
МетаданныеСтрокой = ОбщегоНазначения.ИмяТаблицыПоСсылке(ДокументОбъект.Ссылка);
НаборДопРеквизитов = УправлениеСвойствами.НаборСвойствПоИмени(СтрЗаменить(МетаданныеСтрокой,".","_"));
Элементы.ГруппаЗаголовок.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"%1 ""%2""",
ОбщегоНазначения.ВидОбъектаПоСсылке(ДокументОбъект.Ссылка),
ДокументОбъект.Ссылка.Метаданные().Синоним);
Исключение
НаборДопРеквизитов = Неопределено;
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ПринудительноЗакрытьФорму Тогда
Возврат;
КонецЕсли;
Если Модифицированность И Не СохранитьПараметры И НЕ ЗавершениеРаботы Тогда
СписокКнопок = Новый СписокЗначений();
СписокКнопок.Добавить("Закрыть", НСтр("ru = 'Закрыть'"));
СписокКнопок.Добавить("НеЗакрывать", НСтр("ru = 'Не закрывать'"));
ДополнительныеПараметры = Новый Структура;
Отказ = Истина;
ПоказатьВопрос(
Новый ОписаниеОповещения("ПередЗакрытиемВопросЗавершение", ЭтотОбъект, ДополнительныеПараметры),
НСтр("ru = 'Дополнительные реквизиты были изменены. Закрыть без сохранения реквизитов?'"),
СписокКнопок);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытиемВопросЗавершение(ОтветНаВопрос, ДополнительныеРеквизиты) Экспорт
Если ОтветНаВопрос = "НеЗакрывать" Тогда
СохранитьПараметры = Ложь;
Иначе
ПринудительноЗакрытьФорму = Истина;
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если СохранитьПараметры И НЕ ЗавершениеРаботы Тогда
РезультатВыбора = ПоместитьДополнительныеРеквизитыВХранилище();
ОповеститьОВыборе(РезультатВыбора);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ОК(Команда)
Если Не ТолькоПросмотр Тогда
СохранитьПараметры = Истина;
КонецЕсли;
Закрыть();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
#Область Прочее
&НаСервере
Функция ПоместитьДополнительныеРеквизитыВХранилище()
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ЭтаФорма["Объект"]);
АдресТоваровВХранилище = ПоместитьВоВременноеХранилище(ЭтаФорма["Объект"].ДополнительныеРеквизиты.Выгрузить(), УникальныйИдентификатор);
Возврат Новый Структура("ТипДокумента,ДополнительныеРеквизиты", ТипДокумента, АдресТоваровВХранилище);
КонецФункции
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьСоставДополнительныхРеквизитов(Команда)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ПоказатьДополнительныеРеквизиты");
ОткрытьФорму("Справочник.НаборыДополнительныхРеквизитовИСведений.ФормаСписка", ПараметрыФормы,,,,,
);
ПараметрыПерехода = Новый Структура("Набор, Свойство, ВидСвойства, ЭтоДополнительноеСведение",
НаборДопРеквизитов,
Неопределено,
ПредопределенноеЗначение("Перечисление.ВидыСвойств.ДополнительныеРеквизиты"),
Ложь);
Оповестить("Переход_НаборыДополнительныхРеквизитовИСведений", ПараметрыПерехода);
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#КонецОбласти