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