Синхронизация данных через универсальный формат / Форма синхронизации / Модуль формы

файл
#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест".
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	ОбменДаннымиСервер.ФормаУзлаПриСозданииНаСервере(ЭтаФорма, Отказ);
	
	СформироватьСписокВыбораПравилФормированияДоговора();
	
	Если Объект.ИспользоватьОтборПоОрганизациям Тогда
		ПравилоОтбораСправочников = "Отбор";
	Иначе
		Если Объект.ВыгружатьУправленческуюОрганизацию Тогда
			ПравилоОтбораСправочников = "УпрОрганизация";
		Иначе
			ПравилоОтбораСправочников = "БезОтбора";
		КонецЕсли;
	КонецЕсли;
	
	Если Объект.ИспользоватьОтборПоРазделамУчета Тогда
		РежимВыгрузкиРазделовУчета = 1;
	ИначеЕсли Объект.РазделыУчета.Количество() = 0 Тогда
		Объект.РазделыУчета.Загрузить(ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.ПолучитьРазделыУчета(
			Ложь, Объект.ВариантНастройки));
		РежимВыгрузкиРазделовУчета = 0;
	КонецЕсли;
	
	Если Объект.ВидыДокументов.Количество() > 0 И НЕ Объект.ИспользоватьОтборПоРазделамУчетаИДокументам Тогда
	     Объект.ИспользоватьОтборПоРазделамУчетаИДокументам = Истина;
	КонецЕсли;
		
	ИспользоватьНесколькоВидовЦен = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен");
	ИспользоватьНесколькоСкладов  = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов");
	
	Если Объект.ВариантНастройки = "ОбменКасса"
		И ИспользоватьНесколькоВидовЦен
		И Объект.ВидыЦенНоменклатуры.Количество() > 0 Тогда
		ВидЦен = Объект.ВидыЦенНоменклатуры[0].ВидЦенНоменклатуры;
	КонецЕсли;
	
	Если Объект.ВариантНастройки = "ОбменУПРМК" Тогда

		Если Не ПолучитьФункциональнуюОпцию("ИспользоватьРозничныеПродажи") Тогда

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

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	
	Если ЗавершениеРаботы Тогда
		Возврат;
	КонецЕсли;
	
	Оповестить("Запись_УзелПланаОбмена");
	
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	Если ТекущийОбъект.ВариантНастройки = "ОбменКасса"
		И ЭтотОбъект.ИспользоватьНесколькоВидовЦен Тогда
		
		ТекущийОбъект.ВидыЦенНоменклатуры.Очистить();
		
		СтрокаВидыЦен = ТекущийОбъект.ВидыЦенНоменклатуры.Добавить();
		СтрокаВидыЦен.ВидЦенНоменклатуры = ЭтотОбъект.ВидЦен;
	КонецЕсли;
	
	Если ТекущийОбъект.ВариантНастройки = "ОбменУПРМК" Тогда
		
		ВерсияФорматаНиже117 = ВерсияФорматаНиже(Объект.ВерсияФорматаОбмена, "1.17");
		Если ВерсияФорматаНиже117 Тогда
				
			ТекущийОбъект.КассыККМ.Очистить();
			Строка = ТекущийОбъект.КассыККМ.Добавить();
			Строка.КассаККМ = ЭтотОбъект.КассаККМ;
		
		КонецЕсли;
		Если ТекущийОбъект.КассыККМ.Количество() = 0 Тогда
			Отказ = Истина;
			ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Нужно указать кассу ККМ'"));
		КонецЕсли;
		
		ТекущийОбъект.ИспользоватьОтборПоКассамККМ = Истина;
		
	КонецЕсли;
	
	Если ТекущийОбъект.ВидыДокументов.Количество() = 0 Тогда
		ТекущийОбъект.ИспользоватьОтборПоРазделамУчетаИДокументам = Ложь;
	ИначеЕсли ТекущийОбъект.ИспользоватьОтборПоРазделамУчетаИДокументам = Ложь Тогда    
		ТекущийОбъект.ВидыДокументов.Очистить();
	КонецЕсли;
	Если ТекущийОбъект.ВыгружатьИнформативныеОстатки И Не ВедетсяРаботаЧерезТорговыхПредставителей Тогда
		ТекущийОбъект.ВыгружатьИнформативныеОстатки = Ложь;
	КонецЕсли;
	МассивРазделов = ТекущийОбъект.РазделыУчета.Выгрузить(Новый Структура("Выгружать", Истина)); 
	Если (Константы.УправлениеТорговлей.Получить()
		И МассивРазделов.Количество() < 5) ИЛИ МассивРазделов.Количество() < 7 Тогда
	    РежимВыгрузкиРазделовУчета = 1;
	КонецЕсли;
	
	ТекущийОбъект.ИспользоватьОтборПоРазделамУчета = НЕ ТекущийОбъект.ИспользоватьОтборПоРазделамУчетаИДокументам И РежимВыгрузкиРазделовУчета = 1;
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
	ОбновитьИнтерфейс();
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	
	Если ТипЗнч(ИсточникВыбора) = Тип("ФормаКлиентскогоПриложения")
		И ИсточникВыбора.ИмяФормы = "ОбщаяФорма.ФормаОтметкиЭлементов" Тогда
		
		// Выбраны разделы учета.
		Для Каждого СтрокаРаздела Из Объект.РазделыУчета Цикл
			
			ЗначениеВыбора  = ВыбранноеЗначение.НайтиПоЗначению(СтрокаРаздела.РазделУчета);
			
			Если Не ЗначениеВыбора  = Неопределено Тогда
				СтрокаРаздела.Выгружать = ЗначениеВыбора.Пометка;
			КонецЕсли;
			
		КонецЦикла;
		
		ОбновитьНаименованиеКомандФормы();
	Иначе
		ОбновитьДанныеОбъекта(ВыбранноеЗначение);
	КонецЕсли;
	
	Модифицированность = Истина;

	ОбновитьИнтерфейс();
	
КонецПроцедуры

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	Если ФормироватьДоговора() И Не ЗначениеЗаполнено(Объект.ПравилаСозданияДоговоровКонтрагентов) Тогда
		ОбщегоНазначения.СообщитьПользователю(
			НСтр("ru = 'Необходимо заполнить правила формирования договоров.'"), ,
			"Объект.ПравилаСозданияДоговоровКонтрагентов");
		Отказ = Истина;
	КонецЕсли;
	
	Если Объект.ВариантНастройки = "ОбменКасса" И ЭтотОбъект.ИспользоватьНесколькоВидовЦен
		И Не ЗначениеЗаполнено(ЭтотОбъект.ВидЦен) Тогда
		
		ОбщегоНазначения.СообщитьПользователю(
			НСтр("ru = 'Необходимо заполнить вид цен.'"), ,
			"ВидЦен");
		Отказ = Истина;
	КонецЕсли;
	
	Если Объект.ВариантНастройки = "ОбменУПРМК" 
		И Объект.КассыККМ.Количество() = 0 Тогда
		
		Отказ = Истина;
		
		ТекстСообщенияПользователю = НСтр("ru = 'Необходимо заполнить кассу ККМ.'");
		Если ВерсияФорматаНиже(Объект.ВерсияФорматаОбмена, "1.17") Тогда
			ОбщегоНазначения.СообщитьПользователю(ТекстСообщенияПользователю, , Элементы.ПолеКассаККМ.ПутьКДанным);
		Иначе
			ОбщегоНазначения.СообщитьПользователю(ТекстСообщенияПользователю, , , Элементы.КнопкаУказатьСписокКассККМ.Имя);
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
	
	ОбменДаннымиКлиент.ФормаНастройкиПередЗакрытием(Отказ, ЭтотОбъект, ЗавершениеРаботы);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
	
	ОбменДаннымиКлиент.ОбработкаНавигационнойСсылкиВФормеУзла(ЭтотОбъект, Элемент, НавигационнаяСсылка, СтандартнаяОбработка);
		
КонецПроцедуры

&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	ОбменДаннымиСервер.ФормаУзлаПриЗаписиНаСервере(ТекущийОбъект, Отказ);
		
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	Если ИмяСобытия = "Запись_НаборКонстант" 
		И Источник = "ВедетсяРаботаЧерезТорговыхПредставителей" Тогда 
		
		УстановитьВидимостьНаСервере();
		
	КонецЕсли;
		
КонецПроцедуры

