#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если ЭтоГруппа Или Не ЗначениеЗаполнено(Родитель) Тогда
Для Каждого ДополнительныйРеквизит Из ДополнительныеРеквизиты Цикл
Если ДополнительныйРеквизит.ИмяПредопределенногоНабора <> ИмяПредопределенногоНабора Тогда
ДополнительныйРеквизит.ИмяПредопределенногоНабора = ИмяПредопределенногоНабора;
КонецЕсли;
КонецЦикла;
Для Каждого ДополнительноеСведение Из ДополнительныеСведения Цикл
Если ДополнительноеСведение.ИмяПредопределенногоНабора <> ИмяПредопределенногоНабора Тогда
ДополнительноеСведение.ИмяПредопределенногоНабора = ИмяПредопределенногоНабора;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Не ЭтоГруппа Тогда
ВыбранныеСвойства = Новый Соответствие;
УдаляемыеСвойства = Новый Массив;
Реквизитов = 0;
Меток = 0;
Свойства = ДополнительныеРеквизиты.Выгрузить().ВыгрузитьКолонку("Свойство");
ВидыСвойств = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(Свойства, "ВидСвойства");
Для каждого ДополнительныйРеквизит Из ДополнительныеРеквизиты Цикл
Если ДополнительныйРеквизит.Свойство.Пустая()
ИЛИ ВыбранныеСвойства.Получить(ДополнительныйРеквизит.Свойство) <> Неопределено Тогда
УдаляемыеСвойства.Добавить(ДополнительныйРеквизит);
Иначе
ВыбранныеСвойства.Вставить(ДополнительныйРеквизит.Свойство, Истина);
КонецЕсли;
Если ДополнительныйРеквизит.ПометкаУдаления Тогда
Продолжить;
КонецЕсли;
Свойство = ВидыСвойств.Получить(ДополнительныйРеквизит.Свойство);
Если Не ЗначениеЗаполнено(Свойство) Тогда
Продолжить;
КонецЕсли;
Если Свойство.ВидСвойства = Перечисления.ВидыСвойств.Метки Тогда
Меток = Меток + 1;
Иначе
Реквизитов = Реквизитов + 1;
КонецЕсли;
КонецЦикла;
КоличествоРеквизитов = Формат(Реквизитов, "ЧГ=");
КоличествоМеток = Формат(Меток, "ЧГ=");
Для каждого УдаляемоеСвойство Из УдаляемыеСвойства Цикл
ДополнительныеРеквизиты.Удалить(УдаляемоеСвойство);
КонецЦикла;
ВыбранныеСвойства.Очистить();
УдаляемыеСвойства.Очистить();
Для каждого ДополнительноеСведение Из ДополнительныеСведения Цикл
Если ДополнительноеСведение.Свойство.Пустая()
ИЛИ ВыбранныеСвойства.Получить(ДополнительноеСведение.Свойство) <> Неопределено Тогда
УдаляемыеСвойства.Добавить(ДополнительноеСведение);
Иначе
ВыбранныеСвойства.Вставить(ДополнительноеСведение.Свойство, Истина);
КонецЕсли;
КонецЦикла;
Для каждого УдаляемоеСвойство Из УдаляемыеСвойства Цикл
ДополнительныеСведения.Удалить(УдаляемоеСвойство);
КонецЦикла;
КоличествоСведений = Формат(ДополнительныеСведения.НайтиСтроки(
Новый Структура("ПометкаУдаления", Ложь)).Количество(), "ЧГ=");
КонецЕсли;
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если НЕ ЭтоГруппа Тогда
Если ЗначениеЗаполнено(Родитель) Тогда
УправлениеСвойствамиСлужебный.ПроверитьОбновитьСоставСвойствГруппы(Родитель);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ПриЧтенииПредставленийНаСервере() Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриЧтенииПредставленийНаСервере(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли