Договоры подключения к платежным системам / Форма элемента / Модуль формы

файл

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

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

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

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

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

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

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

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

	МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);

	// ИнтеграцияС1СДокументооборотом
	ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	// Конец ИнтеграцияС1СДокументооборотом
	
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

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

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

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

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

#Область ОбработчикиСобытийЭлементовШапкиФормы

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

&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
	
	ПартнерПриИзмененииСервер(
		Объект.Партнер, Объект.Контрагент, Объект.БанковскийСчетКонтрагента, Объект.КонтактноеЛицо);
	
КонецПроцедуры

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

&НаКлиенте
Процедура СпособПроведенияПлатежаПриИзменении(Элемент)

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

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

&НаКлиенте
Процедура НадписьЭквайринговыеТерминалыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)

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

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

&НаКлиенте
Процедура НадписьНастройкаПодключенияПлатежнойСистемыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)

	НадписьНастройкаПодключенияПлатежнойСистемыОбработкаНавигационнойСсылкиЛокализация(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура ФиксированнаяСтавкаКомиссииПриИзменении(Элемент)
	
	Объект.ФиксированнаяСтавкаКомиссии = Булево(ФиксированнаяСтавкаКомиссии);
	
	НастроитьЗависимыеЭлементыФормы("ФиксированнаяСтавкаКомиссии");
	
КонецПроцедуры

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

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

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

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

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

// Параметры:
// 	Элемент - ПолеФормы - 
&НаКлиенте
Процедура Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
	
	Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
		Возврат;
	КонецЕсли;
	
	Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПриИзменении.Свойство(Элемент.Имя) Тогда
		КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент);
	КонецЕсли;

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

// Параметры:
// 	Команда - КомандаФормы - 
&НаКлиенте
Процедура Подключаемый_Команда_УстановитьДоступностьЭлементовПоСтатусуСервер(Команда)
	
	Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
		Возврат;
	КонецЕсли;
	
	Если СтруктураДействийКонтрольНеСогласованныхИзменений.Команды.Свойство(Команда.Имя) Тогда
		КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда);
	КонецЕсли;
	
КонецПроцедуры

// Параметры:
// 	Элемент - ПолеФормы - 
&НаКлиенте
Процедура Подключаемый_ПередНачаломИзменения_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
	
	Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
		Возврат;
	КонецЕсли;
	
	Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломИзменения.Свойство(Элемент.Имя) Тогда
		КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ);
	КонецЕсли;
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса()
	
	УстановитьДоступностьЭлементовПоСтатусуСервер();
	ОбщегоНазначенияУТКлиент.ПослеИзмененияРеквизитаЗависящегоОтСтатуса(ЭтаФорма);
	
КонецПроцедуры

#Область КонтрольНесогласованныхИзменений

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

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

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

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

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

&НаКлиенте
Процедура ФискальныеЧекиФормируетПлатежнаяСистемаПриИзменении(Элемент)
	
	Объект.ФискальныеЧекиФормируетПлатежнаяСистема = ФискальныеЧекиФормируетПлатежнаяСистема;
	
КонецПроцедуры

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

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

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

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

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

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

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
	 РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
	
	ОбщегоНазначенияУТКлиент.РазрешитьРедактированиеРеквизитовОбъекта(ЭтаФорма);
	
КонецПроцедуры

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

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

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

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

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

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

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

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

// СтандартныеПодсистемы.Свойства

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

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

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

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

