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