#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ФлагИспользоватьОтборПоОрганизациямПриИзменении(Элемент)
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ФлагОтправлятьИнформОстатки(Элемент)
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПереключательОтправлятьНСИАвтоматическиПриИзменении(Элемент)
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПереключательОтправлятьНСИПоНеобходимостиПриИзменении(Элемент)
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПереключательОтправлятьНСИНикогдаПриИзменении(Элемент)
	Объект.ПравилаОтправкиДокументов = "НеСинхронизировать";
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПереключательОтбораСправочниковСОтборомПриИзменении(Элемент)
	УстановитьУсловияОграниченияСинхронизации();
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПереключательОтбораСправочниковБезОтбораСУпрПриИзменении(Элемент)
	УстановитьУсловияОграниченияСинхронизации();
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПереключательОтбораСправочниковБезОтбораБезУпрПриИзменении(Элемент)
	УстановитьУсловияОграниченияСинхронизации();
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПереключательРежимаВыгрузкиРазделовУчетаБезОтбораПриИзменении(Элемент)
	УстановитьУсловияОграниченияСинхронизации();   
	УстановитьВидимостьНаСервере(); 
КонецПроцедуры

&НаКлиенте
Процедура ПереключательРежимаВыгрузкиРазделовУчетаСОтборомПриИзменении(Элемент)
	УстановитьУсловияОграниченияСинхронизации();
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура РежимВыгрузкиПоДокументамПриИзменении(Элемент)
	УстановитьУсловияОграниченияСинхронизации();
	Если Объект.ИспользоватьОтборПоРазделамУчета Тогда
		РежимВыгрузкиРазделовУчета = 1; 
	Иначе
		Объект.ВидыДокументов.Очистить();
	КонецЕсли;

	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПереключательДокументыОтправлятьАвтоматическиПриИзменении(Элемент)
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПереключательДокументыОтправлятьВручнуюПриИзменении(Элемент)
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПереключательДокументыНеОтправлятьПриИзменении(Элемент)
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ФлагОтправлятьВидыЦенНоменклатуры(Элемент)
	УстановитьВидимостьНаСервере();
	Если Объект.ВыгружатьЦеныНоменклатуры Тогда
		ОткрытьФормуВыбораДополнительныхУсловийДляВидовЦен(); 
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьОтборПоКурьеруПриИзменении(Элемент)
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьОтборПоСкладуПриИзменении(Элемент)
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьОтборПоФизическимЛицамПриИзменении(Элемент)
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьОтборПоЭквайринговымТерминаламПриИзменении(Элемент)
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПолеКассаККМПриИзменении(Элемент)
	
	ОбновитьЗависимыеОтборы();
	ОбновитьНаименованиеКомандФормы();
	Модифицированность = Истина;
	
КонецПроцедуры

&НаКлиенте
Процедура ОчиститьОтборПоВидамДокументов(Команда)
	ТекстЗаголовка = НСтр("ru = 'Подтверждение'");
	ТекстВопроса   = НСтр("ru = 'Очистить отбор по видам документов?'");
	
	ПоказатьВопрос(Новый ОписаниеОповещения("ОчиститьОтборПоВидамДокументовЗавершение", ЭтотОбъект), ТекстВопроса,
	РежимДиалогаВопрос.ДаНет, , , ТекстЗаголовка);
КонецПроцедуры

&НаКлиенте
Процедура ОчиститьОтборПоВидамДокументовЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Ответ = Результат;
	Если Ответ = КодВозвратаДиалога.Да Тогда
		Объект.ВидыДокументов.Очистить(); 
		Объект.ИспользоватьОтборПоРазделамУчетаИДокументам = Ложь;
		УстановитьВидимостьНаСервере();
		ОбновитьНаименованиеКомандФормы();
		Модифицированность = Истина;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьОтборПоДоговорамЭквайрингаПриИзменении(Элемент)
	УстановитьВидимостьНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьОтборПоКассамККМПриИзменении(Элемент)
	
	УстановитьВидимостьНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура ФлагОтправлятьИнформативныеОстаткиРасширеннаяПодсказкаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки);
	
КонецПроцедуры

#КонецОбласти
#Область ОбработчикиКомандФормы

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

&НаКлиенте
Процедура ОткрытьСписокОтправляемыхВидовЦенНоменклатуры(Команда) 
	ОткрытьФормуВыбораДополнительныхУсловийДляВидовЦен();
КонецПроцедуры 