&НаСервереБезКонтекста
Процедура ЗаполнитьБанковскийСчетОрганизацииПоУмолчанию(Организация, БанковскийСчет)
	
	Если ЗначениеЗаполнено(БанковскийСчет) Или НЕ ЗначениеЗаполнено(Организация) Тогда
		Возврат;
	КонецЕсли;
	
	Запрос = Новый Запрос("
	|ВЫБРАТЬ ПЕРВЫЕ 2
	|	БанковскиеСчетаОрганизаций.Ссылка КАК БанковскийСчет
	|ИЗ
	|	Справочник.БанковскиеСчетаОрганизаций КАК БанковскиеСчетаОрганизаций
	|ГДЕ
	|	БанковскиеСчетаОрганизаций.Владелец = &Организация
	|	И НЕ БанковскиеСчетаОрганизаций.Закрыт
	|	И НЕ БанковскиеСчетаОрганизаций.ПометкаУдаления
	|");
	
	Запрос.УстановитьПараметр("Организация", Организация);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Количество() = 1 И Выборка.Следующий() Тогда
		БанковскийСчет = Выборка.БанковскийСчет;
	КонецЕсли;
	
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ПартнерПриИзмененииСервер(Партнер, Контрагент, БанковскийСчетКонтрагента, КонтактноеЛицо)
	
	ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Партнер, Контрагент);
	ПартнерыИКонтрагенты.ЗаполнитьКонтактноеЛицоПартнераПоУмолчанию(Партнер, КонтактноеЛицо);
	ЗаполнитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент, БанковскийСчетКонтрагента);
	
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ЗаполнитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент, БанковскийСчетКонтрагента)
	
	Если (ЗначениеЗаполнено(БанковскийСчетКонтрагента)
		И Контрагент = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(БанковскийСчетКонтрагента, "Владелец"))
		Или Не ЗначениеЗаполнено(Контрагент) Тогда
		Возврат;
	КонецЕсли;
	
	ТекстЗапроса = "
	|ВЫБРАТЬ ПЕРВЫЕ 2
	|	БанковскиеСчетаКонтрагентов.Ссылка КАК БанковскийСчетКонтрагента
	|ИЗ
	|	Справочник.БанковскиеСчетаКонтрагентов КАК БанковскиеСчетаКонтрагентов
	|ГДЕ
	|	БанковскиеСчетаКонтрагентов.Владелец = &Контрагент
	|	И НЕ БанковскиеСчетаКонтрагентов.Закрыт
	|	И НЕ БанковскиеСчетаКонтрагентов.ПометкаУдаления
	|";
	
	Запрос = Новый Запрос(ТекстЗапроса);
	Запрос.УстановитьПараметр("Контрагент", Контрагент);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Количество() = 1 И Выборка.Следующий() Тогда
		БанковскийСчетКонтрагента = Выборка.БанковскийСчетКонтрагента;
	Иначе
		БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПустаяСсылка();
	КонецЕсли;
	
КонецПроцедуры

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

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

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

&НаСервере
Процедура НастроитьЗависимыеЭлементыФормыНаСервере(ИзмененныйРеквизит = "")
	
	ДенежныеСредстваКлиентСервер.НастроитьЭлементыФормы(ЭтаФорма, ИзмененныйРеквизит, РеквизитыФормы(ЭтаФорма));
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция РеквизитыФормы(Форма)
	
	РеквизитыФормы = Новый Структура;
	
	Возврат РеквизитыФормы;
	
КонецФункции

#Область Локализация

&НаСервере
Процедура СформироватьНадписьНастройкаПодключенияПлатежнойСистемы()

	//++ Локализация
	
	НадписьНастройкаПодключенияПлатежнойСистемы = РозничныеПродажиЛокализация.СформироватьНадписьНастройкаПодключенияПлатежнойСистемы(Объект.Ссылка);
	
	Если Не ПравоДоступа("Добавление", Метаданные.Справочники.НастройкиПодключенияКСистемеБыстрыхПлатежей)
		Или Не ПравоДоступа("Чтение", Метаданные.Справочники.НастройкиПодключенияКСистемеБыстрыхПлатежей) Тогда
		Элементы.НадписьНастройкаПодключенияПлатежнойСистемы.Доступность = Ложь;
	КонецЕсли;
	//-- Локализация

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

&НаКлиенте
Процедура НадписьНастройкаПодключенияПлатежнойСистемыОбработкаНавигационнойСсылкиЛокализация(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	//++ Локализация
	ОчиститьСообщения();
	
	Если НавигационнаяСсылкаФорматированнойСтроки = "НастроитьПодключениеКПлатежнойСистеме"
		ИЛИ НавигационнаяСсылкаФорматированнойСтроки = "Добавить" Тогда
		
		СтандартнаяОбработка = Ложь;

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

//++ Локализация

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

		ОписаниеОповещения = Новый ОписаниеОповещения(
			"НастроитьПодключениеКПлатежнойСистемеЗавершение",
			ЭтотОбъект);
		
		ПараметрыПодключения = Новый Структура;
		ПараметрыПодключения.Вставить("БИК", Неопределено);
		ПараметрыПодключения.Вставить("ТорговаяТочка", Объект.Ссылка);
		ПараметрыПодключения.Вставить("ВариантНастройки", "c2b");
		
		СистемаБыстрыхПлатежейКлиент.ПодключитьСистемуБыстрыхПлатежей(
			ПараметрыПодключения,
			ОписаниеОповещения,
			Объект.Ссылка);

	КонецЕсли;
	
КонецПроцедуры

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

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

//-- Локализация

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

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

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