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