&НаКлиенте
Процедура ОткрытьФормуВыбораДополнительныхУсловийДляВидовЦен()
	ПараметрыФормы = Новый Структура();
	ПараметрыФормы.Вставить("ИмяЭлементаФормыДляЗаполнения",          "ВидыЦенНоменклатуры");
	ПараметрыФормы.Вставить("ИмяРеквизитаЭлементаФормыДляЗаполнения", "ВидЦенНоменклатуры");
	ПараметрыФормы.Вставить("ИмяТаблицыВыбора",                       "Справочник.ВидыЦен");
	ПараметрыФормы.Вставить("ЗаголовокФормыВыбора",                   НСтр("ru = 'Выберите виды цен для отправки:'"));
	ПараметрыФормы.Вставить("МассивВыбранныхЗначений",                СформироватьМассивВыбранныхЗначений(ПараметрыФормы));
	ПараметрыФормы.Вставить("ПараметрыВнешнегоСоединения",            Неопределено);
	ПараметрыФормы.Вставить("КоллекцияФильтров",                      Неопределено);
	
	ОткрытьФорму("ОбщаяФорма.ФормаВыбораДополнительныхУсловий",
		ПараметрыФормы,
		ЭтаФорма);
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьСписокОтправляемыхСкладовИнформОстатков(Команда)
	
	ПараметрыФормы = Новый Структура();
	ПараметрыФормы.Вставить("ИмяЭлементаФормыДляЗаполнения",          "СкладыИнформативныхОстатков");
	ПараметрыФормы.Вставить("ИмяРеквизитаЭлементаФормыДляЗаполнения", "Склад");
	ПараметрыФормы.Вставить("ИмяТаблицыВыбора",                       "Справочник.Склады");
	ПараметрыФормы.Вставить("ЗаголовокФормыВыбора",                   НСтр("ru = 'Выберите склады, для которых требуется выгрузить информативные остатки:'"));
	ПараметрыФормы.Вставить("МассивВыбранныхЗначений",                СформироватьМассивВыбранныхЗначений(ПараметрыФормы));
	ПараметрыФормы.Вставить("ПараметрыВнешнегоСоединения",            Неопределено);
	ПараметрыФормы.Вставить("КоллекцияФильтров",                      Неопределено);
	
	ОткрытьФорму("ОбщаяФорма.ФормаВыбораДополнительныхУсловий",
		ПараметрыФормы,
		ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьСписокВыбранныхРазделовУчета(Команда)
	
	СписокРазделовУчета = Новый СписокЗначений;
	Для Каждого СтрокаРаздела Из Объект.РазделыУчета Цикл
		СписокРазделовУчета.Добавить(СтрокаРаздела.РазделУчета, , СтрокаРаздела.Выгружать);
	КонецЦикла;
	
	ОткрытьФорму("ОбщаяФорма.ФормаОтметкиЭлементов",Новый Структура("СписокЗначений", СписокРазделовУчета),ЭтотОбъект);

КонецПроцедуры

&НаКлиенте
Процедура ОткрытьСписокОтправляемыхСкладов(Команда)
	
	ПараметрыФормы = Новый Структура();
	ПараметрыФормы.Вставить("ИмяЭлементаФормыДляЗаполнения",          "Склады");
	ПараметрыФормы.Вставить("ИмяРеквизитаЭлементаФормыДляЗаполнения", "Склад");
	ПараметрыФормы.Вставить("ИмяТаблицыВыбора",                       "Справочник.Склады");
	ПараметрыФормы.Вставить("ЗаголовокФормыВыбора",                   НСтр("ru = 'Выберите склады'"));
	ПараметрыФормы.Вставить("МассивВыбранныхЗначений",                СформироватьМассивВыбранныхЗначений(ПараметрыФормы));
	ПараметрыФормы.Вставить("ПараметрыВнешнегоСоединения",            Неопределено);
	ПараметрыФормы.Вставить("КоллекцияФильтров",                      Неопределено);
	
	ОткрытьФорму("ОбщаяФорма.ФормаВыбораДополнительныхУсловий",
		ПараметрыФормы,
		ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьСписокКурьеров(Команда)
	
	ПараметрыФормы = Новый Структура();
	ПараметрыФормы.Вставить("ИмяЭлементаФормыДляЗаполнения",          "Курьеры");
	ПараметрыФормы.Вставить("ИмяРеквизитаЭлементаФормыДляЗаполнения", "Курьер");
	ПараметрыФормы.Вставить("ИмяТаблицыВыбора",                       "Справочник.ФизическиеЛица");
	ПараметрыФормы.Вставить("ЗаголовокФормыВыбора",                   НСтр("ru = 'Выберите курьеров'"));
	ПараметрыФормы.Вставить("МассивВыбранныхЗначений",                СформироватьМассивВыбранныхЗначений(ПараметрыФормы));
	ПараметрыФормы.Вставить("ПараметрыВнешнегоСоединения",            Неопределено);
	ПараметрыФормы.Вставить("КоллекцияФильтров",                      Неопределено);
	
	ОткрытьФорму("ОбщаяФорма.ФормаВыбораДополнительныхУсловий",
		ПараметрыФормы,
		ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьСписокФизическихЛиц(Команда)
	
	ПараметрыФормы = Новый Структура();
	ПараметрыФормы.Вставить("ИмяЭлементаФормыДляЗаполнения",          "ФизическиеЛица");
	ПараметрыФормы.Вставить("ИмяРеквизитаЭлементаФормыДляЗаполнения", "ФизическоеЛицо");
	ПараметрыФормы.Вставить("ИмяТаблицыВыбора",                       "Справочник.ФизическиеЛица");
	ПараметрыФормы.Вставить("ЗаголовокФормыВыбора",                   НСтр("ru = 'Выберите физические лица'"));
	ПараметрыФормы.Вставить("МассивВыбранныхЗначений",                СформироватьМассивВыбранныхЗначений(ПараметрыФормы));
	ПараметрыФормы.Вставить("ПараметрыВнешнегоСоединения",            Неопределено);
	ПараметрыФормы.Вставить("КоллекцияФильтров",                      Неопределено);
	
	ОткрытьФорму("ОбщаяФорма.ФормаВыбораДополнительныхУсловий",
		ПараметрыФормы,
		ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьСписокОтправляемыхЭквайринговыхТерминалов(Команда)
	
	Если Объект.ИспользоватьОтборПоОрганизациям  Тогда
		
		КоллекцияФильтров = Новый Массив;
		
		НакладываемыеФильтры = Новый Структура();
		
		ПараметрыВыбораЗначений = Новый Структура();
		
		ПараметрыВыбораЗначений.Вставить("ИмяЭлементаФормыДляЗаполнения",          "Организации");
		ПараметрыВыбораЗначений.Вставить("ИмяРеквизитаЭлементаФормыДляЗаполнения", "Организация");
		
		НакладываемыеФильтры.Вставить("РеквизитОтбора",    "Владелец.Организация");
		НакладываемыеФильтры.Вставить("Условие",           "В");
		НакладываемыеФильтры.Вставить("ИмяПараметра",      "Организации");
		НакладываемыеФильтры.Вставить("ЗначениеПараметра",  СформироватьМассивВыбранныхЗначений(ПараметрыВыбораЗначений)); 
		
		КоллекцияФильтров.Добавить(НакладываемыеФильтры);
		
	Иначе
		
		КоллекцияФильтров = Неопределено;
		
	КонецЕсли;
	
	ПараметрыФормы = Новый Структура();
	
	ПараметрыФормы.Вставить("ИмяЭлементаФормыДляЗаполнения",          "ЭквайринговыеТерминалы");
	ПараметрыФормы.Вставить("ИмяРеквизитаЭлементаФормыДляЗаполнения", "ЭквайринговыйТерминал");
	ПараметрыФормы.Вставить("ИмяТаблицыВыбора",                       "Справочник.ЭквайринговыеТерминалы");
	ПараметрыФормы.Вставить("ЗаголовокФормыВыбора",                   НСтр("ru = 'Выберите эквайринговые терминалы'"));
	ПараметрыФормы.Вставить("МассивВыбранныхЗначений",                СформироватьМассивВыбранныхЗначений(ПараметрыФормы));
	ПараметрыФормы.Вставить("ПараметрыВнешнегоСоединения",            Неопределено);
	ПараметрыФормы.Вставить("КоллекцияФильтров",                      КоллекцияФильтров);
	
	ОткрытьФорму("ОбщаяФорма.ФормаВыбораДополнительныхУсловий",
		ПараметрыФормы,
		ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьСписокОтправляемыхКассККМ(Команда)
	
	Если Объект.ИспользоватьОтборПоОрганизациям  Тогда
		
		КоллекцияФильтров = Новый Массив;
		
		НакладываемыеФильтры = Новый Структура();
		
		ПараметрыВыбораЗначений = Новый Структура();
		
		ПараметрыВыбораЗначений.Вставить("ИмяЭлементаФормыДляЗаполнения",          "Организации");
		ПараметрыВыбораЗначений.Вставить("ИмяРеквизитаЭлементаФормыДляЗаполнения", "Организация");
		
		НакладываемыеФильтры.Вставить("РеквизитОтбора",    "Владелец");
		НакладываемыеФильтры.Вставить("Условие",           "В");
		НакладываемыеФильтры.Вставить("ИмяПараметра",      "Организации");
		НакладываемыеФильтры.Вставить("ЗначениеПараметра",  СформироватьМассивВыбранныхЗначений(ПараметрыВыбораЗначений)); 
		
		КоллекцияФильтров.Добавить(НакладываемыеФильтры);
		
	Иначе
		
		КоллекцияФильтров = Неопределено;
		
	КонецЕсли;
	
	ПараметрыФормы = Новый Структура();
	
	ПараметрыФормы.Вставить("ИмяЭлементаФормыДляЗаполнения",          "КассыККМ");
	ПараметрыФормы.Вставить("ИмяРеквизитаЭлементаФормыДляЗаполнения", "КассаККМ");
	ПараметрыФормы.Вставить("ИмяТаблицыВыбора",                       "Справочник.КассыККМ");
	ПараметрыФормы.Вставить("ЗаголовокФормыВыбора",                   НСтр("ru = 'Выберите кассы ККМ'"));
	ПараметрыФормы.Вставить("МассивВыбранныхЗначений",                СформироватьМассивВыбранныхЗначений(ПараметрыФормы));
	ПараметрыФормы.Вставить("ПараметрыВнешнегоСоединения",            Неопределено);
	ПараметрыФормы.Вставить("КоллекцияФильтров",                      КоллекцияФильтров);
	
	ОткрытьФорму("ОбщаяФорма.ФормаВыбораДополнительныхУсловий",
		ПараметрыФормы,
		ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьСписокОтправляемыхКассККМБезОтбораПоОрганизации(Команда)
	ПараметрыФормы = Новый Структура();
	
	ПараметрыФормы.Вставить("ИмяЭлементаФормыДляЗаполнения",          "КассыККМ");
	ПараметрыФормы.Вставить("ИмяРеквизитаЭлементаФормыДляЗаполнения", "КассаККМ");
	ПараметрыФормы.Вставить("ИмяТаблицыВыбора",                       "Справочник.КассыККМ");
	ПараметрыФормы.Вставить("ЗаголовокФормыВыбора",                   
							НСтр("ru = 'Выберите кассы ККМ.'"));
	ПараметрыФормы.Вставить("МассивВыбранныхЗначений",                СформироватьМассивВыбранныхЗначений(ПараметрыФормы));
	ПараметрыФормы.Вставить("ПараметрыВнешнегоСоединения",            Неопределено);
	ПараметрыФормы.Вставить("КоллекцияФильтров",                      Неопределено);
	ПараметрыФормы.Вставить("ОсобыеУсловия",                      	  Новый Структура("ЭтоКассыККМДляРМК", Истина));
	
	ОткрытьФорму("ОбщаяФорма.ФормаВыбораДополнительныхУсловий", ПараметрыФормы, ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьСписокОтправляемыхДоговоровЭквайринга(Команда)
	
	Если Не Объект.ИспользоватьОтборПоОрганизациям  Тогда
		
		ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не заполнен фильтр по организациям.'"),, "Объект.ИспользоватьОтборПоОрганизациям");
		
		Возврат;
		
	КонецЕсли;
	
	КоллекцияФильтров = Новый Массив;
	
	НакладываемыеФильтры = Новый Структура();
	
	ПараметрыВыбораЗначений = Новый Структура();
	
	ПараметрыВыбораЗначений.Вставить("ИмяЭлементаФормыДляЗаполнения",          "Организации");
	ПараметрыВыбораЗначений.Вставить("ИмяРеквизитаЭлементаФормыДляЗаполнения", "Организация");
	
	НакладываемыеФильтры.Вставить("РеквизитОтбора",    "Организация");
	НакладываемыеФильтры.Вставить("Условие",           "В");
	НакладываемыеФильтры.Вставить("ИмяПараметра",      "Организации");
	НакладываемыеФильтры.Вставить("ЗначениеПараметра",  СформироватьМассивВыбранныхЗначений(ПараметрыВыбораЗначений)); 
	
	КоллекцияФильтров.Добавить(НакладываемыеФильтры);

	НакладываемыеФильтры = Новый Структура();
	НакладываемыеФильтры.Вставить("РеквизитОтбора",    "СпособПроведенияПлатежа");
	НакладываемыеФильтры.Вставить("Условие",           "=");
	НакладываемыеФильтры.Вставить("ИмяПараметра",      "СпособПроведенияПлатежа");
	НакладываемыеФильтры.Вставить("ЗначениеПараметра",	
		ПредопределенноеЗначение("Перечисление.СпособыПроведенияПлатежей.СистемаБыстрыхПлатежей")); 

	КоллекцияФильтров.Добавить(НакладываемыеФильтры);
	
	ПараметрыФормы = Новый Структура();
	ПараметрыФормы.Вставить("ИмяЭлементаФормыДляЗаполнения",          "ДоговорыПодключенияКПлатежнымСистемам");
	ПараметрыФормы.Вставить("ИмяРеквизитаЭлементаФормыДляЗаполнения", "ДоговорПодключения");
	ПараметрыФормы.Вставить("ИмяТаблицыВыбора",                       "Справочник.ДоговорыЭквайринга");
	ПараметрыФормы.Вставить("ЗаголовокФормыВыбора",                   НСтр("ru = 'Выберите договоры подключения (к платежным системам)'"));
	ПараметрыФормы.Вставить("МассивВыбранныхЗначений",                СформироватьМассивВыбранныхЗначений(ПараметрыФормы));
	ПараметрыФормы.Вставить("ПараметрыВнешнегоСоединения",            Неопределено);
	ПараметрыФормы.Вставить("КоллекцияФильтров",                      КоллекцияФильтров);
	
	ОткрытьФорму("ОбщаяФорма.ФормаВыбораДополнительныхУсловий",
		ПараметрыФормы,
		ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ФормаВыбораДокументовНажатие(Элемент)
	ПараметрыФормы = Новый Структура();
	ПараметрыФормы.Вставить("ВидыДокументов", МассивОбъектовТаблицыНастроек("ВидыДокументов", "ИмяОбъектаМетаданных"));
	
	ОткрытьФорму("ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.Форма.ФормаВыбораВидовДокументов",
		ПараметрыФормы, ЭтотОбъект);

КонецПроцедуры 

#КонецОбласти
#Область СлужебныеПроцедурыИФункции

#Область Прочее

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

#Область СкладыИнформОстатков
	
	ВедетсяРаботаЧерезТорговыхПредставителей = ПолучитьФункциональнуюОпцию("ВедетсяРаботаЧерезТорговыхПредставителей");
	
	// Видимость выгружаемых складов для информ. остатков.
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаНастройкаОтправлятьИнформОстатки",
		"Видимость",
		Объект.ВариантНастройки <> "ОбменУП2ЗУП3" 
		И Объект.ВариантНастройки <> "ОбменУПРМК"
		И Объект.ВариантНастройки <> ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБП30()
		И Объект.ВариантНастройки <> ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБПКОРП30());

	
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаНастройкаОтправлятьИнформОстатки",
		"Доступность", Объект.ПравилаОтправкиСправочников <> "НеСинхронизировать");
		
	Если Элементы.ГруппаНастройкаОтправлятьИнформОстатки.Видимость Тогда
		
		Элементы.ФлагОтправлятьИнформативныеОстатки.Видимость           = Истина;
		Элементы.ГруппаСтраницыИнформативныеОстаткиПоСкладам.Видимость = Объект.ВыгружатьИнформативныеОстатки;
		
		Элементы.ГруппаОтправлятьИнформОстаткиПоСкладам.Доступность = ВедетсяРаботаЧерезТорговыхПредставителей;
		
	КонецЕсли;
	
#КонецОбласти

#Область ТолькоНоменклатураСОстатками
	
	// Видимость признака "Выгружать только номенклатуру с остатками"
	Элементы.ГруппаВыгружатьТолькоНоменклатуруСОстатками.Видимость = Объект.ВариантНастройки = "ОбменУПРМК";
	
#КонецОбласти

#Область ВидыЦен
	
	// Видимость выгружаемых видов цен.
	Элементы.ГруппаНастройкаВидовЦен.Видимость = Объект.ВариантНастройки <> "ОбменУП2ЗУП3"
		И Объект.ВариантНастройки <> "ОбменУПРМК" И ИспользоватьНесколькоВидовЦен;
	
	Если Элементы.ГруппаНастройкаВидовЦен.Видимость Тогда
		
		Элементы.ПолеВидЦен.АвтоОтметкаНезаполненного = Объект.ВариантНастройки = "ОбменКасса"
			И ИспользоватьНесколькоВидовЦен;
		
		Если Объект.ВариантНастройки = "ОбменКасса" Тогда
			Элементы.ГруппаНастройкаВидовЦен.ТекущаяСтраница = Элементы.ГруппаОтправлятьВидЦенНоменклатуры;
			Элементы.ГруппаНастройкаВидовЦен.Видимость = ИспользоватьНесколькоВидовЦен;
		Иначе
			Элементы.ГруппаНастройкаВидовЦен.ТекущаяСтраница = Элементы.ГруппаОтправлятьВидыЦенНоменклатуры;
			
			Если Объект.ВыгружатьЦеныНоменклатуры И ИспользоватьНесколькоВидовЦен Тогда
				Элементы.ГруппаСтраницыОтправлятьВидыЦенНоменклатуры.ТекущаяСтраница = 
					Элементы.ГруппаСтраницаКомандаВыбратьВидыЦен;
			Иначе
				Элементы.ГруппаСтраницыОтправлятьВидыЦенНоменклатуры.ТекущаяСтраница = 
					Элементы.ГруппаСтраницаКомандаВыбратьВидыЦенПустая;
			КонецЕсли;
			
			Если Объект.ПравилаОтправкиСправочников = "НеСинхронизировать" Тогда
				Элементы.ГруппаОтправлятьВидыЦенНоменклатуры.Доступность = Ложь;
			Иначе
				Элементы.ГруппаОтправлятьВидыЦенНоменклатуры.Доступность = Истина;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
#КонецОбласти

#Область ФильтрПоКурьеры
	
	// Видимость фильтра выгружаемых курьеров.
	Элементы.ГруппаФильтрПоКурьеру.Видимость = Объект.ВариантНастройки <> "ОбменУП2ЗУП3"
		И Объект.ВариантНастройки <> "ОбменУПРМК";
	
	Если Элементы.ГруппаФильтрПоКурьеру.Видимость Тогда
		
		Элементы.ИспользоватьОтборПоКурьеру.Видимость = Истина;

		Если Объект.ИспользоватьОтборПоКурьерам Тогда
			Элементы.ОткрытьСписокКурьеров.Видимость = Истина;
		Иначе
			Элементы.ОткрытьСписокКурьеров.Видимость = Ложь;
		КонецЕсли;
		
		Элементы.ГруппаФильтрПоКурьеру.Доступность = Объект.ПравилаОтправкиСправочников <> "НеСинхронизировать";
		
	КонецЕсли;
	
#КонецОбласти

#Область ФильтрПоФизическимЛицам
	
	// Видимость фильтра выгружаемых физических лиц.
	Элементы.ГруппаФильтрПоФизическимЛицам.Видимость = Объект.ВариантНастройки = "ОбменУПРМК";
	
	Если Элементы.ГруппаФильтрПоФизическимЛицам.Видимость Тогда
		
		Элементы.ИспользоватьОтборПоФизическимЛицам.Видимость = Истина;
		Элементы.ОткрытьСписокФизическихЛиц.Видимость = Объект.ИспользоватьОтборПоФизическимЛицам;
		
	КонецЕсли;
	
#КонецОбласти

#Область ФильтрПоКассамККМ
	
	// Видимость фильтра по кассе ККМ.
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаФильтрПоКассеККМ",
		"Видимость",
		 Объект.ВариантНастройки = "ОбменУПРМК");
		 
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаФильтрПоКассамККМ",
		"Видимость",
		Объект.ВариантНастройки <> "ОбменУП2ЗУП3" И Объект.ВариантНастройки <> "ОбменУПРМК" 
		И Объект.ВариантНастройки <> "ОбменКасса");
	
	Если Элементы.ГруппаФильтрПоКассамККМ.Видимость Тогда
		
		Элементы.ИспользоватьОтборПоКассамККМ.Видимость = Истина;

		Если Объект.ИспользоватьОтборПоКассамККМ Тогда
			Элементы.ОткрытьСписокКассККМ.Видимость = Истина;
		Иначе
			Элементы.ОткрытьСписокКассККМ.Видимость = Ложь;
		КонецЕсли;
		
		Элементы.ГруппаФильтрПоКассамККМ.Доступность = Объект.ПравилаОтправкиСправочников <> "НеСинхронизировать";
		
	КонецЕсли;
	
#КонецОбласти

#Область ФильтрПоЭквайринговымТерминалам
	
	// Видимость фильтра выгружаемых эквайринговых терминалов.
	Элементы.ГруппаФильтрПоЭквайринговымТерминалам.Видимость = Объект.ВариантНастройки <> "ОбменУП2ЗУП3";
	
	Если Элементы.ГруппаФильтрПоЭквайринговымТерминалам.Видимость Тогда
		
		Элементы.ИспользоватьОтборПоЭквайринговымТерминалам.Видимость = Истина;
		Элементы.ОткрытьСписокЭквайринговыхТерминалов.Видимость = Объект.ИспользоватьОтборПоЭквайринговымТерминалам;
		Элементы.ГруппаФильтрПоЭквайринговымТерминалам.Доступность = Объект.ПравилаОтправкиДокументов <> "НеСинхронизировать";
	КонецЕсли;
	
#КонецОбласти
	
#Область ФильтрПоДоговорамЭквайринга

	// Видимость фильтра выгружаемых эквайринговых терминалов.
	Элементы.ГруппаФильтрПоДоговорамЭквайринга.Видимость = (Объект.ВариантНастройки = "ОбменУПРМК")
		И НЕ ВерсияФорматаНиже(Объект.ВерсияФорматаОбмена, "1.19");

	Если Элементы.ГруппаФильтрПоДоговорамЭквайринга.Видимость Тогда

		Элементы.ИспользоватьОтборПоДоговорамЭквайринга.Видимость = Истина;
		Элементы.ОткрытьСписокДоговоровЭквайринга.Видимость = Объект.ИспользоватьОтборПоДоговорамЭквайринга;
		Элементы.ГруппаФильтрПоДоговорамЭквайринга.Доступность = Объект.ПравилаОтправкиДокументов <> "НеСинхронизировать";
	КонецЕсли;

#КонецОбласти

#Область ФильтрПоСклады
	
	// Видимость фильтра выгружаемых складов.
	Элементы.ГруппаФильтрПоСкладу.Видимость = Объект.ВариантНастройки <> "ОбменУП2ЗУП3"
		И Объект.ВариантНастройки <> "ОбменУПРМК"
		И ИспользоватьНесколькоСкладов;
	
	Если Элементы.ГруппаФильтрПоСкладу.Видимость Тогда
		
		Элементы.ИспользоватьОтборПоСкладу.Видимость = Истина;

		Если Объект.ИспользоватьОтборПоСкладам Тогда
			Элементы.ОткрытьСписокОтправляемыхСкладов.Видимость = Истина;
		Иначе
			Элементы.ОткрытьСписокОтправляемыхСкладов.Видимость = Ложь;
		КонецЕсли;
		
		Элементы.ГруппаФильтрПоСкладу.Доступность = Объект.ПравилаОтправкиСправочников <> "НеСинхронизировать";
		
	КонецЕсли;
	
#КонецОбласти

#Область ГруппаВыгружатьАналитикуПоСкладам
	
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаВыгружатьАналитикуПоСкладам",
		"Видимость", Объект.ВариантНастройки <> "ОбменУП2ЗУП3" И Объект.ВариантНастройки <> "ОбменУПРМК");
			
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаВыгружатьАналитикуПоСкладам",
		"Доступность", Объект.ПравилаОтправкиДокументов <> "НеСинхронизировать");
		
#КонецОбласти

#Область ГруппаВыгружатьДанныеМаркировки
	
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаВыгружатьДанныеМаркировки",
		"Видимость", Ложь);
			
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаВыгружатьДанныеМаркировки",
		"Доступность", Ложь);
		
	//++ Локализация
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаВыгружатьДанныеМаркировки",
		"Видимость", 
		Объект.ВариантНастройки <> "ОбменУП2ЗУП3" И Объект.ВариантНастройки <> "ОбменУПРМК");
			
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаВыгружатьДанныеМаркировки",
		"Доступность", Объект.ПравилаОтправкиДокументов <> "НеСинхронизировать");
	//-- Локализация
	
