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