Ввод начальных остатков / Форма расчеты по договорам кредитов и депозитов / Модуль формы

файл

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр, Источник);
	
КонецПроцедуры

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

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

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

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

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


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

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

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

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

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

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

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыРасчетыПоКредитамДепозитам

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

&НаКлиенте
Процедура РасчетыПоКредитамДепозитамПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)

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

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

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

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

&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)

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

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

&НаКлиенте
Процедура СуммаПриИзменении(Элемент)

	ТекущиеДанные = Элементы.РасчетыПоКредитамДепозитам.ТекущиеДанные;
	РассчитатьСуммы(
		ТекущиеДанные.Сумма,
		ТекущиеДанные.СуммаРегл,
		ТекущиеДанные.СуммаУпр,
		ТекущиеДанные.ВалютаВзаиморасчетов);

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
	
	УстановитьВидимость();
	УстановитьЗаголовок();
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура УстановитьПараметрыВыбораДоговора()

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

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

&НаСервереБезКонтекста
Функция РеквизитыДоговора(Договор)

	Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Договор,"Партнер,Контрагент,ВалютаВзаиморасчетов,ХарактерДоговора");

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

&НаСервере
Процедура ПрочитатьВалютуДоговоров()

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

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

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

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

//++ НЕ УТ

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

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

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

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