#КонецОбласти

#Область ГруппаПравилаСозданияДоговоровКонтрагентов

	Элементы.ГруппаПравилаСозданияДоговоровКонтрагентов.Видимость = Объект.ВариантНастройки <> "ОбменУП2ЗУП3"
		И Объект.ВариантНастройки <> "ОбменУПРМК";
	Элементы.ПолеПравилаСозданияДоговоровКонтрагентов.АвтоОтметкаНезаполненного = Объект.ВариантНастройки <> "ОбменУП2ЗУП3"
		И Объект.ВариантНастройки <> "ОбменУПРМК";
	
	Если Элементы.ГруппаПравилаСозданияДоговоровКонтрагентов.Видимость Тогда
		
		Элементы.ГруппаПравилаСозданияДоговоровКонтрагентов.Доступность = Объект.ПравилаОтправкиДокументов <> "НеСинхронизировать";
		
		ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
			Элементы,
			"ПолеПравилаСозданияДоговоровКонтрагентов",
			"Доступность",
			Элементы.ПолеПравилаСозданияДоговоровКонтрагентов.СписокВыбора.Количество() > 1);
			
	КонецЕсли;
#КонецОбласти

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

#Область ГруппаЭквайринговыйТерминалПоУмолчанию
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаЭквайринговыйТерминалПоУмолчанию",
		"Видимость",
		(Объект.ВариантНастройки = "ОбменУПРМК" И ВерсияФорматаНиже(Объект.ВерсияФорматаОбмена, "1.17")
			ИЛИ Объект.ВариантНастройки <> "ОбменУП2ЗУП3"));
