#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ДоговорыМеждуОрганизациямиЛокализация.ПриСозданииНаСервереФормаЭлемента(ЭтотОбъект, Отказ , СтандартнаяОбработка);
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
ЛокализацияРФ = ПолучитьФункциональнуюОпцию("ЛокализацияРФ");
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
УстановитьВидимостьОплатаВВалюте();
УправлениеЭлементамиВариантКурсаДоговора();
УстановитьТекстПодсказкиПорядокЗачетаДокументов();
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
ДоговорыМеждуОрганизациямиЛокализацияКлиент.ПриОткрытии(Отказ, ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
Если ФиксированнаяСуммаДоговора И Объект.Сумма = 0 Тогда
ТекстОшибки = НСтр("ru='Не заполнена сумма договора.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстОшибки,
Объект.Ссылка,
"Объект.Сумма",,
Отказ);
КонецЕсли;
Если Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре
И ЧислительКурсаВалютыДоговора = 0 Тогда
ТекстОшибки = НСтр("ru = 'Не заполнен курс валюты договора.'");
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки,
Объект.Ссылка,
"ЧислительКурсаВалютыДоговора",,
Отказ);
КонецЕсли;
Если Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре
И ЗнаменательКурсаВалютыДоговора = 0 Тогда
ТекстОшибки = НСтр("ru = 'Не заполнена кратность курса валюты договора.'");
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки,
Объект.Ссылка,
"ЗнаменательКурсаВалютыДоговора",,
Отказ);
КонецЕсли;
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
ДоговорыМеждуОрганизациямиЛокализация.ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ДоговорыМеждуОрганизациямиЛокализация.ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, ЭтотОбъект);
ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ЗаписатьЗначенияКурсаВалютыДоговора(ТекущийОбъект.Ссылка);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
УстановитьДоступностьЭлементовПоСтатусуСервер();
ОбновитьЗаголовокФормы();
ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект.ДополнительныеСвойства);
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если ИмяСобытия = "ИзмененРеквизитЗависящийОтСтатуса"
И Параметр.УникальныйИдентификатор = УникальныйИдентификатор Тогда
Если Объект.Согласован Тогда
Объект.Согласован = Ложь;
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса", 0.1, Истина);
КонецЕсли;
ДоговорыМеждуОрганизациямиЛокализацияКлиент.ОбработкаОповещения(ИмяСобытия, Параметр, Источник, ЭтотОбъект);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ВзаиморасчетыКлиент.ФормаПослеЗаписи(ЭтотОбъект);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
#Область УниверсальныеОбработчикиСобытий
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизита(Элемент)
ДоговорыМеждуОрганизациямиЛокализацияКлиент.ПриИзмененииРеквизита(
Элемент,
ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработкаНавигационнойСсылкиФормы(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДоговорыМеждуОрганизациямиЛокализацияКлиент.ОбработкаНавигационнойСсылкиФормы(Элемент,
НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка,
ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОкончанииИзмененияРеквизитаЛокализации(ИмяЭлемента, ДополнительныеПараметры) Экспорт
Если ДополнительныеПараметры.ТребуетсяВызовСервера Тогда
ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере(ИмяЭлемента, ДополнительныеПараметры.ПараметрыОбработки);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере(ИмяЭлемента, ПараметрыОбработки)
ДоговорыМеждуОрганизациямиЛокализация.ПриОкончанииИзмененияРеквизита(ИмяЭлемента, ЭтотОбъект, ПараметрыОбработки);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
Если Объект.Согласован
И Объект.Статус <> ПредопределенноеЗначение("Перечисление.СтатусыДоговоровКонтрагентов.Действует")
И Объект.Статус <> ПредопределенноеЗначение("Перечисление.СтатусыДоговоровКонтрагентов.Закрыт") Тогда
Объект.Согласован = Ложь;
КонецЕсли;
УстановитьДоступностьЭлементовПоСтатусуСервер();
КонецПроцедуры
&НаКлиенте
Процедура ТипДоговораПриИзменении(Элемент)
ТипДоговораПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДатаНачалаДействияПриИзменении(Элемент)
ДатаНачалаДействияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОчиститьСообщения();
ОрганизацияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПолучательПриИзменении(Элемент)
ОчиститьСообщения();
ОрганизацияПолучательПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ВалютаВзаиморасчетовПриИзменении(Элемент)
ОчиститьСообщения();
ВалютаВзаиморасчетовПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(
Элемент.ТекстРедактирования,
ЭтотОбъект,
"Объект.Комментарий");
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
Элементы.НаименованиеДляПечати.СписокВыбора.Очистить();
Элементы.НаименованиеДляПечати.СписокВыбора.Добавить(Объект.Наименование);
КонецПроцедуры
&НаКлиенте
Процедура КлассификацияЗадолженностиПриИзменении(Элемент)
Если КлассификацияЗадолженности = 1 Тогда
Объект.УстановленСрокОплаты = Истина;
Объект.СрокОплаты = 366;
Иначе
Объект.УстановленСрокОплаты = Ложь;
Объект.СрокОплаты = 0;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РежимНалогообложенияПриИзменении(Элемент)
Объект.НалогообложениеНДСОпределяетсяВДокументе = РежимНалогообложения = 1;
ЗаполнитьНалогообложениеНДС();
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура РежимРаздельногоУчетаНДСПриИзменении(Элемент)
Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе = РежимРаздельногоУчетаНДС = 1;
АктуализироватьЗакупкуПодДеятельность();
УстановитьСвойстваЭлементовНалогообложенияИРаздельногоУчетаНДС();
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ОплатаВВалютеПриИзменении(Элемент)
ОбработатьБанковскиеСчета();
КонецПроцедуры
&НаКлиенте
Процедура ВариантКурсаДоговораПриИзменении(Элемент)
ОчиститьСообщения();
ВариантКурсаДоговораПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПорядокРасчетовПриИзменении(Элемент)
Если Объект.ВариантКурсаДоговора = ПредопределенноеЗначение("Перечисление.ВариантыКурсаДоговора.ФиксированныйНаДатуОтгрузки")
И Объект.ПорядокРасчетов = ПредопределенноеЗначение("Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов") Тогда
Объект.ВариантКурсаДоговора = ПредопределенноеЗначение("Перечисление.ВариантыКурсаДоговора.Переменный");
КонецЕсли;
УправлениеЭлементамиВариантКурсаДоговора();
ПорядокРасчетовПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура НадписьЗнаменательКурсаВалютыДоговораОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Элементы.ГруппаРедактированиеКратностиКурса.Видимость = Истина;
Элементы.НадписьЗнаменательКурсаВалютыДоговора.Видимость = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура НадписьИсторияКурсаДоговораНажатие(Элемент)
Если Не ЗначениеЗаполнено(Объект.Ссылка) Или Модифицированность Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Данные еще не записаны.
|Переход к истории курса валюты договора возможен только после записи данных.'"));
Возврат;
КонецЕсли;
ПараметрыОткрытия = Новый Структура("Отбор", Новый Структура("Договор", Объект.Ссылка));
ОткрытьФорму("РегистрСведений.КурсыВалютРасчетовПоДоговорам.Форма.ФормаСпискаПоДоговору", ПараметрыОткрытия);
КонецПроцедуры
&НаКлиенте
Процедура ЧислительКурсаВалютыДоговораПриИзменении(Элемент)
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ЗнаменательКурсаВалютыДоговораПриИзменении(Элемент)
Элементы.ГруппаРедактированиеКратностиКурса.Видимость = Ложь;
Элементы.НадписьЗнаменательКурсаВалютыДоговора.Видимость = Истина;
Модифицированность = Истина;
УправлениеЭлементамиВариантКурсаДоговора();
КонецПроцедуры
&НаКлиенте
Процедура ПорядокЗачетаДокументовПриИзменении(Элемент)
УстановитьТекстПодсказкиПорядокЗачетаДокументов();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
#Область УниверсальныеОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЛокализации(Команда)
ДоговорыМеждуОрганизациямиЛокализацияКлиент.ВыполнитьКомандуЛокализации(Команда, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПродолжитьВыполнениеКомандыЛокализации(ИмяКоманды, ДополнительныеПараметры) Экспорт
Если ДополнительныеПараметры.ТребуетсяВызовСервера Тогда
ПродолжитьВыполнениеКомандыЛокализацииНаСервере(ИмяКоманды, ДополнительныеПараметры.ПараметрыОбработки);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПродолжитьВыполнениеКомандыЛокализацииНаСервере(ИмяКоманды, ПараметрыОбработки)
ДоговорыМеждуОрганизациямиЛокализация.ВыполнитьКомандуЛокализации(ЭтотОбъект, ИмяКоманды, ПараметрыОбработки);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура УстановитьИнтервал(Команда)
ОбщегоНазначенияУТКлиент.РедактироватьПериод(Объект,
Новый Структура("ДатаНачала, ДатаОкончания", "ДатаНачалаДействия", "ДатаОкончанияДействия"));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
ОбщегоНазначенияУТКлиент.РазрешитьРедактированиеРеквизитовОбъекта(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Изменить", "Доступность", Ложь);
Если НЕ ЗначениеЗаполнено(Объект.ВалютаВзаиморасчетов) Тогда
Объект.ВалютаВзаиморасчетов = ДоходыИРасходыСервер.ПолучитьВалютуУправленческогоУчета();
КонецЕсли;
ФиксированнаяСуммаДоговора = (Объект.Сумма <> 0);
НоваяАрхитектураВзаиморасчетов = ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов");
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
ЗаполнитьЗначенияКурсаВалютыДоговора();
Если Объект.НалогообложениеНДСОпределяетсяВДокументе Тогда
РежимНалогообложения = 1;
Иначе
РежимНалогообложения = 0;
КонецЕсли;
Если Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе Тогда
РежимРаздельногоУчетаНДС = 1;
Иначе
РежимРаздельногоУчетаНДС = 0;
КонецЕсли;
Если Объект.УстановленСрокОплаты Тогда
КлассификацияЗадолженности = 1;
Иначе
КлассификацияЗадолженности = 0;
КонецЕсли;
УстановитьПараметрыВыбораБанковскихСчетов();
НастроитьПараметрыВыбораСтатьиДвиженияДенежныхСредств();
УстановитьДоступностьЭлементовПоСтатусуСервер();
УправлениеЭлементамиГрафикИсполнения(Элементы, ФиксированнаяСуммаДоговора);
АктуализироватьЗакупкуПодДеятельность(Ложь);
УстановитьСвойстваЭлементовНалогообложенияИРаздельногоУчетаНДС();
ПараметрыЗаполнения = Справочники.ДоговорыМеждуОрганизациями.ПараметрыЗаполненияНалогообложенияНДС(Объект);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС,
Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
ОбновитьЗаголовокФормы();
Элементы.НаименованиеДляПечати.СписокВыбора.Очистить();
Элементы.НаименованиеДляПечати.СписокВыбора.Добавить(Объект.Наименование);
УстановитьУсловноеОформление();
ДоговорыМеждуОрганизациямиЛокализация.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ФиксированнаяСуммаДоговораПриИзменении(Элемент)
Если Не ФиксированнаяСуммаДоговора Тогда
Объект.Сумма = 0;
КонецЕсли;
УправлениеЭлементамиГрафикИсполнения(Элементы, ФиксированнаяСуммаДоговора);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УправлениеЭлементамиГрафикИсполнения(Элементы, ФиксированнаяСуммаДоговора)
Элементы.Сумма.Доступность = ФиксированнаяСуммаДоговора;
Элементы.Сумма.АвтоОтметкаНезаполненного = ФиксированнаяСуммаДоговора;
КонецПроцедуры
&НаСервере
Процедура УправлениеЭлементамиВариантКурсаДоговора()
ВидимостьЭлементов =
НоваяАрхитектураВзаиморасчетов
И Объект.ВалютаВзаиморасчетов <> ВалютаРегламентированногоУчета
И ЗначениеЗаполнено(ВалютаРегламентированногоУчета);
Элементы.ГруппаВариантКурсаДоговора.Видимость = ВидимостьЭлементов;
Если Не ВидимостьЭлементов Тогда
Возврат;
КонецЕсли;
ТекстПодсказки = "";
Если Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.Переменный Тогда
ТекстПодсказки = НСтр("ru='Задолженность переоценивается'");
ИначеЕсли Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.ФиксированныйНаДатуОтгрузки Тогда
ТекстПодсказки = НСтр("ru='Задолженность не переоценивается'");
ИначеЕсли Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре Тогда
ТекстПодсказки = НСтр("ru='Задолженность переоценивается по курсу договора'");
КонецЕсли;
Элементы.ВариантКурсаДоговора.Подсказка = ТекстПодсказки;
УстановитьСписокВыбораВариантаКурсаДоговора();
Элементы.ГруппаКурсУказанныйВДоговоре.Видимость =
Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре;
Если Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре Тогда
Элементы.ГруппаРедактированиеКратностиКурса.Видимость = Не Элементы.НадписьЗнаменательКурсаВалютыДоговора.Видимость;
Если ЗнаменательКурсаВалютыДоговора < 10 И Цел(ЗнаменательКурсаВалютыДоговора) = ЗнаменательКурсаВалютыДоговора Тогда
Элементы.НадписьЗнаменательКурсаВалютыДоговора.Ширина = 9;
Элементы.НадписьЗнаменательКурсаВалютыДоговора.РастягиватьПоГоризонтали = Ложь;
КонецЕсли;
СтрокаЗнаменательКурсаВалютыДоговора = ?(
ЗнаменательКурсаВалютыДоговора = Цел(ЗнаменательКурсаВалютыДоговора),
Формат(ЗнаменательКурсаВалютыДоговора, "ЧДЦ=0"),
Формат(ЗнаменательКурсаВалютыДоговора, "ЧДЦ=4"));
СтрокаЗнаменательКурсаВалютыДоговора = Новый ФорматированнаяСтрока(СтрокаЗнаменательКурсаВалютыДоговора,,,, "ЗнаменательКурсаВалютыДоговораНажатие");
НадписьЗнаменательКурсаВалютыДоговора = Новый ФорматированнаяСтрока(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 за'") + " ",
ВалютаРегламентированногоУчета),
СтрокаЗнаменательКурсаВалютыДоговора,
" ",
Строка(Объект.ВалютаВзаиморасчетов));
Элементы.ЗнаменательКурсаВалютыДоговора.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 за'"),
ВалютаРегламентированногоУчета);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьСписокВыбораВариантаКурсаДоговора()
НедоступенФиксированныйНаДатуОтгрузки =
Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов;
ТребуетсяИзменениеСпискаВыбора =
Элементы.ВариантКурсаДоговора.СписокВыбора.Количество() = 0
Или (Элементы.ВариантКурсаДоговора.СписокВыбора.Количество() = 2
И Не НедоступенФиксированныйНаДатуОтгрузки)
Или (Элементы.ВариантКурсаДоговора.СписокВыбора.Количество() = 3
И НедоступенФиксированныйНаДатуОтгрузки);
Если ТребуетсяИзменениеСпискаВыбора Тогда
Элементы.ВариантКурсаДоговора.СписокВыбора.Очистить();
Элементы.ВариантКурсаДоговора.СписокВыбора.Добавить(Перечисления.ВариантыКурсаДоговора.Переменный);
Если Не НедоступенФиксированныйНаДатуОтгрузки Тогда
Элементы.ВариантКурсаДоговора.СписокВыбора.Добавить(Перечисления.ВариантыКурсаДоговора.ФиксированныйНаДатуОтгрузки);
КонецЕсли;
Элементы.ВариантКурсаДоговора.СписокВыбора.Добавить(Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗначенияКурсаВалютыДоговора()
Если Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре Тогда
ЕстьКурс = РегистрыСведений.КурсыВалютРасчетовПоДоговорам.ЕстьЗаписиКурсаВалютыДоговора(Объект.Ссылка);
Если ЕстьКурс И Не ОчиститьКурсВалютыДоговора Тогда
ЗначенияКурса = РегистрыСведений.КурсыВалютРасчетовПоДоговорам.ПолучитьЗначенияКурсаВалютыДоговора(Объект.Ссылка, ТекущаяДатаСеанса());
Иначе
ЗначенияКурса = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(Объект.ВалютаВзаиморасчетов, ТекущаяДатаСеанса(), ВалютаРегламентированногоУчета);
КонецЕсли;
ЧислительКурсаВалютыДоговора = ЗначенияКурса.КурсЧислитель;
ЗнаменательКурсаВалютыДоговора = ЗначенияКурса.КурсЗнаменатель;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаписатьЗначенияКурсаВалютыДоговора(СсылкаНаЗаписанныйЭлемент)
Если ОчиститьКурсВалютыДоговора Тогда
РегистрыСведений.КурсыВалютРасчетовПоДоговорам.ОчиститьИсториюКурсовПоДоговору(СсылкаНаЗаписанныйЭлемент);
КонецЕсли;
Если Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре Тогда
РегистрыСведений.КурсыВалютРасчетовПоДоговорам.ЗаписатьЗначенияКурсаВалютыДоговора(
СсылкаНаЗаписанныйЭлемент,
ТекущаяДатаСеанса(),
ЧислительКурсаВалютыДоговора,
ЗнаменательКурсаВалютыДоговора);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьКурсВалютыДоговора()
Если РегистрыСведений.КурсыВалютРасчетовПоДоговорам.ЕстьЗаписиКурсаВалютыДоговора(Объект.Ссылка) Тогда
Если НоваяАрхитектураВзаиморасчетов
И Объект.ВалютаВзаиморасчетов <> ВалютаРегламентированногоУчета
И ЗначениеЗаполнено(ВалютаРегламентированногоУчета)
И Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'История курса валюты расчетов договора будет очищена и заполнена новыми значениями при записи договора.'"));
Иначе
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'История курса валюты расчетов договора будет очищена при записи договора.'"));
КонецЕсли;
ОчиститьКурсВалютыДоговора = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
КонецПроцедуры
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ТипДоговораПриИзмененииСервер()
ОбновитьЗаголовокФормы();
АктуализироватьЗакупкуПодДеятельность();
ЗаполнитьНалогообложениеНДС();
НалогообложениеНДСПриИзмененииСервер();
ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере("ТипДоговора", Неопределено);
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, "ПорядокРасчетов");
КонецПроцедуры
&НаСервере
Процедура ВалютаВзаиморасчетовПриИзмененииСервер()
Объект.ОплатаВВалюте = ВзаиморасчетыСервер.ПолучитьОплатуВВалютеПоУмолчанию();
ОбработатьБанковскиеСчета();
УстановитьВидимостьОплатаВВалюте();
ПроверитьКурсВалютыДоговора();
ПроверитьВалютыРеглУчетаИВариантКурсаДоговора();
ЗаполнитьЗначенияКурсаВалютыДоговора();
УправлениеЭлементамиВариантКурсаДоговора();
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
Если Не ЗначениеЗаполнено(Объект.НаправлениеДеятельности) Тогда
Возврат;
КонецЕсли;
РеквизитыНазначения = "УчетЗатрат, НалогообложениеНДСОпределяетсяВДокументе";
ЗначенияРеквизитовНазначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.НаправлениеДеятельности, РеквизитыНазначения);
Если ЗначенияРеквизитовНазначения.УчетЗатрат
И Объект.ТипДоговора = Перечисления.ТипыДоговоровМеждуОрганизациями.КупляПродажа Тогда
Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе = ЗначенияРеквизитовНазначения.НалогообложениеНДСОпределяетсяВДокументе;
РежимРаздельногоУчетаНДС = ?(Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе, 1, 0);
АктуализироватьЗакупкуПодДеятельность();
КонецЕсли;
УстановитьСвойстваЭлементовНалогообложенияИРаздельногоУчетаНДС();
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
УстановитьПараметрыВыбораОрганизацииПолучателя();
ПроверитьИОчиститьОрганизациюПолучателя();
ЗаполнитьНалогообложениеНДС();
НалогообложениеНДСПриИзмененииСервер();
ОбработатьБанковскиеСчета();
ЗаполнитьБанковскийСчетОрганизацииПоУмолчанию(Объект.Организация, Объект.ОплатаВВалюте, Объект.БанковскийСчет, ВалютаРегламентированногоУчета);
УстановитьВидимостьОплатаВВалюте();
ПроверитьКурсВалютыДоговора();
ПроверитьВалютыРеглУчетаИВариантКурсаДоговора();
УправлениеЭлементамиВариантКурсаДоговора();
КонецПроцедуры
&НаСервере
Процедура ДатаНачалаДействияПриИзмененииНаСервере()
АктуализироватьЗакупкуПодДеятельность();
ЗаполнитьНалогообложениеНДС();
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
&НаСервере
Процедура ВариантКурсаДоговораПриИзмененииНаСервере()
ПроверитьКурсВалютыДоговора();
Если Не (ЗначениеЗаполнено(ЧислительКурсаВалютыДоговора) И ЗначениеЗаполнено(ЗнаменательКурсаВалютыДоговора)) Тогда
ЗаполнитьЗначенияКурсаВалютыДоговора();
КонецЕсли;
УправлениеЭлементамиВариантКурсаДоговора();
КонецПроцедуры
&НаСервере
Процедура ПорядокРасчетовПриИзмененииНаСервере()
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "ПорядокРасчетов")
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыВыбораОрганизацииПолучателя()
МассивПараметров = Новый Массив;
Если ЗначениеЗаполнено(Объект.Организация) Тогда
МассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.ВалютаРегламентированногоУчета",
ВалютаРегламентированногоУчета));
МассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.СтранаРегистрации",
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Организация, "СтранаРегистрации")));
КонецЕсли;
Элементы.ОрганизацияПолучатель.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);
КонецПроцедуры
&НаСервере
Процедура ПроверитьИОчиститьОрганизациюПолучателя()
Если ЗначениеЗаполнено(Объект.Организация)
И ЗначениеЗаполнено(Объект.ОрганизацияПолучатель) Тогда
СтруктураПроверки = Справочники.Организации.СтраныРегистрацииИВалютыРегламентированногоУчетаСовпадают(Объект.Организация, Объект.ОрганизацияПолучатель);
Если Не СтруктураПроверки.ВалютыСовпадают Или Не СтруктураПроверки.СтраныСовпадают Тогда
Объект.ОрганизацияПолучатель = Неопределено;
КонецЕсли;
КонецЕсли
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПолучательПриИзмененииСервер()
ЗаполнитьБанковскийСчетОрганизацииПоУмолчанию(Объект.ОрганизацияПолучатель, Объект.ОплатаВВалюте, Объект.БанковскийСчетПолучателя, ВалютаРегламентированногоУчета);
АктуализироватьЗакупкуПодДеятельность();
УстановитьСвойстваЭлементовНалогообложенияИРаздельногоУчетаНДС();
ПроверитьКурсВалютыДоговора();
ПроверитьВалютыРеглУчетаИВариантКурсаДоговора();
УправлениеЭлементамиВариантКурсаДоговора();
КонецПроцедуры
&НаСервере
Процедура НалогообложениеНДСПриИзмененииСервер()
Если Не УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаПродажи(Объект.НалогообложениеНДС) Тогда
Объект.СтавкаНДС = Справочники.СтавкиНДС.БезНДС;
КонецЕсли;
УстановитьСвойстваЭлементовНалогообложенияИРаздельногоУчетаНДС();
КонецПроцедуры
&НаСервере
Процедура ОбработатьБанковскиеСчета()
УстановитьПараметрыВыбораБанковскихСчетов();
Если НЕ БанковскийСчетСоответствуетПорядкуОплаты() Тогда
Объект.БанковскийСчет = Неопределено;
КонецЕсли;
ЗаполнитьБанковскийСчетОрганизацииПоУмолчанию(Объект.Организация, Объект.ОплатаВВалюте, Объект.БанковскийСчет, ВалютаРегламентированногоУчета);
Если НЕ БанковскийСчетСоответствуетПорядкуОплаты() Тогда
Объект.БанковскийСчетПолучателя = Неопределено;
КонецЕсли;
ЗаполнитьБанковскийСчетОрганизацииПоУмолчанию(Объект.ОрганизацияПолучатель, Объект.ОплатаВВалюте, Объект.БанковскийСчетПолучателя, ВалютаРегламентированногоУчета);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьОплатаВВалюте()
Элементы.ОплатаВВалюте.Видимость = Не Объект.ВалютаВзаиморасчетов = ВалютаРегламентированногоУчета Или Объект.ОплатаВВалюте;
КонецПроцедуры
#КонецОбласти
#Область КонтрольНесогласованныхИзменений
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент)
Если Элемент.Имя = "ОрганизацияПолучатель" Тогда
ОрганизацияПолучательПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Организация" Тогда
ОрганизацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВалютаВзаиморасчетов" Тогда
ВалютаВзаиморасчетовПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ОплатаВВалюте" Тогда
ОплатаВВалютеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТипДоговора" Тогда
ТипДоговораПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.ДатаНачалаДействия.Имя Тогда
ДатаНачалаДействияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПорядокРасчетов" Тогда
ПорядокРасчетовПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВариантКурсаДоговора" Тогда
ВариантКурсаДоговораПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЧислительКурсаВалютыДоговора" Тогда
ЧислительКурсаВалютыДоговораПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗнаменательКурсаВалютыДоговора" Тогда
ЗнаменательКурсаВалютыДоговораПриИзменении(Элемент);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтотОбъект, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда)
Если Команда.Имя = "УстановитьИнтервал" Тогда
УстановитьИнтервал(Команда);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтотОбъект, Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПриИзменении.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Команда_УстановитьДоступностьЭлементовПоСтатусуСервер(Команда)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Команды.Свойство(Команда.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломИзменения_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломИзменения.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередУдалением_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередУдалением.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломДобавления_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ, Копирование, Родитель, Группа)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломДобавления.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса()
УстановитьДоступностьЭлементовПоСтатусуСервер();
ОбщегоНазначенияУТКлиент.ПослеИзмененияРеквизитаЗависящегоОтСтатуса(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Процедура УстановитьДоступностьЭлементовПоСтатусуСервер()
УстановитьПодписку = Ложь;
Если Объект.Статус = Перечисления.СтатусыДоговоровКонтрагентов.НеСогласован Тогда
УстановитьПодписку = Ложь;
ИначеЕсли Объект.Статус = Перечисления.СтатусыДоговоровКонтрагентов.Закрыт Или
Объект.Статус = Перечисления.СтатусыДоговоровКонтрагентов.Действует Тогда
УстановитьПодписку = Объект.Согласован;
КонецЕсли;
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("Дата");
МассивЭлементов.Добавить("Номер");
МассивЭлементов.Добавить("ДатаНачалаДействия");
МассивЭлементов.Добавить("ДатаОкончанияДействия");
МассивЭлементов.Добавить("ОрганизацияПолучатель");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("ВалютаВзаиморасчетов");
МассивЭлементов.Добавить("ОплатаВВалюте");
МассивЭлементов.Добавить("ТипДоговора");
МассивЭлементов.Добавить("ПорядокРасчетов");
МассивЭлементов.Добавить("УстановитьИнтервал");
ОбщегоНазначенияУТ.УстановитьПодпискуНаСобытияИзмененияЭлементовФормы(ЭтотОбъект, МассивЭлементов, УстановитьПодписку);
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыВыбораБанковскихСчетов()
МассивПараметров = Новый Массив;
Если НЕ Объект.ОплатаВВалюте Тогда
МассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.ВалютаДенежныхСредств", ВалютаРегламентированногоУчета));
Иначе
МассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.ВалютаДенежныхСредств", Новый ФиксированныйМассив(ИностранныеВалюты())));
КонецЕсли;
МассивПараметров.Добавить(Новый ПараметрВыбора("ВыборСчетовГоловнойОрганизации", Неопределено));
МассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.Закрыт", Ложь));
ПараметрыВыбораСчета = Новый ФиксированныйМассив(МассивПараметров);
Элементы.БанковскийСчет.ПараметрыВыбора = ПараметрыВыбораСчета;
Элементы.БанковскийСчетПолучателя.ПараметрыВыбора = ПараметрыВыбораСчета;
КонецПроцедуры
&НаСервере
Функция ИностранныеВалюты()
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Валюты.Ссылка КАК Ссылка
|ИЗ
| Справочник.Валюты КАК Валюты
|ГДЕ
| Валюты.Ссылка <> &ВалютаРегламентированногоУчета
|");
Запрос.УстановитьПараметр("ВалютаРегламентированногоУчета", ВалютаРегламентированногоУчета);
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции
&НаСервере
Функция БанковскийСчетСоответствуетПорядкуОплаты()
Соответствует = Истина;
Если ЗначениеЗаполнено(Объект.БанковскийСчет) Тогда
ВалютаСчета = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.БанковскийСчет, "ВалютаДенежныхСредств");
Если Объект.ОплатаВВалюте Тогда
Соответствует = ВалютаСчета <> ВалютаРегламентированногоУчета;
Иначе
Соответствует = ВалютаСчета = ВалютаРегламентированногоУчета;
КонецЕсли;
КонецЕсли;
Возврат Соответствует;
КонецФункции
&НаСервереБезКонтекста
Процедура ЗаполнитьБанковскийСчетОрганизацииПоУмолчанию(ВладелецСчета, ОплатаВВалюте, СчетКЗаполнению, ВалютаРегламентированногоУчета)
Если ЗначениеЗаполнено(СчетКЗаполнению)
ИЛИ НЕ ЗначениеЗаполнено(ВладелецСчета) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос("
|ВЫБРАТЬ ПЕРВЫЕ 2
| БанковскиеСчетаОрганизаций.Ссылка КАК БанковскийСчет
|ИЗ
| Справочник.БанковскиеСчетаОрганизаций КАК БанковскиеСчетаОрганизаций
|ГДЕ
| БанковскиеСчетаОрганизаций.Владелец = &Организация
| И ((БанковскиеСчетаОрганизаций.ВалютаДенежныхСредств = &ВалютаРегл И НЕ &ОплатаВВалюте)
| ИЛИ (БанковскиеСчетаОрганизаций.ВалютаДенежныхСредств <> &ВалютаРегл И &ОплатаВВалюте))
| И НЕ БанковскиеСчетаОрганизаций.ПометкаУдаления
|");
Запрос.УстановитьПараметр("Организация", ВладелецСчета);
Запрос.УстановитьПараметр("ОплатаВВалюте", ОплатаВВалюте);
Запрос.УстановитьПараметр("ВалютаРегл", ВалютаРегламентированногоУчета);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() = 1 И Выборка.Следующий() Тогда
СчетКЗаполнению = Выборка.БанковскийСчет;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьЗаголовокФормы()
Если Объект.ТипДоговора = Перечисления.ТипыДоговоровМеждуОрганизациями.КупляПродажа Тогда
ПредставлениеТипа = НСтр("ru='Договор купли-продажи'");
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоровМеждуОрганизациями.Комиссионный Тогда
ПредставлениеТипа = НСтр("ru='Договор комиссии'");
Иначе
ПредставлениеТипа = Заголовок;
КонецЕсли;
Если Объект.ТипДоговора = Перечисления.ТипыДоговоровМеждуОрганизациями.КупляПродажа Тогда
Элементы.ГруппаОрганизация.Заголовок = НСтр("ru='Поставщик'");
Элементы.ГруппаОрганизацияПолучатель.Заголовок = НСтр("ru='Покупатель'");
Элементы.ГруппаФинансовогоУчета.Заголовок = НСтр("ru='Группа учета расчетов с покупателем'");
Элементы.ГруппаФинансовогоУчетаПолучателя.Заголовок = НСтр("ru='Группа учета расчетов с поставщиком'");
Иначе
Элементы.ГруппаОрганизация.Заголовок = НСтр("ru='Комитент'");
Элементы.ГруппаОрганизацияПолучатель.Заголовок = НСтр("ru='Комиссионер'");
Элементы.ГруппаФинансовогоУчета.Заголовок = НСтр("ru='Группа учета расчетов с комиссионером'");
Элементы.ГруппаФинансовогоУчетаПолучателя.Заголовок = НСтр("ru='Группа учета расчетов с комитентом'");
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
Заголовок = ПредставлениеТипа + " (" + НСтр("ru='создание'") + ")";
Иначе
Заголовок = Объект.Наименование + " (" + ПредставлениеТипа + ")";
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура НастроитьПараметрыВыбораСтатьиДвиженияДенежныхСредств()
МассивПараметровВыбора = Новый Массив;
ПараметрВыбора = Новый ПараметрВыбора("Отбор.ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента);
МассивПараметровВыбора.Добавить(ПараметрВыбора);
Элементы.СтатьяДвиженияДенежныхСредств.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
МассивПараметровВыбора.Очистить();
ПараметрВыбора = Новый ПараметрВыбора("Отбор.ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ОплатаПоставщику);
МассивПараметровВыбора.Добавить(ПараметрВыбора);
Элементы.СтатьяДвиженияДенежныхСредствПолучателя.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалогообложениеНДС()
ПараметрыЗаполнения = Справочники.ДоговорыМеждуОрганизациями.ПараметрыЗаполненияНалогообложенияНДС(Объект);
Если ЗначениеЗаполнено(Объект.НалогообложениеНДС)
И Объект.НалогообложениеНДСОпределяетсяВДокументе Тогда
Объект.НалогообложениеНДС = Неопределено;
ИначеЕсли Не Объект.НалогообложениеНДСОпределяетсяВДокументе Тогда
УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС,
Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
УстановитьСвойстваЭлементовНалогообложенияИРаздельногоУчетаНДС();
КонецПроцедуры
&НаСервере
Процедура УстановитьСвойстваЭлементовНалогообложенияИРаздельногоУчетаНДС()
Элементы.НалогообложениеНДС.Доступность = Не Объект.НалогообложениеНДСОпределяетсяВДокументе;
Элементы.ЗакупкаПодДеятельность.Доступность = Не Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе;
Элементы.СтавкаНДС.Доступность = Объект.НалогообложениеНДСОпределяетсяВДокументе
Или УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаПродажи(Объект.НалогообложениеНДС);
Элементы.ГруппаРаздельныйУчетНДС.Видимость = (Объект.ТипДоговора = Перечисления.ТипыДоговоровМеждуОрганизациями.КупляПродажа);
КонецПроцедуры
&НаСервере
Процедура АктуализироватьЗакупкуПодДеятельность(ЗаполнитьВидДеятельности = Истина)
ПараметрыЗаполнения = Справочники.ДоговорыМеждуОрганизациями.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
Если ЗначениеЗаполнено(Объект.ЗакупкаПодДеятельность)
И Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе Тогда
Объект.ЗакупкаПодДеятельность = Неопределено;
ИначеЕсли ЗаполнитьВидДеятельности
И Не Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе Тогда
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(Объект.ЗакупкаПодДеятельность, ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(Элементы.ЗакупкаПодДеятельность,
Объект.ЗакупкаПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
ВидимостьРежимРаздельногоУчетаНДС = Элементы.ЗакупкаПодДеятельность.Видимость;
Элементы.РежимРаздельногоУчетаНДСОпределяетсяЗначением.Видимость = ВидимостьРежимРаздельногоУчетаНДС;
Элементы.РежимРаздельногоУчетаНДС.Видимость = ВидимостьРежимРаздельногоУчетаНДС;
КонецПроцедуры
&НаСервере
Процедура ПроверитьВалютыРеглУчетаИВариантКурсаДоговора()
Если Объект.ВалютаВзаиморасчетов = ВалютаРегламентированногоУчета Тогда
Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.Переменный;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьТекстПодсказкиПорядокЗачетаДокументов()
ТекстПодсказки = "";
Если Объект.ПорядокЗачетаОплатНакладных = ПредопределенноеЗначение("Перечисление.ПорядкиЗачетаОплатНакладных.ПоДатеВидуДокумента") Тогда
ТекстПодсказки = НСтр("ru='По дате и виду документа – постоплаты будут сначала распределяться на накладные с минимальной датой проведения документа, накладные будут зачитывать авансы с минимальной датой документа.
|Документы в пределах дня будут зачитываться по виду: сначала переносы авансов и задолженности, накладные, возвраты товаров и корректировки накладных, оплаты, возвраты ДС и пр.'");
ИначеЕсли Объект.ПорядокЗачетаОплатНакладных = ПредопределенноеЗначение("Перечисление.ПорядкиЗачетаОплатНакладных.ПоДатеВремениДокумента") Тогда
ТекстПодсказки = НСтр("ru='По дате и времени документа – постоплаты будут сначала распределяться на накладные с минимальной датой проведения документа, накладные будут зачитывать авансы с минимальной датой документа.
|Документы в пределах дня будут зачитываться по времени проведения, типу и номеру.'");
ИначеЕсли Объект.ПорядокЗачетаОплатНакладных = ПредопределенноеЗначение("Перечисление.ПорядкиЗачетаОплатНакладных.ПоДатеПлановогоПогашения") Тогда
ТекстПодсказки = НСтр("ru='По плановой дате погашения – постоплаты будут сначала распределяться на накладные с минимальной датой платежа, накладные будут зачитывать авансы с минимальной датой погашения.
|Документы в пределах дня будут зачитываться по типу и номеру.'");
Иначе
ТекстПодсказки = Константы.ПорядокЗачетаОплатНакладных.Получить();
КонецЕсли;
Элементы.ПорядокЗачетаОплатНакладных.Подсказка = ТекстПодсказки;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область Локализация
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
#КонецОбласти