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

файл

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура РасчетыПоАвансамВалютаВзаиморасчетовПриИзменении(Элемент)
	
	ТекущиеДанные = Элементы.РасчетыПоАвансам.ТекущиеДанные;
	ВалютаВзаиморасчетовПриИзменении(ТекущиеДанные);

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

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

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

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

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


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


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

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

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

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

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

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

&НаСервере
Процедура УстановитьУсловноеОформление()

	УсловноеОформление.Элементы.Очистить();

	//

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

	//

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

	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Не указан'"));

	//++ НЕ УТ

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

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасчетыПоРеализацииРасчетныйДокумент.Имя);

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

#Область ОбщиеОбработчикиСобытийТабличныхЧастейРасчетыПоРеализациямИРасчетыПоАвансам

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

		Если ТипЗнч(СтрокаТаблицы.ОбъектРасчетов) <> ТипЗнч(ВыбранноеЗначение) Тогда
			СтрокаТаблицы.ОбъектРасчетов = ВыбранноеЗначение;
			Если ВыбранноеЗначение = ПредопределенноеЗначение("Перечисление.ТипыДоговоровМеждуОрганизациями.КупляПродажа") Тогда
				СтрокаТаблицы.ТипРасчетов = НСтр("ru = 'Договор купли-продажи'");
			ИначеЕсли ВыбранноеЗначение = ПредопределенноеЗначение("Перечисление.ТипыДоговоровМеждуОрганизациями.Комиссионный") Тогда
				СтрокаТаблицы.ТипРасчетов = НСтр("ru = 'Договор комиссии'");
			Иначе
				СтрокаТаблицы.ТипРасчетов = Строка(ТипЗнч(ВыбранноеЗначение));
			КонецЕсли;
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ВалютаВзаиморасчетовПриИзменении(СтрокаТаблицы)
	
	Если СтрокаТаблицы.Сумма <> 0 Тогда
		СуммаПриИзменении(СтрокаТаблицы);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

&НаСервереБезКонтекста
Функция СформироватьПрефикс(Организация)
	
	Возврат Документы.ВводОстатков.УстановитьПрефикс(Организация);
	
КонецФункции

&НаКлиенте
Процедура ДополнитьНомер(Номер)
		
	Если Не Объект.ДополнятьНомера
		Или Не ЗначениеЗаполнено(Номер) Тогда
		Возврат;
	КонецЕсли;
	
	Результат = СокрЛП(Номер);
	
	Разделитель = ?(ПустаяСтрока(Объект.Префикс), "", "-");
	
	Начало = СокрЛП(Объект.Префикс) + Разделитель;
	
	Пока СтрДлина(Результат) < 11 - СтрДлина(Начало) Цикл
		Результат = "0" + Результат;
	КонецЦикла;
	
	Если СтрДлина(Результат) <= 11 - СтрДлина(Начало) Тогда
		Результат = Начало + Результат;
	КонецЕсли;
	
	Номер = Результат;
	
КонецПроцедуры

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

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

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

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

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

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

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

//++ НЕ УТ

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

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

//-- НЕ УТ

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

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

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