#КонецОбласти  

#Область ГруппаЗачетАвансов
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаЗачетАвансов",
		"Доступность", Объект.ПравилаОтправкиДокументов <> "НеСинхронизировать");
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаЗачетАвансов",
		"Видимость", Не Объект.ВариантНастройки = "ОбменУП2ЗУП3");
		
#КонецОбласти
#Область ГруппаНеВыгружатьКартинки
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаНеВыгружатьКартинки",
		"Доступность", Объект.ПравилаОтправкиСправочников <> "НеСинхронизировать");
	ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ГруппаНеВыгружатьКартинки",
		"Видимость", Не Объект.ВариантНастройки = "ОбменУП2ЗУП3");
		
#КонецОбласти
       УстановитьВидимостьГруппыНаСервере(Элементы, "ПравилаПолученияДанных");
#КонецОбласти	
	
	ОбновитьНаименованиеКомандФормы();
	
КонецПроцедуры

&НаСервере
Функция ФормироватьДоговора()
	
	Возврат (Объект.ПравилаОтправкиДокументов <> "НеСинхронизировать" И Объект.ВариантНастройки <> "ОбменУП2ЗУП3");
	
КонецФункции

&НаСервере
Процедура ОбновитьДанныеОбъекта(ПараметрыЗаполнения)
	
	ИмяТаблицыДляЗаполнения = ПараметрыЗаполнения.ИмяТаблицыДляЗаполнения;
	
	Объект[ПараметрыЗаполнения.ИмяТаблицыДляЗаполнения].Очистить();
	
	ВыбранныеЗначения = ПолучитьИзВременногоХранилища(ПараметрыЗаполнения.АдресТаблицыВоВременномХранилище); // ТаблицаЗначений
	
	Если ВыбранныеЗначения.Количество() > 0 Тогда 
		
		Если ВыбранныеЗначения.Колонки.Найти("Идентификатор") <> Неопределено 
			И ВыбранныеЗначения.Колонки.Найти("Представление") <> Неопределено Тогда
			Для каждого СтрокаТаблицы Из ВыбранныеЗначения Цикл
				НоваяСтрока = Объект[ИмяТаблицыДляЗаполнения].Добавить();
				НоваяСтрока[ПараметрыЗаполнения.ИмяКолонкиДляЗаполнения] = СтрокаТаблицы.Представление;
			КонецЦикла; 
		ИначеЕсли ТипЗнч(ВыбранныеЗначения) = Тип("ТаблицаЗначений") Тогда
			Для каждого СтрокаТаблицы Из ВыбранныеЗначения Цикл
				
				Если СтрокаТаблицы.Использовать Тогда
					НоваяСтрока = Объект[ИмяТаблицыДляЗаполнения].Добавить();
					ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТаблицы);
				КонецЕсли;
				
			КонецЦикла;
			
		Иначе
			ВыбранныеЗначения.Колонки.Представление.Имя = ПараметрыЗаполнения.ИмяКолонкиДляЗаполнения;
			Объект[ПараметрыЗаполнения.ИмяТаблицыДляЗаполнения].Загрузить(ВыбранныеЗначения);
		КонецЕсли;
		
	КонецЕсли;
  
	Если ПараметрыЗаполнения.ИмяТаблицыДляЗаполнения = "ВидыЦенНоменклатуры" Тогда
		Объект.ВыгружатьЦеныНоменклатуры = (ВыбранныеЗначения.Количество() <> 0);
	КонецЕсли;  
	Если ПараметрыЗаполнения.ИмяТаблицыДляЗаполнения = "Склады" Тогда
		Объект.ИспользоватьОтборПоСкладам = (ВыбранныеЗначения.Количество() <> 0);
	КонецЕсли;
	Если ПараметрыЗаполнения.ИмяТаблицыДляЗаполнения = "Курьеры" Тогда
		Объект.ИспользоватьОтборПоКурьерам = (ВыбранныеЗначения.Количество() <> 0);
	КонецЕсли;
	Если ПараметрыЗаполнения.ИмяТаблицыДляЗаполнения = "ЭквайринговыеТерминалы" Тогда
		Объект.ИспользоватьОтборПоЭквайринговымТерминалам = (ВыбранныеЗначения.Количество() <> 0);
	КонецЕсли;
	Если ПараметрыЗаполнения.ИмяТаблицыДляЗаполнения = "КассыККМ" Тогда
		Объект.ИспользоватьОтборПоКассамККМ = (ВыбранныеЗначения.Количество() <> 0); 
		ОбновитьЗависимыеОтборы();
	КонецЕсли; 
	Если ПараметрыЗаполнения.ИмяТаблицыДляЗаполнения = "ВидыДокументов" Тогда
		Объект.ИспользоватьОтборПоРазделамУчетаИДокументам = (ВыбранныеЗначения.Количество() <> 0);
	КонецЕсли;  
	ОбновитьНаименованиеКомандФормы();
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьНаименованиеКомандФормы()
	
	// Обновим заголовок выбранных организаций
	Если Объект.Организации.Количество() > 0 Тогда
		
		ВыбранныеОрганизации = Объект.Организации.Выгрузить().ВыгрузитьКолонку("Организация");
		НовыйЗаголовокОрганизаций = СтрСоединить(ВыбранныеОрганизации, ",");
		
	Иначе
		
		НовыйЗаголовокОрганизаций = НСтр("ru = 'Выбрать организации'");
		
	КонецЕсли;
	
	Элементы.ОткрытьСписокВыбранныхОрганизаций.Заголовок = НовыйЗаголовокОрганизаций;
	
	// Обновим заголовок выбранных видов цен
	Если Объект.ВидыЦенНоменклатуры.Количество() > 0 Тогда
		НовыйЗаголовокВидовЦен = "";
		ВыбранныеВидыЦен = Объект.ВидыЦенНоменклатуры.Выгрузить().ВыгрузитьКолонку("ВидЦенНоменклатуры"); // Массив
		ПерваяСтрокаТаблицы = ВыбранныеВидыЦен[0];
		Наименование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПерваяСтрокаТаблицы, "Наименование");
		СформироватьЗаголовокОтбора(ВыбранныеВидыЦен.Количество(), Наименование, НовыйЗаголовокВидовЦен)
	
	Иначе
		
		НовыйЗаголовокВидовЦен = НСтр("ru = 'Выбрать виды цен'");
		
	КонецЕсли;
	
	Элементы.ОткрытьСписокОтправляемыхВидовЦенНоменклатуры.Заголовок = НовыйЗаголовокВидовЦен;
	
	Если Объект.СкладыИнформативныхОстатков.Количество() > 0 Тогда
		НовыйЗаголовокСкладовИнформОстатков = "";
		ВыбранныеИнформОстатковСклады = Объект.СкладыИнформативныхОстатков.Выгрузить().ВыгрузитьКолонку("Склад"); // Массив
		ПерваяСтрокаТаблицы = ВыбранныеИнформОстатковСклады[0];
		Наименование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПерваяСтрокаТаблицы, "Наименование");
		СформироватьЗаголовокОтбора(ВыбранныеИнформОстатковСклады.Количество(), Наименование,НовыйЗаголовокСкладовИнформОстатков);
	Иначе
		
		НовыйЗаголовокСкладовИнформОстатков = НСтр("ru = 'Выбрать склады'");
		
	КонецЕсли;
	
	Элементы.ОткрытьСписокОтправляемыхСкладовИнформОстатков.Заголовок = НовыйЗаголовокСкладовИнформОстатков;
	
	НовыйЗаголовокРазделыУчета = НСтр("ru = 'Фильтр по видам документов'");
	
	Если НЕ Объект.ВидыДокументов.Количество() = 0 Тогда
		НовыйЗаголовокРазделыУчета = "";
		ВыбранныеРазделыУчета = Объект.ВидыДокументов.Выгрузить().ВыгрузитьКолонку("Представление"); // Массив
		Наименование = ВыбранныеРазделыУчета[0]; // Строка
	    СформироватьЗаголовокОтбора(ВыбранныеРазделыУчета.Количество(), Наименование,НовыйЗаголовокРазделыУчета);
	КонецЕсли;
		
	Элементы.ОткрытьФормуВыбораДокументов.Заголовок = НовыйЗаголовокРазделыУчета;
	
	// Обновим заголовок выбранных складов
	Если Объект.Склады.Количество() > 0 Тогда
		НовыйЗаголовокСкладов = "";
		ВыбранныеСклады = Объект.Склады.Выгрузить().ВыгрузитьКолонку("Склад"); // Массив
		ПерваяСтрокаТаблицы = ВыбранныеСклады[0];
		Наименование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПерваяСтрокаТаблицы, "Наименование");
 		СформироватьЗаголовокОтбора(ВыбранныеСклады.Количество(), Наименование,НовыйЗаголовокСкладов);
	Иначе
		НовыйЗаголовокСкладов = НСтр("ru = 'Выбрать склады'");
	КонецЕсли;
	
	Элементы.ОткрытьСписокОтправляемыхСкладов.Заголовок = НовыйЗаголовокСкладов;
	
	// Обновим заголовок выбранных курьеров
	Если Объект.Курьеры.Количество() > 0 Тогда
		НовыйЗаголовокСпискаКурьеров = "";
		ВыбранныеКурьеры = Объект.Курьеры.Выгрузить().ВыгрузитьКолонку("Курьер"); // Массив
		ПерваяСтрокаТаблицы = ВыбранныеКурьеры[0];
		Наименование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПерваяСтрокаТаблицы, "Наименование");
		СформироватьЗаголовокОтбора(ВыбранныеКурьеры.Количество(), Наименование,НовыйЗаголовокСпискаКурьеров);
	Иначе
		НовыйЗаголовокСпискаКурьеров = НСтр("ru = 'Выбрать курьеров'");
	КонецЕсли;
	
	Элементы.ОткрытьСписокКурьеров.Заголовок = НовыйЗаголовокСпискаКурьеров;
	
	// Обновим заголовок выбранных физических лиц
	Если Объект.ФизическиеЛица.Количество() > 0 Тогда
		НовыйЗаголовокСписка = "";
		ВыбранныеФизическиеЛица = Объект.ФизическиеЛица.Выгрузить().ВыгрузитьКолонку("ФизическоеЛицо"); // Массив
		ПерваяСтрокаТаблицы = ВыбранныеФизическиеЛица[0];
		Наименование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПерваяСтрокаТаблицы, "Наименование");
		СформироватьЗаголовокОтбора(ВыбранныеФизическиеЛица.Количество(), Наименование,НовыйЗаголовокСписка);
	Иначе
		НовыйЗаголовокСписка = НСтр("ru = 'Выбрать физические лица'");
	КонецЕсли;
	
	Элементы.ОткрытьСписокФизическихЛиц.Заголовок = НовыйЗаголовокСписка;
	
	// Обновим заголовок выбранных эквайринговых терминалов
	Если Объект.ЭквайринговыеТерминалы.Количество() > 0 Тогда
		НовыйЗаголовокСписка = "";
		ВыбранныеЭквайринговыеТерминалы = Объект.ЭквайринговыеТерминалы.Выгрузить().ВыгрузитьКолонку("ЭквайринговыйТерминал"); // Массив
		ПерваяСтрокаТаблицы = ВыбранныеЭквайринговыеТерминалы[0];
		Наименование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПерваяСтрокаТаблицы, "Наименование");
		СформироватьЗаголовокОтбора(ВыбранныеЭквайринговыеТерминалы.Количество(), Наименование,НовыйЗаголовокСписка);
	Иначе
		НовыйЗаголовокСписка = НСтр("ru = 'Выбрать эквайринговые терминалы'");
	КонецЕсли;
	
	Элементы.ОткрытьСписокЭквайринговыхТерминалов.Заголовок = НовыйЗаголовокСписка;
	
	// Обновим заголовок выбранных договоров эквайринга
	Если Объект.ДоговорыПодключенияКПлатежнымСистемам.Количество() > 0 Тогда
		
		ВыбранныеДоговорыЭквайринга = Объект.ДоговорыПодключенияКПлатежнымСистемам.Выгрузить().ВыгрузитьКолонку("ДоговорПодключения");
		НовыйЗаголовокСписка = СтрСоединить(ВыбранныеДоговорыЭквайринга, ",");
		
	Иначе
		НовыйЗаголовокСписка = НСтр("ru = 'Выбрать договоры подключения'");
	КонецЕсли;
	
	Элементы.ОткрытьСписокДоговоровЭквайринга.Заголовок = НовыйЗаголовокСписка;
	
	// Обновим заголовок выбранных касс ККМ
	Если Объект.КассыККМ.Количество() > 0 Тогда
		НовыйЗаголовокКассККМ = "";
		ВыбранныеКассыККМ = Объект.КассыККМ.Выгрузить().ВыгрузитьКолонку("КассаККМ"); // Массив
		ПерваяСтрокаТаблицы = ВыбранныеКассыККМ[0];
		Наименование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПерваяСтрокаТаблицы, "Наименование");
		СформироватьЗаголовокОтбора(ВыбранныеКассыККМ.Количество(), Наименование,НовыйЗаголовокКассККМ);
	Иначе
		
		НовыйЗаголовокКассККМ = НСтр("ru = 'Выбрать кассы ККМ'");
		
	КонецЕсли;
	
	Элементы.ОткрытьСписокКассККМ.Заголовок   = НовыйЗаголовокКассККМ;
	Элементы.КнопкаУказатьСписокКассККМ.Заголовок = НовыйЗаголовокКассККМ;
		
