#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не Параметры.Свойство("ИмяПланаОбмена") Тогда
ВызватьИсключение НСтр("ru = 'Эта форма не предназначена для непосредственного открытия.'", ОбщегоНазначения.КодОсновногоЯзыка());
КонецЕсли;
ОбменДаннымиСервер.ПроверитьВозможностьАдминистрированияОбменов();
ИнициализироватьРеквизитыФормы();
ИнициализироватьСвойстваФормы();
УстановитьНачальноеОтображениеЭлементовФормы();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ЗаполнитьТаблицуЭтаповНастройки();
ОбновитьОтображениеТекущегоСостоянияНастройки();
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
СсылкаСуществует = Ложь;
НастройкаЗавершена = Ложь;
Если ЗначениеЗаполнено(Объект.УзелИнформационнойБазы) Тогда
НастройкаЗавершена = НастройкаСинхронизацииЗавершена(Объект.УзелИнформационнойБазы, СсылкаСуществует);
Если Не СсылкаСуществует Тогда
Возврат;
КонецЕсли;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.УзелИнформационнойБазы)
Или Не НастройкаЗавершена
Или (НастройкаРИБ И Не ПродолжениеНастройкиВПодчиненномУзлеРИБ И Не НачальныйОбразСоздан(Объект.УзелИнформационнойБазы))Тогда
ТекстПредупреждения = НСтр("ru = 'Настройка синхронизации данных еще не завершена.
|Завершить работу с помощником? Настройку можно будет продолжить позже.'");
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияПроизвольнойФормы(
ЭтотОбъект, Отказ, ЗавершениеРаботы, ТекстПредупреждения, "ЗакрытьФормуБезусловно");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если Не ЗавершениеРаботы Тогда
Оповестить("ЗакрытаФормаПомощникаСозданияОбменаДанными");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ВыборТипаТранспорта(Команда)
ПараметрыФормы = Новый Структура("ИмяПланаОбмена, ИдентификаторТранспорта, ИдентификаторНастройки, ВариантРаботыМастера");
ЗаполнитьЗначенияСвойств(ПараметрыФормы, Объект);
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ВыборТипаТранспортаЗавершение", ЭтотОбъект);
ОткрытьФорму("Обработка.ПомощникСозданияОбменаДанными.Форма.ВыборТипаТранспорта",
ПараметрыФормы, ЭтаФорма,,,, ОповещениеОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПодробноеОписаниеСинхронизацииДанных(Команда)
ОбменДаннымиКлиент.ОткрытьПодробноеОписаниеСинхронизации(ОписаниеВариантаНастройки.ПодробнаяИнформацияПоОбмену);
КонецПроцедуры
&НаКлиенте
Процедура НастроитьПараметрыПодключения(Команда)
ПолноеИмяФормыНастройки = ТранспортСообщенийОбменаВызовСервера.ПолноеИмяФормыПервойНастройки(Объект.ИдентификаторТранспорта);
НастройкиПодключения = ТранспортСообщенийОбменаКлиентСервер.НастройкиПодключенияПоОбработке(Объект);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("НастройкиПодключения", НастройкиПодключения);
ПараметрыФормы.Вставить("ИдентификаторНастройки", НастройкиПодключения.ИдентификаторНастройки);
ПараметрыФормы.Вставить("НастройкиТранспорта", НастройкиПодключения.НастройкиТранспорта);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИдентификаторТранспорта", Объект.ИдентификаторТранспорта);
ОповещениеОЗакрытии = Новый ОписаниеОповещения("НастроитьПараметрыПодключенияЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму(ПолноеИмяФормыНастройки, ПараметрыФормы,,,,,
ОповещениеОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура НастроитьОбщиеПараметры(Команда)
Если ЗначениеЗаполнено(Объект.ДанныеАутентификации) Тогда
НастроитьОбщиеПараметрыПродолжение();
Возврат;
КонецЕсли;
ПараметрыАутентификации = ТранспортСообщенийОбменаКлиент.ПараметрыАутентификации();
ПараметрыАутентификации.Корреспондент = Объект.УзелИнформационнойБазы;
ПараметрыАутентификации.ИмяПланаОбмена = Объект.ИмяПланаОбмена;
ПараметрыАутентификации.ИдентификаторТранспорта = Объект.ИдентификаторТранспорта;
ПараметрыАутентификации.НастройкиТранспорта = Объект.НастройкиТранспорта;
ТребуетсяАутентификация = Ложь;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("НастроитьОбщиеПараметрыЗавершениеАутентификации", ЭтотОбъект);
ТранспортСообщенийОбменаКлиент.НачалоАутентификации(ПараметрыАутентификации, ТребуетсяАутентификация, ОповещениеОЗакрытии);
Если НЕ ТребуетсяАутентификация Тогда
НастроитьОбщиеПараметрыПродолжение();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НастроитьОбщиеПараметрыЗавершениеАутентификации(ДанныеАутентификации, ДополнительныеПараметры) Экспорт
Если НЕ ЗначениеЗаполнено(ДанныеАутентификации) Тогда
Возврат;
КонецЕсли;
Объект.ДанныеАутентификации = ДанныеАутентификации;
НастроитьОбщиеПараметрыПродолжение();
КонецПроцедуры
&НаКлиенте
Процедура НастроитьОбщиеПараметрыПродолжение()
ПараметрыФормы = Новый Структура;
НастройкиПодключения = ТранспортСообщенийОбменаКлиентСервер.СтруктураНастроекПодключения();
ЗаполнитьЗначенияСвойств(НастройкиПодключения, Объект);
НастройкиПодключения.ИмяПланаОбмена = Объект.ИмяПланаОбмена;
НастройкиПодключения.ИдентификаторНастройки = Объект.ИдентификаторНастройки;
ПараметрыФормы.Вставить("НастройкиПодключения", НастройкиПодключения);
Если ПродолжениеНастройкиВПодчиненномУзлеРИБ Тогда
ПараметрыФормы.Вставить("ПродолжениеНастройкиВПодчиненномУзлеРИБ");
КонецЕсли;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("НастроитьОбщиеПараметрыЗавершение", ЭтотОбъект);
ОткрытьФорму("Обработка.ПомощникСозданияОбменаДанными.Форма.НастройкаОбщихПараметров",
ПараметрыФормы, ЭтаФорма,,,, ОповещениеОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьПодтверждениеПодключения(Команда)
Если ПолученыНастройкиXDTOКорреспондента(Объект.УзелИнформационнойБазы) Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Подключение подтверждено.'"));
Возврат;
КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОбменДаннымиСВнешнимиСистемами") Тогда
Контекст = Новый Структура;
Контекст.Вставить("Режим", "ПодтверждениеПодключения");
Контекст.Вставить("Корреспондент", Объект.УзелИнформационнойБазы);
Контекст.Вставить("ИдентификаторНастройки", "ИдентификаторНастройки");
Контекст.Вставить("ПараметрыПодключения", ПараметрыПодключенияВнешнейСистемы);
Отказ = Ложь;
ИмяФормыПомощника = "";
ПараметрыПомощника = Новый Структура;
МодульОбменДаннымиСВнешнимиСистемамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбменДаннымиСВнешнимиСистемамиКлиент");
МодульОбменДаннымиСВнешнимиСистемамиКлиент.ПередНастройкойПараметровПодключения(
Контекст, Отказ, ИмяФормыПомощника, ПараметрыПомощника);
Если Не Отказ Тогда
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПолучитьПодтверждениеПодключенияЗавершение", ЭтотОбъект);
ОткрытьФорму(ИмяФормыПомощника,
ПараметрыПомощника, ЭтотОбъект, , , , ОповещениеОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НастроитьПравилаОтправкиИПолученияДанных(Команда)
ОповещениеПродолжения = Новый ОписаниеОповещения("НастроитьПравилаОтправкиИПолученияДанныхПродолжение", ЭтотОбъект);
Если НастройкаXDTO Тогда
ПрерватьНастройку = Ложь;
ВыполнитьЗагрузкуНастроекXDTOПриНеобходимости(ПрерватьНастройку, ОповещениеПродолжения);
Если ПрерватьНастройку Тогда
Возврат;
КонецЕсли;
КонецЕсли;
Результат = Новый Структура;
Результат.Вставить("ПродолжитьНастройку", Истина);
Результат.Вставить("ПолученыДанныеДляСопоставления", ПолученыДанныеДляСопоставления);
ВыполнитьОбработкуОповещения(ОповещениеПродолжения, Результат);
КонецПроцедуры
&НаКлиенте
Процедура СоздатьНачальныйОбразРИБ(Команда)
ПараметрыПомощника = Новый Структура("Ключ, Узел", Объект.УзелИнформационнойБазы, Объект.УзелИнформационнойБазы);
ОповещениеОЗакрытии = Новый ОписаниеОповещения("СоздатьНачальныйОбразРИБЗавершение", ЭтотОбъект);
ОткрытьФорму(ИмяФормыСозданияНачальногоОбраза,
ПараметрыПомощника, ЭтотОбъект, , , , ОповещениеОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьСопоставлениеИЗагрузкуДанных(Команда)
ОповещениеПродолжения = Новый ОписаниеОповещения("ВыполнитьСопоставлениеИЗагрузкуДанныхПродолжение", ЭтотОбъект);
ПараметрыПомощника = Новый Структура;
ПараметрыПомощника.Вставить("ОтправитьДанные", Ложь);
ПараметрыПомощника.Вставить("НастройкаРасписания", Ложь);
Если ЭтоОбменСПриложениемВСервисе Тогда
ПараметрыПомощника.Вставить("ОбластьДанныхКорреспондента", ОбластьДанныхКорреспондента);
КонецЕсли;
ВспомогательныеПараметры = Новый Структура;
ВспомогательныеПараметры.Вставить("ПараметрыПомощника", ПараметрыПомощника);
ВспомогательныеПараметры.Вставить("ОповещениеОЗакрытии", ОповещениеПродолжения);
ОбменДаннымиКлиент.ОткрытьПомощникСопоставленияОбъектовОбработкаКоманды(Объект.УзелИнформационнойБазы,
ЭтотОбъект, ВспомогательныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьНачальнуюВыгрузкуДанных(Команда)
Отказ = Ложь;
ПередВыполнениемНачальнойВыгрузки(Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ДанныеАутентификации) Тогда
ВыполнитьНачальнуюВыгрузкуДанныхПродолжение();
Возврат;
КонецЕсли;
ПараметрыАутентификации = ТранспортСообщенийОбменаКлиент.ПараметрыАутентификации();
ПараметрыАутентификации.Корреспондент = Объект.УзелИнформационнойБазы;
ПараметрыАутентификации.ИмяПланаОбмена = Объект.ИмяПланаОбмена;
ПараметрыАутентификации.ИдентификаторТранспорта = Объект.ИдентификаторТранспорта;
ПараметрыАутентификации.НастройкиТранспорта = Объект.НастройкиТранспорта;
ТребуетсяАутентификация = Ложь;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ВыполнитьНачальнуюВыгрузкуДанныхЗавершениеАутентификации", ЭтотОбъект);
ТранспортСообщенийОбменаКлиент.НачалоАутентификации(ПараметрыАутентификации, ТребуетсяАутентификация, ОповещениеОЗакрытии);
Если НЕ ТребуетсяАутентификация Тогда
ВыполнитьНачальнуюВыгрузкуДанныхПродолжение();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьНачальнуюВыгрузкуДанныхЗавершениеАутентификации(ДанныеАутентификации, ДополнительныеПараметры) Экспорт
Если НЕ ЗначениеЗаполнено(ДанныеАутентификации) Тогда
Возврат;
КонецЕсли;
Объект.ДанныеАутентификации = ДанныеАутентификации;
ВыполнитьНачальнуюВыгрузкуДанныхПродолжение();
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьНачальнуюВыгрузкуДанныхПродолжение()
ПараметрыПомощника = Новый Структура;
ПараметрыПомощника.Вставить("УзелОбмена", Объект.УзелИнформационнойБазы);
ПараметрыПомощника.Вставить("НачальнаяВыгрузка");
ПараметрыПомощника.Вставить("ДанныеАутентификации", Объект.ДанныеАутентификации);
Если МодельСервиса Тогда
ПараметрыПомощника.Вставить("ЭтоОбменСПриложениемВСервисе", ЭтоОбменСПриложениемВСервисе);
ПараметрыПомощника.Вставить("ОбластьДанныхКорреспондента", ОбластьДанныхКорреспондента);
КонецЕсли;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ВыполнитьНачальнуюВыгрузкуДанныхЗавершение", ЭтотОбъект);
ОткрытьФорму("Обработка.ПомощникИнтерактивногоОбменаДанными.Форма.ВыгрузкаДанныхДляСопоставления",
ПараметрыПомощника, ЭтотОбъект, , , , ОповещениеОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ПередВыполнениемНачальнойВыгрузки(Отказ)
КонецПроцедуры
&НаСервереБезКонтекста
Функция СостояниеНастройкиСинхронизации(УзелОбмена)
Результат = Новый Структура;
Результат.Вставить("НастройкаСинхронизацииЗавершена", НастройкаСинхронизацииЗавершена(УзелОбмена));
Результат.Вставить("НачальныйОбразСоздан", НачальныйОбразСоздан(УзелОбмена));
Результат.Вставить("ПолученоСообщениеСДаннымиДляСопоставления", ОбменДаннымиСервер.ПолученоСообщениеСДаннымиДляСопоставления(УзелОбмена));
Результат.Вставить("ПолученыНастройкиXDTOКорреспондента", ПолученыНастройкиXDTOКорреспондента(УзелОбмена));
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция ПолученыНастройкиXDTOКорреспондента(УзелОбмена)
НастройкиКорреспондента = ОбменДаннымиXDTOСервер.ПоддерживаемыеОбъектыФорматаКорреспондента(УзелОбмена, "ОтправкаПолучение");
Возврат НастройкиКорреспондента.Количество() > 0;
КонецФункции
&НаСервереБезКонтекста
Функция НачальныйОбразСоздан(УзелОбмена)
Возврат РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.НачальныйОбразСоздан(УзелОбмена);
КонецФункции
&НаКлиенте
Процедура НастроитьПараметрыПодключенияЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
Объект.НастройкиТранспорта = РезультатЗакрытия;
Если ТекущийЭтапНастройки = "НастройкаПодключения" Тогда
ПерейтиКСледующемуЭтапуНастройки();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыборТипаТранспортаЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
Для Каждого КлючИЗначение Из РезультатЗакрытия Цикл
Если ЗначениеЗаполнено(КлючИЗначение.Значение) Тогда
Объект[КлючИЗначение.Ключ] = КлючИЗначение.Значение;
КонецЕсли;
КонецЦикла;
ЕстьНастройкиТранспорта = ЗначениеЗаполнено(Объект.НастройкиТранспорта);
Если Объект.ВариантРаботыМастера = "ПродолжитьНастройкуОбменаДанными" Тогда
ТекущийЭтапНастройки = "ВыборТипаТранспорта";
КонецЕсли;
Если ТекущийЭтапНастройки = "ВыборТипаТранспорта" Тогда
ПерейтиКСледующемуЭтапуНастройки();
Если Объект.ВариантРаботыМастера = "ПродолжитьНастройкуОбменаДанными"
И ЕстьНастройкиТранспорта
И НЕ НастройкаУзлаВКорреспондентеНаСервере() Тогда
ПерейтиКСледующемуЭтапуНастройки();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция НастройкаУзлаВКорреспондентеНаСервере()
Возврат ТранспортСообщенийОбмена.ПараметрТранспорта(
Объект.ИдентификаторТранспорта, "НастройкаУзлаВКорреспонденте");
КонецФункции
&НаКлиенте
Процедура НастроитьОбщиеПараметрыЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
Объект.УзелИнформационнойБазы = РезультатЗакрытия.УзелОбмена;
Если ЗначениеЗаполнено(Объект.ДанныеАутентификации) Тогда
ТранспортСообщенийОбменаВызовСервера.УстановитьПарольСинхронизацииДанных(
Объект.УзелИнформационнойБазы, Объект.ДанныеАутентификации);
КонецЕсли;
Если РезультатЗакрытия.Свойство("ЕстьДанныеДляСопоставления")
И РезультатЗакрытия.ЕстьДанныеДляСопоставления Тогда
ПолученыДанныеДляСопоставления = Истина;
КонецЕсли;
ЗаполнитьТаблицуЭтаповНастройки();
ОбновитьОтображениеТекущегоСостоянияНастройки();
Если ТекущийЭтапНастройки = "ОбщиеПараметры" Тогда
ПерейтиКСледующемуЭтапуНастройки();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьПодтверждениеПодключенияЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ПолученыНастройкиXDTOКорреспондента(Объект.УзелИнформационнойБазы) Тогда
ПерейтиКСледующемуЭтапуНастройки();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьЗагрузкуНастроекXDTOПриНеобходимости(ПрерватьНастройку, ОповещениеПродолжения)
СостояниеНастройки = СостояниеНастройкиСинхронизации(Объект.УзелИнформационнойБазы);
Если Не СостояниеНастройки.НастройкаСинхронизацииЗавершена
И Не СостояниеНастройки.ПолученыНастройкиXDTOКорреспондента Тогда
ПараметрыЗагрузки = Новый Структура;
ПараметрыЗагрузки.Вставить("УзелОбмена", Объект.УзелИнформационнойБазы);
ОткрытьФорму("Обработка.ПомощникСозданияОбменаДанными.Форма.ЗагрузкаНастроекXDTO",
ПараметрыЗагрузки, ЭтотОбъект, , , , ОповещениеПродолжения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ПрерватьНастройку = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НастроитьПравилаОтправкиИПолученияДанныхПродолжение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если ТипЗнч(РезультатЗакрытия) <> Тип("Структура")
ИЛИ Не РезультатЗакрытия.ПродолжитьНастройку Тогда
Возврат;
КонецЕсли;
Если РезультатЗакрытия.ПолученыДанныеДляСопоставления
И Не ПолученыДанныеДляСопоставления Тогда
ПолученыДанныеДляСопоставления = РезультатЗакрытия.ПолученыДанныеДляСопоставления;
КонецЕсли;
ЗаполнитьТаблицуЭтаповНастройки();
ОбновитьОтображениеТекущегоСостоянияНастройки();
ОповещениеОЗакрытии = Новый ОписаниеОповещения("НастроитьПравилаОтправкиИПолученияДанныхЗавершение", ЭтотОбъект);
ПараметрыПроверки = Новый Структура;
ПараметрыПроверки.Вставить("Корреспондент", Объект.УзелИнформационнойБазы);
ПараметрыПроверки.Вставить("ИмяПланаОбмена", Объект.ИмяПланаОбмена);
ПараметрыПроверки.Вставить("ИдентификаторНастройки", Объект.ИдентификаторНастройки);
НастройкаВыполнена = Ложь;
ПередНастройкойСинхронизацииДанных(ПараметрыПроверки, НастройкаВыполнена, ИмяФормыПомощникаНастройкиСинхронизацииДанных);
Если НастройкаВыполнена Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Настройка правил отправки и получения данных выполнена.'"));
ВыполнитьОбработкуОповещения(ОповещениеОЗакрытии, Истина);
Возврат;
КонецЕсли;
ПараметрыПомощника = Новый Структура;
Если ПустаяСтрока(ИмяФормыПомощникаНастройкиСинхронизацииДанных) Тогда
ПараметрыПомощника.Вставить("Ключ", Объект.УзелИнформационнойБазы);
ПараметрыПомощника.Вставить("ИмяФормыПомощника", "ПланОбмена.[ИмяПланаОбмена].ФормаОбъекта");
ПараметрыПомощника.ИмяФормыПомощника = СтрЗаменить(ПараметрыПомощника.ИмяФормыПомощника,
"[ИмяПланаОбмена]", Объект.ИмяПланаОбмена);
Иначе
ПараметрыПомощника.Вставить("УзелОбмена", Объект.УзелИнформационнойБазы);
ПараметрыПомощника.Вставить("ИмяФормыПомощника", ИмяФормыПомощникаНастройкиСинхронизацииДанных);
КонецЕсли;
ОткрытьФорму(ПараметрыПомощника.ИмяФормыПомощника,
ПараметрыПомощника, ЭтотОбъект, , , , ОповещениеОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура НастроитьПравилаОтправкиИПолученияДанныхЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если ТекущийЭтапНастройки = "НастройкаПравил"
И НастройкаСинхронизацииЗавершена(Объект.УзелИнформационнойБазы) Тогда
Оповестить("Запись_УзелПланаОбмена");
Если ПродолжениеНастройкиВПодчиненномУзлеРИБ Тогда
ОбновитьИнтерфейс();
КонецЕсли;
ПерейтиКСледующемуЭтапуНастройки();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьСопоставлениеИЗагрузкуДанныхПродолжение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если ТекущийЭтапНастройки = "СопоставлениеИЗагрузка"
И ВыполненаЗагрузкаДанныхДляСопоставления(Объект.УзелИнформационнойБазы) Тогда
ПерейтиКСледующемуЭтапуНастройки();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьНачальныйОбразРИБЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если ТекущийЭтапНастройки = "НачальныйОбразРИБ"
И НачальныйОбразСоздан(Объект.УзелИнформационнойБазы) Тогда
ПерейтиКСледующемуЭтапуНастройки();
КонецЕсли;
ОбновитьИнтерфейс();
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьНачальнуюВыгрузкуДанныхЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если ТекущийЭтапНастройки = "НачальнаяВыгрузкаДанных"
И РезультатЗакрытия = Объект.УзелИнформационнойБазы Тогда
ПерейтиКСледующемуЭтапуНастройки();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьОтображениеТекущегоСостоянияНастройки()
Для Каждого ЭтапНастройки Из ЭтапыНастройки Цикл
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, ЭтапНастройки.Группа, "Видимость", ЭтапНастройки.Используется);
КонецЦикла;
Если ПустаяСтрока(ТекущийЭтапНастройки) Тогда
Для Каждого ЭтапНастройки Из ЭтапыНастройки Цикл
Элементы[ЭтапНастройки.Группа].Доступность = Истина;
Элементы[ЭтапНастройки.Кнопка].Шрифт = ОбщегоНазначенияКлиент.ШрифтСтиля("КомандаПомощникаНастройкиСинхронизацииОбычнаяШрифт");
Если ЭтапНастройки.Основное Тогда
Элементы[ЭтапНастройки.Панель].ТекущаяСтраница = Элементы[ЭтапНастройки.СтраницаУспешно];
Иначе
Элементы[ЭтапНастройки.Панель].ТекущаяСтраница = Элементы[ЭтапНастройки.СтраницаПустой];
КонецЕсли;
КонецЦикла;
Иначе
ТекущийЭтапНайден = Ложь;
Для Каждого ЭтапНастройки Из ЭтапыНастройки Цикл
Если ЭтапНастройки.Название = ТекущийЭтапНастройки Тогда
Элементы[ЭтапНастройки.Группа].Доступность = Истина;
Элементы[ЭтапНастройки.Панель].ТекущаяСтраница = Элементы[ЭтапНастройки.СтраницаТекущий];
Элементы[ЭтапНастройки.Кнопка].Шрифт = ОбщегоНазначенияКлиент.ШрифтСтиля("КомандаПомощникаНастройкиСинхронизацииВажнаяШрифт");
ТекущийЭтапНайден = Истина;
ИначеЕсли Не ТекущийЭтапНайден Тогда
Элементы[ЭтапНастройки.Группа].Доступность = Истина;
Элементы[ЭтапНастройки.Панель].ТекущаяСтраница = Элементы[ЭтапНастройки.СтраницаУспешно];
Элементы[ЭтапНастройки.Кнопка].Шрифт = ОбщегоНазначенияКлиент.ШрифтСтиля("КомандаПомощникаНастройкиСинхронизацииОбычнаяШрифт");
Иначе
Элементы[ЭтапНастройки.Группа].Доступность = Ложь;
Элементы[ЭтапНастройки.Панель].ТекущаяСтраница = Элементы[ЭтапНастройки.СтраницаПустой];
Элементы[ЭтапНастройки.Кнопка].Шрифт = ОбщегоНазначенияКлиент.ШрифтСтиля("КомандаПомощникаНастройкиСинхронизацииОбычнаяШрифт");
КонецЕсли;
КонецЦикла;
Для Каждого ЭтапНастройки Из ЭтапыНастройки Цикл
Если НЕ ЭтапНастройки.Используется Тогда
Элементы[ЭтапНастройки.Группа].Доступность = Ложь;
Элементы[ЭтапНастройки.Панель].ТекущаяСтраница = Элементы[ЭтапНастройки.СтраницаПустой];
КонецЕсли;
КонецЦикла;
КонецЕсли;
ЭтапыПослеПодключения = "НастройкаПравил,НачальныйОбразРИБ,СопоставлениеИЗагрузка,НачальнаяВыгрузкаДанных,ПодтверждениеПодключения";
Если СтрНайти(ЭтапыПослеПодключения, ТекущийЭтапНастройки) > 0 Тогда
Элементы.ВыборТипаТранспорта.Доступность = Ложь;
Элементы.НастроитьПараметрыПодключения.Доступность = Ложь;
Элементы.ПолучитьПодтверждениеПодключения.Доступность = Ложь;
Элементы.НастроитьОбщиеПараметры.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиКСледующемуЭтапуНастройки()
СледующаяСтрока = Неопределено;
ТекущийЭтапНайден = Ложь;
Для Каждого СтрокаЭтапыНастройки Из ЭтапыНастройки Цикл
Если ТекущийЭтапНайден И СтрокаЭтапыНастройки.Используется Тогда
СледующаяСтрока = СтрокаЭтапыНастройки;
Прервать;
КонецЕсли;
Если СтрокаЭтапыНастройки.Название = ТекущийЭтапНастройки Тогда
ТекущийЭтапНайден = Истина;
КонецЕсли;
КонецЦикла;
Если СледующаяСтрока <> Неопределено Тогда
ТекущийЭтапНастройки = СледующаяСтрока.Название;
Если ТекущийЭтапНастройки = "НастройкаПравил" Тогда
ПараметрыПроверки = Новый Структура;
ПараметрыПроверки.Вставить("Корреспондент", Объект.УзелИнформационнойБазы);
ПараметрыПроверки.Вставить("ИмяПланаОбмена", Объект.ИмяПланаОбмена);
ПараметрыПроверки.Вставить("ИдентификаторНастройки", Объект.ИдентификаторНастройки);
НастройкаВыполнена = НастройкаСинхронизацииЗавершена(Объект.УзелИнформационнойБазы);
Если Не НастройкаВыполнена Тогда
Если Не НастройкаXDTO Или ПолученыНастройкиXDTOКорреспондента(Объект.УзелИнформационнойБазы) Тогда
ПередНастройкойСинхронизацииДанных(ПараметрыПроверки, НастройкаВыполнена, ИмяФормыПомощникаНастройкиСинхронизацииДанных);
КонецЕсли;
КонецЕсли;
Если НастройкаВыполнена Тогда
ПерейтиКСледующемуЭтапуНастройки();
Возврат;
КонецЕсли;
КонецЕсли;
Если НЕ СледующаяСтрока.Основное Тогда
ТекущийЭтапНастройки = "";
КонецЕсли;
Иначе
ТекущийЭтапНастройки = "";
КонецЕсли;
ПодключитьОбработчикОжидания("ОбновитьОтображениеТекущегоСостоянияНастройки", 0.2, Истина);
КонецПроцедуры
&НаСервереБезКонтекста
Функция НастройкаСинхронизацииЗавершена(УзелОбмена, СсылкаСуществует = Ложь)
СсылкаСуществует = ОбщегоНазначения.СсылкаСуществует(УзелОбмена);
Возврат ОбменДаннымиСервер.НастройкаСинхронизацииЗавершена(УзелОбмена);
КонецФункции
&НаСервереБезКонтекста
Функция ВыполненаЗагрузкаДанныхДляСопоставления(УзелОбмена)
Возврат Не ОбменДаннымиСервер.ПолученоСообщениеСДаннымиДляСопоставления(УзелОбмена);
КонецФункции
&НаСервереБезКонтекста
Процедура ПередНастройкойСинхронизацииДанных(ПараметрыПроверки, НастройкаВыполнена, ИмяФормыПомощника)
Если ОбменДаннымиСервер.ЕстьАлгоритмМенеджераПланаОбмена("ПередНастройкойСинхронизацииДанных", ПараметрыПроверки.ИмяПланаОбмена) Тогда
Контекст = Новый Структура;
Контекст.Вставить("Корреспондент", ПараметрыПроверки.Корреспондент);
Контекст.Вставить("ИдентификаторНастройки", ПараметрыПроверки.ИдентификаторНастройки);
Контекст.Вставить("НачальнаяНастройка", Не НастройкаСинхронизацииЗавершена(ПараметрыПроверки.Корреспондент));
ПланыОбмена[ПараметрыПроверки.ИмяПланаОбмена].ПередНастройкойСинхронизацииДанных(
Контекст, НастройкаВыполнена, ИмяФормыПомощника);
Если НастройкаВыполнена Тогда
ОбменДаннымиСервер.ЗавершитьНастройкуСинхронизацииДанных(ПараметрыПроверки.Корреспондент);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#Область ИнициализацияФормыПриСоздании
&НаСервере
Процедура ИнициализироватьСвойстваФормы()
Заголовок = ОписаниеВариантаНастройки.ЗаголовокПомощникаСозданияОбмена;
Если ПустаяСтрока(Заголовок) Тогда
Если НастройкаРИБ Тогда
Заголовок = НСтр("ru = 'Настройка распределенной информационной базы'");
Иначе
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Настройка синхронизации данных с ""%1""'"),
ОписаниеВариантаНастройки.НаименованиеКорреспондента);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьРеквизитыФормы()
Параметры.Свойство("ОписаниеВариантаНастройки", ОписаниеВариантаНастройки);
НастройкаНовойСинхронизации = Параметры.Свойство("НастройкаНовойСинхронизации");
ПродолжениеНастройкиВПодчиненномУзлеРИБ = Параметры.Свойство("ПродолжениеНастройкиВПодчиненномУзлеРИБ");
МодельСервиса = ОбщегоНазначения.РазделениеВключено()
И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных();
Если НастройкаНовойСинхронизации Тогда
Объект.ИмяПланаОбмена = Параметры.ИмяПланаОбмена;
Объект.ИдентификаторНастройки = Параметры.ИдентификаторНастройки;
Если Не ПродолжениеНастройкиВПодчиненномУзлеРИБ Тогда
Если ОбменДаннымиСервер.ЭтоПодчиненныйУзелРИБ() Тогда
ИмяПланаОбменаРИБ = ОбменДаннымиСервер.ГлавныйУзел().Метаданные().Имя;
ПродолжениеНастройкиВПодчиненномУзлеРИБ = (Объект.ИмяПланаОбмена = ИмяПланаОбменаРИБ)
И Не Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Получить();
КонецЕсли;
КонецЕсли;
Если ПродолжениеНастройкиВПодчиненномУзлеРИБ Тогда
ОбменДаннымиСервер.ПриПродолженииНастройкиПодчиненногоУзлаРИБ();
Объект.УзелИнформационнойБазы = ОбменДаннымиСервер.ГлавныйУзел();
Объект.ВариантРаботыМастера = "ПродолжитьНастройкуОбменаДанными";
Иначе
Объект.ВариантРаботыМастера = "НоваяСинхронизация";
КонецЕсли;
Иначе
Объект.УзелИнформационнойБазы = Параметры.УзелОбмена;
Объект.ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(Объект.УзелИнформационнойБазы);
Объект.ИдентификаторНастройки = ОбменДаннымиСервер.СохраненныйВариантНастройкиУзлаПланаОбмена(Объект.УзелИнформационнойБазы);
Если МодельСервиса Тогда
Параметры.Свойство("ОбластьДанныхКорреспондента", ОбластьДанныхКорреспондента);
Параметры.Свойство("ЭтоОбменСПриложениемВСервисе", ЭтоОбменСПриложениемВСервисе);
КонецЕсли;
Объект.ВариантРаботыМастера = "ПродолжитьНастройкуОбменаДанными";
КонецЕсли;
Если ПродолжениеНастройкиВПодчиненномУзлеРИБ Или ОписаниеВариантаНастройки = Неопределено Тогда
МодульПомощник = ОбменДаннымиСервер.МодульПомощникСозданияОбменаДанными();
ОписаниеВариантаНастройки = МодульПомощник.СтруктураОписанияВариантаНастройки();
ЗначенияНастроекДляВарианта = ОбменДаннымиСервер.ЗначениеНастройкиПланаОбмена(Объект.ИмяПланаОбмена,
"НаименованиеКонфигурацииКорреспондента,
|ЗаголовокКомандыДляСозданияНовогоОбменаДанными,
|ЗаголовокПомощникаСозданияОбмена,
|КраткаяИнформацияПоОбмену,
|ПодробнаяИнформацияПоОбмену",
Объект.ИдентификаторНастройки);
ЗаполнитьЗначенияСвойств(ОписаниеВариантаНастройки, ЗначенияНастроекДляВарианта);
ОписаниеВариантаНастройки.НаименованиеКорреспондента = ЗначенияНастроекДляВарианта.НаименованиеКонфигурацииКорреспондента;
ТекстJSON = Константы.НастройкиПодчиненногоУзлаРИБ.Получить();
Если ЗначениеЗаполнено(ТекстJSON) Тогда
НастройкиПодключения = ТранспортСообщенийОбмена.НастройкиПодключенияИзJSON(ТекстJSON);
Если ЗначениеЗаполнено(НастройкиПодключения.ИдентификаторТранспорта)
И НастройкиПодключения.Свойство("НастройкиТранспорта") Тогда
РеквизитыДляБезопасногоХранилища = ТранспортСообщенийОбмена.ПараметрТранспорта(
НастройкиПодключения.ИдентификаторТранспорта, "РеквизитыДляБезопасногоХранилища");
НастройкиТранспорта = НастройкиПодключения.НастройкиТранспорта;
УстановитьПривилегированныйРежим(Истина);
Для Каждого Реквизит Из РеквизитыДляБезопасногоХранилища Цикл
Значение = НастройкиТранспорта[Реквизит];
Если ЗначениеЗаполнено(Значение) Тогда
ЗначениеИдентификатор = Строка(Новый УникальныйИдентификатор);
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ЗначениеИдентификатор, Значение);
НастройкиТранспорта[Реквизит] = ЗначениеИдентификатор;
КонецЕсли;
КонецЦикла;
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Иначе
НастройкиПодключения = Новый Структура;
НастройкиПодключения.Вставить("НаименованиеВторойБазы", ПланыОбмена.ГлавныйУзел().Наименование);
НастройкиПодключения.Вставить("ПрефиксИнформационнойБазыПриемника", ПланыОбмена.ГлавныйУзел().Код);
КонецЕсли;
ЗаполнитьЗначенияСвойств(Объект, НастройкиПодключения);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.УзелИнформационнойБазы)
И Не ЗначениеЗаполнено(Объект.ИдентификаторТранспорта)
И Не ЗначениеЗаполнено(Объект.НастройкиТранспорта) Тогда
НастройкаЗавершена = НастройкаСинхронизацииЗавершена(Объект.УзелИнформационнойБазы);
Объект.НастройкиТранспорта = ТранспортСообщенийОбмена.НастройкиТранспортаПоУмолчанию(
Объект.УзелИнформационнойБазы, Объект.ИдентификаторТранспорта);
КонецЕсли;
ЕстьНастройкиТранспорта = ЗначениеЗаполнено(Объект.НастройкиТранспорта)
Или ЗначениеЗаполнено(Объект.ИдентификаторТранспорта)
И ТранспортСообщенийОбмена.ПараметрТранспорта(Объект.ИдентификаторТранспорта, "ПассивныйРежим");
РезервноеКопирование = Не МодельСервиса
И Не ПродолжениеНастройкиВПодчиненномУзлеРИБ
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РезервноеКопированиеИБ");
Если РезервноеКопирование Тогда
МодульРезервноеКопированиеИБСервер = ОбщегоНазначения.ОбщийМодуль("РезервноеКопированиеИБСервер");
НавигационнаяСсылкаОбработкиРезервногоКопирования =
МодульРезервноеКопированиеИБСервер.НавигационнаяСсылкаОбработкиРезервногоКопирования();
КонецЕсли;
НастройкаРИБ = ОбменДаннымиПовтИсп.ЭтоПланОбменаРаспределеннойИнформационнойБазы(Объект.ИмяПланаОбмена);
НастройкаXDTO = ОбменДаннымиСервер.ЭтоПланОбменаXDTO(Объект.ИмяПланаОбмена);
НастройкаУниверсальногоОбмена = ОбменДаннымиПовтИсп.ЭтоУзелСтандартногоОбменаДанными(Объект.ИмяПланаОбмена);
ДоступнаИнтерактивнаяОтправка = Не НастройкаРИБ И Не НастройкаУниверсальногоОбмена;
Если НастройкаНовойСинхронизации
Или НастройкаРИБ
Или НастройкаУниверсальногоОбмена Тогда
ПолученыДанныеДляСопоставления = Ложь;
ИначеЕсли ЭтоОбменСПриложениемВСервисе Тогда
ПолученыДанныеДляСопоставления = ОбменДаннымиСервер.ПолученоСообщениеСДаннымиДляСопоставления(Объект.УзелИнформационнойБазы);
Иначе
ПрямоеПодключение = ТранспортСообщенийОбмена.ПараметрТранспорта(Объект.ИдентификаторТранспорта, "ПрямоеПодключение");
Если ПрямоеПодключение И ЕстьНастройкиТранспорта Тогда
ПолученыДанныеДляСопоставления = ОбменДаннымиСервер.ПолученоСообщениеСДаннымиДляСопоставления(Объект.УзелИнформационнойБазы);
Иначе
ПолученыДанныеДляСопоставления = Истина;
КонецЕсли;
КонецЕсли;
ЗначенияНастроекДляВарианта = ОбменДаннымиСервер.ЗначениеНастройкиПланаОбмена(ОБъект.ИмяПланаОбмена,
"ИмяФормыСозданияНачальногоОбраза,
|ИмяФормыПомощникаНастройкиСинхронизацииДанных,
|ПоддерживаетсяСопоставлениеДанных,
|ИмяКонфигурацииКорреспондента,
|ИмяПланаОбменаКорреспондента,
|ФорматОбмена,
|ИмяФайлаНастроекДляПриемника,
|НаименованиеКонфигурацииКорреспондента,
|КраткаяИнформацияПоОбмену,
|ПодробнаяИнформацияПоОбмену",
Объект.ИдентификаторНастройки);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ЗначенияНастроекДляВарианта);
Если ПустаяСтрока(ИмяФормыСозданияНачальногоОбраза)
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
ИмяФормыСозданияНачальногоОбраза = "ОбщаяФорма.[ФормаСозданияНачальногоОбраза]";
ИмяФормыСозданияНачальногоОбраза = СтрЗаменить(ИмяФормыСозданияНачальногоОбраза,
"[ФормаСозданияНачальногоОбраза]", "СозданиеНачальногоОбразаСФайлами");
КонецЕсли;
ЗаполнитьЗначенияСвойств(Объект, ЗначенияНастроекДляВарианта);
Если Не ЗначениеЗаполнено(Объект.ИмяПланаОбменаКорреспондента) Тогда
Объект.ИмяПланаОбменаКорреспондента = Объект.ИмяПланаОбмена;
КонецЕсли;
Если МодельСервиса Тогда
МодульОбменДаннымиВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиВМоделиСервиса");
Объект.НаименованиеЭтойБазы = МодульОбменДаннымиВМоделиСервиса.СформироватьНаименованиеПредопределенногоУзла();
Иначе
Объект.НаименованиеЭтойБазы = ОбменДаннымиСервер.НаименованиеПредопределенногоУзлаПланаОбмена(Объект.ИмяПланаОбмена);
Если ПустаяСтрока(Объект.НаименованиеЭтойБазы) Тогда
Объект.НаименованиеЭтойБазы = ОбменДаннымиПовтИсп.ИмяЭтойИнформационнойБазы();
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.НаименованиеВторойБазы) Тогда
Объект.НаименованиеВторойБазы = ЗначенияНастроекДляВарианта.НаименованиеКонфигурацииКорреспондента;
КонецЕсли;
КонецЕсли;
Объект.ИдентификаторИнформационнойБазыИсточника =
ОбменДаннымиСервер.КодПредопределенногоУзлаПланаОбмена(Объект.ИмяПланаОбмена);
Если НастройкаXDTO Тогда
Объект.ИспользоватьПрефиксыДляНастройкиОбмена =
Не ОбменДаннымиXDTOСервер.ПоддерживаетсяВерсияСИдентификаторомОбменаДанными(
ПланыОбмена[Объект.ИмяПланаОбмена].ПустаяСсылка());
Если ПустаяСтрока(Объект.ИдентификаторИнформационнойБазыИсточника) Тогда
Объект.ИдентификаторИнформационнойБазыИсточника =
?(Объект.ИспользоватьПрефиксыДляНастройкиОбмена,
Объект.ПрефиксИнформационнойБазыИсточника,
Строка(Новый УникальныйИдентификатор));
КонецЕсли;
Иначе
Объект.ИспользоватьПрефиксыДляНастройкиОбмена = Истина;
КонецЕсли;
Объект.ИспользоватьПрефиксыДляНастройкиОбменаКорреспондента = Истина;
Если Не ЗначениеЗаполнено(Объект.ПрефиксИнформационнойБазыИсточника) Тогда
ПрефиксИнформационнойБазы = ПолучитьФункциональнуюОпцию("ПрефиксИнформационнойБазы");
Если ЗначениеЗаполнено(ПрефиксИнформационнойБазы) Тогда
Объект.ПрефиксИнформационнойБазыИсточника = ПрефиксИнформационнойБазы;
Иначе
ОбменДаннымиПереопределяемый.ПриОпределенииПрефиксаИнформационнойБазыПоУмолчанию(Объект.ПрефиксИнформационнойБазыИсточника);
КонецЕсли;
КонецЕсли;
ТекущийЭтапНастройки = "";
Если (НастройкаНовойСинхронизации И Не ПродолжениеНастройкиВПодчиненномУзлеРИБ)
Или (ПродолжениеНастройкиВПодчиненномУзлеРИБ И Не ЕстьНастройкиТранспорта) Тогда
ТекущийЭтапНастройки = "ВыборТипаТранспорта";
ИначеЕсли НастройкаНовойСинхронизации И ПродолжениеНастройкиВПодчиненномУзлеРИБ Тогда
ТекущийЭтапНастройки = "ОбщиеПараметры";
ИначеЕсли Не НастройкаСинхронизацииЗавершена(Объект.УзелИнформационнойБазы) Тогда
ТекущийЭтапНастройки = "НастройкаПравил";
ИначеЕсли НастройкаРИБ
И Не ПродолжениеНастройкиВПодчиненномУзлеРИБ
И Не НачальныйОбразСоздан(Объект.УзелИнформационнойБазы) Тогда
Если Не ПустаяСтрока(ИмяФормыСозданияНачальногоОбраза) Тогда
ТекущийЭтапНастройки = "НачальныйОбразРИБ";
КонецЕсли;
ИначеЕсли ЗначениеЗаполнено(Объект.УзелИнформационнойБазы) Тогда
НомераСообщений = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.УзелИнформационнойБазы, "НомерПринятого, НомерОтправленного");
Если НомераСообщений.НомерПринятого = 0
И НомераСообщений.НомерОтправленного = 0
И ОбменДаннымиСервер.ПолученоСообщениеСДаннымиДляСопоставления(Объект.УзелИнформационнойБазы) Тогда
ТекущийЭтапНастройки = "СопоставлениеИЗагрузка";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ДобавитьЭтапНастройки(Название, Кнопка, ЭлементыФормы, Используется, Основное = Истина)
СтрокаЭтап = ЭтапыНастройки.Добавить();
СтрокаЭтап.Название = Название;
СтрокаЭтап.Кнопка = Кнопка;
СтрокаЭтап.Используется = Используется;
СтрокаЭтап.Основное = Основное;
ЗаполнитьЗначенияСвойств(СтрокаЭтап, ЭлементыФормы);
Возврат СтрокаЭтап;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьТаблицуЭтаповНастройки()
ЭтапыНастройки.Очистить();
ЭтапИспользуется = НастройкаНовойСинхронизации
Или (ПродолжениеНастройкиВПодчиненномУзлеРИБ И Не ЕстьНастройкиТранспорта);
ЭлементыФормы = Новый Структура;
ЭлементыФормы.Вставить("Группа" , Элементы.ГруппаВыборТипаТранспорта.Имя);
ЭлементыФормы.Вставить("Панель" , Элементы.ПанельВыборТипаТранспорта.Имя);
ЭлементыФормы.Вставить("СтраницаУспешно", Элементы.СтраницаВыборТипаТранспортаУспешно.Имя);
ЭлементыФормы.Вставить("СтраницаТекущий", Элементы.СтраницаВыборТипаТранспортаТекущий.Имя);
ЭлементыФормы.Вставить("СтраницаПустой" , Элементы.СтраницаВыборТипаТранспортаПустой.Имя);
ДобавитьЭтапНастройки("ВыборТипаТранспорта", "ВыборТипаТранспорта", ЭлементыФормы, ЭтапИспользуется);
ЭтапИспользуется = ЕстьНастройкиТранспорта Или НастройкаНовойСинхронизации;
ЭлементыФормы = Новый Структура;
ЭлементыФормы.Вставить("Группа" , Элементы.ГруппаНастройкаПодключения.Имя);
ЭлементыФормы.Вставить("Панель" , Элементы.ПанельНастройкаПодключения.Имя);
ЭлементыФормы.Вставить("СтраницаУспешно", Элементы.СтраницаНастройкаПодключенияУспешно.Имя);
ЭлементыФормы.Вставить("СтраницаТекущий", Элементы.СтраницаНастройкаПодключенияТекущий.Имя);
ЭлементыФормы.Вставить("СтраницаПустой" , Элементы.СтраницаНастройкаПодключенияПустой.Имя);
ДобавитьЭтапНастройки("НастройкаПодключения", "НастроитьПараметрыПодключения", ЭлементыФормы, ЭтапИспользуется);
ЭтапИспользуется = ЕстьНастройкиТранспорта Или НастройкаНовойСинхронизации;
ЭлементыФормы = Новый Структура;
ЭлементыФормы.Вставить("Группа" , Элементы.ГруппаОбщиеПараметры.Имя);
ЭлементыФормы.Вставить("Панель" , Элементы.ПанельОбщиеПараметры.Имя);
ЭлементыФормы.Вставить("СтраницаУспешно", Элементы.СтраницаОбщиеПараметрыУспешно.Имя);
ЭлементыФормы.Вставить("СтраницаТекущий", Элементы.СтраницаОбщиеПараметрыТекущий.Имя);
ЭлементыФормы.Вставить("СтраницаПустой", Элементы.СтраницаОбщиеПараметрыПустой.Имя);
ДобавитьЭтапНастройки("ОбщиеПараметры", "НастроитьОбщиеПараметры", ЭлементыФормы, ЭтапИспользуется);
ЭтапИспользуется = Ложь;
ЭлементыФормы = Новый Структура;
ЭлементыФормы.Вставить("Группа", Элементы.ГруппаПодтверждениеПодключения.Имя);
ЭлементыФормы.Вставить("Панель", Элементы.ПанельПодтверждениеПодключения.Имя);
ЭлементыФормы.Вставить("СтраницаУспешно", Элементы.СтраницаПодтверждениеПодключенияУспешно.Имя);
ЭлементыФормы.Вставить("СтраницаТекущий", Элементы.СтраницаПодтверждениеПодключенияТекущий.Имя);
ЭлементыФормы.Вставить("СтраницаПустой", Элементы.СтраницаПодтверждениеПодключенияПустой.Имя);
ДобавитьЭтапНастройки("ПодтверждениеПодключения", "ПолучитьПодтверждениеПодключения", ЭлементыФормы, ЭтапИспользуется);
ЭлементыФормы = Новый Структура;
ЭлементыФормы.Вставить("Группа", Элементы.ГруппаНастройкаПравил.Имя);
ЭлементыФормы.Вставить("Панель", Элементы.ПанельНастройкаПравил.Имя);
ЭлементыФормы.Вставить("СтраницаУспешно", Элементы.СтраницаНастройкаПравилУспешно.Имя);
ЭлементыФормы.Вставить("СтраницаТекущий", Элементы.СтраницаНастройкаПравилТекущий.Имя);
ЭлементыФормы.Вставить("СтраницаПустой", Элементы.СтраницаНастройкаПравилПустой.Имя);
ДобавитьЭтапНастройки("НастройкаПравил", "НастроитьПравилаОтправкиИПолучения", ЭлементыФормы, Истина);
ЭтапИспользуется = НастройкаРИБ
И Не ПродолжениеНастройкиВПодчиненномУзлеРИБ
И Не ПустаяСтрока(ИмяФормыСозданияНачальногоОбраза);
ЭлементыФормы = Новый Структура;
ЭлементыФормы.Вставить("Группа", Элементы.ГруппаНачальныйОбразРИБ.Имя);
ЭлементыФормы.Вставить("Панель", Элементы.ПанельНачальныйОбразРИБ.Имя);
ЭлементыФормы.Вставить("СтраницаУспешно", Элементы.СтраницаНачальныйОбразРИБУспешно.Имя);
ЭлементыФормы.Вставить("СтраницаТекущий", Элементы.СтраницаНачальныйОбразРИБТекущий.Имя);
ЭлементыФормы.Вставить("СтраницаПустой", Элементы.СтраницаНачальныйОбразРИБПустой.Имя);
ДобавитьЭтапНастройки("НачальныйОбразРИБ", "СоздатьНачальныйОбразРИБ", ЭлементыФормы, ЭтапИспользуется);
ЭтапИспользуется = Не НастройкаРИБ
И Не НастройкаУниверсальногоОбмена
И ПолученыДанныеДляСопоставления
И ПоддерживаетсяСопоставлениеДанных <> Ложь;
ЭлементыФормы = Новый Структура;
ЭлементыФормы.Вставить("Группа", Элементы.ГруппаСопоставлениеИЗагрузка.Имя);
ЭлементыФормы.Вставить("Панель", Элементы.ПанельСопоставлениеИЗагрузка.Имя);
ЭлементыФормы.Вставить("СтраницаУспешно", Элементы.СтраницаСопоставлениеИЗагрузкаУспешно.Имя);
ЭлементыФормы.Вставить("СтраницаТекущий", Элементы.СтраницаСопоставлениеИЗагрузкаТекущий.Имя);
ЭлементыФормы.Вставить("СтраницаПустой", Элементы.СтраницаСопоставлениеИЗагрузкаПустой.Имя);
ДобавитьЭтапНастройки("СопоставлениеИЗагрузка", "ВыполнитьСопоставлениеИЗагрузкуДанных", ЭлементыФормы, ЭтапИспользуется);
ЭтапИспользуется = ДоступнаИнтерактивнаяОтправка
И (ЕстьНастройкиТранспорта Или НастройкаНовойСинхронизации);
ЭлементыФормы = Новый Структура;
ЭлементыФормы.Вставить("Группа", Элементы.ГруппаНачальнаяВыгрузкаДанных.Имя);
ЭлементыФормы.Вставить("Панель", Элементы.ПанельНачальнаяВыгрузкаДанных.Имя);
ЭлементыФормы.Вставить("СтраницаУспешно", Элементы.СтраницаНачальнаяВыгрузкаДанныхУспешно.Имя);
ЭлементыФормы.Вставить("СтраницаТекущий", Элементы.СтраницаНачальнаяВыгрузкаДанныхТекущий.Имя);
ЭлементыФормы.Вставить("СтраницаПустой", Элементы.СтраницаНачальнаяВыгрузкаДанныхПустой.Имя);
ДобавитьЭтапНастройки("НачальнаяВыгрузкаДанных", "ВыполнитьНачальнуюВыгрузкуДанных", ЭлементыФормы, ЭтапИспользуется);
КонецПроцедуры
&НаСервере
Процедура УстановитьНачальноеОтображениеЭлементовФормы()
Элементы.ДекорацияКраткаяИнформацияПоОбменуНадпись.Заголовок = ОписаниеВариантаНастройки.КраткаяИнформацияПоОбмену;
Элементы.ПодробноеОписаниеСинхронизацииДанных.Видимость = ЗначениеЗаполнено(ОписаниеВариантаНастройки.ПодробнаяИнформацияПоОбмену);
Элементы.ГруппаРезервноеКопирование.Видимость = РезервноеКопирование;
Элементы.ПолучитьПодтверждениеПодключения.РасширеннаяПодсказка.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Элементы.ПолучитьПодтверждениеПодключения.РасширеннаяПодсказка.Заголовок,
ОписаниеВариантаНастройки.НаименованиеКорреспондента);
Если РезервноеКопирование Тогда
Элементы.ДекорацияРезервноеКопированиеНадпись.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(
НСтр("ru = 'Перед началом настройки новой синхронизации данных рекомендуется <a href=""%1"">создать резервную копию данных</a>.'"),
НавигационнаяСсылкаОбработкиРезервногоКопирования);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти