Заказ клиента / Реквизиты печати / Модуль формы

файл

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

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

	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);

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

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

&НаКлиенте
Процедура ПоказатьВопросПередЗакрытиемЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
	
	Если ОтветНаВопрос = "Закрыть" Тогда
		ЗакрытьФормуПринудительно = Истина;
		Закрыть(Неопределено);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОК(Команда)
	
	Если Не ТолькоПросмотр Тогда
		СохранитьПараметры = Истина;
	КонецЕсли;
	
	Закрыть();

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

&НаКлиенте
Процедура ПерезаполнитьНазначениеПлатежа(Команда)
	ЗаполнитьНазначениеПлатежа();
КонецПроцедуры

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

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

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

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

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

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

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

&НаСервере
Процедура ЗаполнитьНазначениеПлатежа()
	НазначениеПлатежа = НСтр("ru='По счету №%НомерЗаказа% от %ДатаЗаказа%'");
	НазначениеПлатежа = СтрЗаменить(НазначениеПлатежа,"%НомерЗаказа%",НомерЗаказа);
	НазначениеПлатежа = СтрЗаменить(НазначениеПлатежа,"%ДатаЗаказа%",ДатаЗаказа);
КонецПроцедуры

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

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

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