КонецПроцедуры
	
&НаСервере
Процедура ОбновитьСписокВыбораВерсийФорматаОбмена()
	СписокВерсийФормата = Элементы.ВерсияФорматаОбмена.СписокВыбора;
	СписокВерсийФормата.Очистить();
	
	ВерсииФормата = Новый Соответствие;
	ОбменДаннымиУТ.ДоступныеВерсииУниверсальногоФормата(ВерсииФормата);
	
	Для Каждого ВерсияФормата Из ВерсииФормата Цикл
		СписокВерсийФормата.Добавить(ВерсияФормата.Ключ);
	КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки) 
	
	Если Не ЗначениеЗаполнено(НавигационнаяСсылкаФорматированнойСтроки) Тогда
		
		Возврат;
		
	КонецЕсли;
	
	Если НавигационнаяСсылкаФорматированнойСтроки = "ОткрытьФормуНастроекПродажи" Тогда
		
		ОткрытьФорму("Обработка.ПанельАдминистрированияУТ.Форма.Продажи", Новый Структура);
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция СформироватьМассивВыбранныхЗначений(ПараметрыФормы)
	
	ТабличнаяЧасть           = Объект[ПараметрыФормы.ИмяЭлементаФормыДляЗаполнения];
	ТаблицаВыбранныхЗначений = ТабличнаяЧасть.Выгрузить(,ПараметрыФормы.ИмяРеквизитаЭлементаФормыДляЗаполнения);
	МассивВыбранныхЗначений  = ТаблицаВыбранныхЗначений.ВыгрузитьКолонку(ПараметрыФормы.ИмяРеквизитаЭлементаФормыДляЗаполнения);
	
	Возврат МассивВыбранныхЗначений;

