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