КонецФункции

&НаКлиенте
Процедура УстановитьУсловияОграниченияСинхронизации()
	
	Если ПравилоОтбораСправочников = "Отбор" Тогда
		
		Объект.ИспользоватьОтборПоОрганизациям = Истина;
		Объект.ВыгружатьУправленческуюОрганизацию = Ложь;
		
	ИначеЕсли ПравилоОтбораСправочников = "УпрОрганизация" Тогда
		
		Объект.ИспользоватьОтборПоОрганизациям = Ложь;
		Объект.ВыгружатьУправленческуюОрганизацию = Истина;
		
	ИначеЕсли ПравилоОтбораСправочников = "БезОтбора" Тогда
		
		Объект.ИспользоватьОтборПоОрганизациям = Ложь;
		Объект.ВыгружатьУправленческуюОрганизацию = Ложь;
		
	КонецЕсли;
	
	Если РежимВыгрузкиРазделовУчета = 1 Тогда
		Объект.ИспользоватьОтборПоРазделамУчета = Истина;
	Иначе
		Объект.ИспользоватьОтборПоРазделамУчета = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура УстановитьВидимостьГруппыНаСервере(ЭлементыФормы, ИмяГруппы)
	
	ГруппаФормы = ЭлементыФормы.Найти(ИмяГруппы);
	
	Если ГруппаФормы = Неопределено
		Или Не ТипЗнч(ГруппаФормы) = Тип("ГруппаФормы") Тогда
		
		Возврат;
		
	КонецЕсли;
	
	Видимость = Ложь;
	
	Для Каждого ПодчиненныйЭлемент Из ГруппаФормы.ПодчиненныеЭлементы Цикл
		
		Если Не ТипЗнч(ПодчиненныйЭлемент) = Тип("ГруппаФормы") Тогда
			Продолжить; // устанавливаем видимость только по видимости дочерних групп первого уровня вложенности
		КонецЕсли;
		
		Видимость = Видимость ИЛИ ПодчиненныйЭлемент.Видимость;
			
	КонецЦикла;
	
	ГруппаФормы.Видимость = Видимость;
	
КонецПроцедуры

&НаСервере
Процедура СформироватьСписокВыбораПравилФормированияДоговора()
	
	// Сформируем список выбора для реквизита "ПравилаСозданияДоговоровКонтрагентов"
	СписокПравилФормированияДоговора = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.СписокПравилФормированияДоговора();
	Элементы.ПолеПравилаСозданияДоговоровКонтрагентов.СписокВыбора.Очистить();
	Для Каждого ЭлементПравил Из СписокПравилФормированияДоговора Цикл
		Элементы.ПолеПравилаСозданияДоговоровКонтрагентов.СписокВыбора.Добавить(ЭлементПравил.Значение, ЭлементПравил.Представление);
	КонецЦикла;
	
	Если СписокПравилФормированияДоговора.Количество() = 1 Тогда
		Объект.ПравилаСозданияДоговоровКонтрагентов = СписокПравилФормированияДоговора[0].Значение;
	КонецЕсли;
	
	Если ЗначениеЗаполнено(Объект.ПравилаСозданияДоговоровКонтрагентов)
		И СписокПравилФормированияДоговора.НайтиПоЗначению(Объект.ПравилаСозданияДоговоровКонтрагентов) = Неопределено Тогда
		
		Объект.ПравилаСозданияДоговоровКонтрагентов = "";
	КонецЕсли;
	
КонецПроцедуры

// Вызывается при изменении состава касс ККМ (для 1С:РМК)
&НаСервере
Процедура ОбновитьЗависимыеОтборы()
	
	Если ВерсияФорматаНиже(Объект.ВерсияФорматаОбмена, "1.17")
		И Объект.ВариантНастройки = "ОбменУПРМК"
		И ЗначениеЗаполнено(КассаККМ) Тогда
		
		Объект.КассыККМ.Очистить();
		Строка = Объект.КассыККМ.Добавить();
		Строка.КассаККМ = КассаККМ;
		Объект.ИспользоватьОтборПоКассамККМ = Истина;
		
		ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.ОбновитьЗависимыеОтборы(Объект);
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция МассивОбъектовТаблицыНастроек(ИмяТабличнойЧасти, ИмяКолонки)

	Возврат Объект[ИмяТабличнойЧасти].Выгрузить().ВыгрузитьКолонку(ИмяКолонки);

КонецФункции

&НаСервере
Процедура АвтозаполнениеПоВидамДокументов()
	ИдентификаторНастройки = Объект.ВариантНастройки;
	Если ИдентификаторНастройки = "ОбменКасса" 
		ИЛИ ИдентификаторНастройки = "ОбменУП2ЗУП3"
		ИЛИ ИдентификаторНастройки  = "ОбменУПРМК" Тогда
		Возврат
	КонецЕсли;
	
	Если Объект.ВидыДокументов.Количество() <> 0 Тогда
	    Возврат
	КонецЕсли;  
	Отбор = Новый Структура;  
	Отбор.Вставить("Выгружать", Истина);
	МассивРазделов = Объект.РазделыУчета.Выгрузить(Отбор);
	Если Константы.УправлениеТорговлей.Получить() 
		И МассивРазделов.Количество() = 5 Тогда 
		Возврат;
	ИначеЕсли МассивРазделов.Количество() = 7 Тогда
		Возврат
	КонецЕсли;
	
	МассивРазделовПланаОбмена = МассивРазделов.ВыгрузитьКолонку("РазделУчета"); 
	ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.ЗаполнитьВидыДокументовПоРазделамУчета(Объект, МассивРазделовПланаОбмена);
		
КонецПроцедуры

&НаКлиенте
Процедура ВернутьСтаруюНастройкуПоРазделамУчета(Команда)
	РежимВыгрузкиРазделовУчета = 1;
	Элементы.ПереключательРежимаВыгрузкиРазделовУчетаБезОтбора.Видимость = Не Элементы.ПереключательРежимаВыгрузкиРазделовУчетаБезОтбора.Видимость; 
	Элементы.ПереключательРежимаВыгрузкиРазделовУчетаСОтбором.Видимость = НЕ Элементы.ПереключательРежимаВыгрузкиРазделовУчетаСОтбором.Видимость; 
	Элементы.ОткрытьСписокВыбранныхРазделовУчета.Видимость = НЕ Элементы.ОткрытьСписокВыбранныхРазделовУчета.Видимость;  
	Элементы.ОткрытьСписокВыбранныхРазделовУчета.Доступность = Элементы.ОткрытьСписокВыбранныхРазделовУчета.Видимость;
    Элементы.РежимВыгрузкиПоДокументам.Видимость = НЕ Элементы.РежимВыгрузкиПоДокументам.Видимость;
	Элементы.ОчиститьОтборПоВидамДокументов.Видимость = НЕ Элементы.ОчиститьОтборПоВидамДокументов.Видимость;
	Элементы.ОткрытьФормуВыбораДокументов.Видимость = НЕ Элементы.ОткрытьФормуВыбораДокументов.Видимость;
КонецПроцедуры

&НаСервере
Процедура РучноеОбновлениеНаСервере() 
	ПолноеИмяОбъекта = "ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат";
	//ОбновляемыеДанные = ОбновлениеИнформационнойБазы.ДанныеДляОбновленияВМногопоточномОбработчике(Параметры);
	ВариантыНастройки = Новый СписокЗначений;
	ВариантыНастройки.Добавить("ОбменКасса");
	ВариантыНастройки.Добавить("ОбменУП2ЗУП3");
	ВариантыНастройки.Добавить("ОбменУПРМК");
	ЭтоУТ = Константы.УправлениеТорговлей.Получить();
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	СинхронизацияДанныхЧерезУниверсальныйФорматРазделыУчета.Ссылка КАК ЭлементУзел,
		|	СинхронизацияДанныхЧерезУниверсальныйФорматРазделыУчета.РазделУчета КАК РазделУчета
		|ПОМЕСТИТЬ ВТ
		|ИЗ
		|	ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.РазделыУчета КАК СинхронизацияДанныхЧерезУниверсальныйФорматРазделыУчета
		|ГДЕ
		|	НЕ СинхронизацияДанныхЧерезУниверсальныйФорматРазделыУчета.Ссылка.ПометкаУдаления
		|	И НЕ СинхронизацияДанныхЧерезУниверсальныйФорматРазделыУчета.Ссылка.ВариантНастройки В (&ВариантыНастройки)
		|	И СинхронизацияДанныхЧерезУниверсальныйФорматРазделыУчета.Выгружать
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	СинхронизацияДанныхЧерезУниверсальныйФорматВидыДокументов.Ссылка КАК ЭлементУзел,
		|	ЕстьNull(КОЛИЧЕСТВО(СинхронизацияДанныхЧерезУниверсальныйФорматВидыДокументов.ИмяОбъектаМетаданных), 0) КАК КоличествоДокументов
		|ПОМЕСТИТЬ ФильтрПоДокументам
		|ИЗ
		|	ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.ВидыДокументов КАК СинхронизацияДанныхЧерезУниверсальныйФорматВидыДокументов
		|ГДЕ
		|	НЕ СинхронизацияДанныхЧерезУниверсальныйФорматВидыДокументов.Ссылка.ПометкаУдаления
		|	И НЕ СинхронизацияДанныхЧерезУниверсальныйФорматВидыДокументов.Ссылка.ВариантНастройки В (&ВариантыНастройки)
		|
		|СГРУППИРОВАТЬ ПО
		|	СинхронизацияДанныхЧерезУниверсальныйФорматВидыДокументов.Ссылка
		|
		|ИМЕЮЩИЕ
		|	КОЛИЧЕСТВО(СинхронизацияДанныхЧерезУниверсальныйФорматВидыДокументов.ИмяОбъектаМетаданных) > 0
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ВТ.ЭлементУзел КАК ЭлементУзел,
		|	ЕстьNull(КОЛИЧЕСТВО(ВТ.РазделУчета),0) КАК КоличествоРазделов,
		|	ЕстьNull(ФильтрПоДокументам.КоличествоДокументов, 0) КАК КоличествоДокументов
		|ИЗ
		|	ВТ КАК ВТ
		|		ЛЕВОЕ СОЕДИНЕНИЕ ФильтрПоДокументам КАК ФильтрПоДокументам
		|		ПО ВТ.ЭлементУзел = ФильтрПоДокументам.ЭлементУзел
		|
		|СГРУППИРОВАТЬ ПО
		|	ВТ.ЭлементУзел,
		|	ФильтрПоДокументам.КоличествоДокументов";
	
	Запрос.УстановитьПараметр("ВариантыНастройки", ВариантыНастройки);
	
	РезультатЗапроса = Запрос.Выполнить();
	Если РезультатЗапроса.Пустой() Тогда
		Возврат;
	КонецЕсли; 
	
	ОбновляемыеДанные = Новый Массив;
	ОбновляемыеДанные = РезультатЗапроса.Выбрать();
	
	Пока ОбновляемыеДанные.Следующий() Цикл
		Если (ЭтоУТ И ОбновляемыеДанные.КоличествоРазделов = 5) 
			ИЛИ  (Не ЭтоУТ И ОбновляемыеДанные.КоличествоРазделов = 7) 
			ИЛИ ОбновляемыеДанные.КоличествоДокументов > 0 Тогда
			Продолжить;
		КонецЕсли;
				
		НачатьТранзакцию();
		Попытка
			
			Блокировка = Новый БлокировкаДанных;
			
			ЭлементБлокировки = Блокировка.Добавить(ПолноеИмяОбъекта);
			ЭлементБлокировки.УстановитьЗначение("Ссылка", ОбновляемыеДанные.ЭлементУзел.Ссылка);
					
			Блокировка.Заблокировать();
			
			УзелОбъект = ОбновляемыеДанные.ЭлементУзел.ПолучитьОбъект();
			МассивРазделовПланаОбмена = УзелОбъект.РазделыУчета.ВыгрузитьКолонку("РазделУчета");				
			Если УзелОбъект = Неопределено Тогда 
				ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(ОбновляемыеДанные.ЭлементУзел);
			Иначе
				ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.ЗаполнитьВидыДокументовПоРазделамУчета(УзелОбъект, МассивРазделовПланаОбмена);
				ОбновлениеИнформационнойБазы.ЗаписатьОбъект(УзелОбъект, Истина, Ложь);
			КонецЕсли;
			
			ЗафиксироватьТранзакцию();
			
		Исключение
			
			ОтменитьТранзакцию();
			ОбновлениеИнформационнойБазыУТ.СообщитьОНеудачнойОбработке(ИнформацияОбОшибке(), ОбновляемыеДанные.ЭлементУзел);
			
		КонецПопытки;
		
	КонецЦикла;

КонецПроцедуры
&НаКлиенте
Процедура РучноеОбновление(Команда)
	РучноеОбновлениеНаСервере();
КонецПроцедуры

&НаСервереБезКонтекста
Функция ВерсияФорматаНиже(Знач ТекущаяВерсия, Знач ЦелеваяВерсия)
	
	ТекВерсия = ОбменДаннымиУТ.ВерсияФорматаЧислом(ТекущаяВерсия);
	ЦелВерсия = ОбменДаннымиУТ.ВерсияФорматаЧислом(ЦелеваяВерсия);
	
	Возврат ТекВерсия < ЦелВерсия;

КонецФункции
&НаСервере
Процедура СформироватьЗаголовокОтбора(Количество,Наименование,НовыйЗаголовок)
	Если Количество = 1 Тогда 
		НовыйЗаголовок = Наименование;
	ИначеЕсли Количество >= 2 Тогда 
		КоличествоСтрокой = Строка(Количество - 1); 
		ШаблонПредставления = Нстр("ru ='%1 (и еще %2).'", ОбщегоНазначения.КодОсновногоЯзыка());
		НовыйЗаголовок = СтрШаблон(ШаблонПредставления, Наименование, КоличествоСтрокой);  
	Иначе
		НовыйЗаголовок = "";
	КонецЕсли;
КонецПроцедуры

#КонецОбласти

#КонецОбласти

Связанные материалы