#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("СправочникСсылка.Партнеры") Тогда
ЗаполнитьНаОснованииПартнера(ДанныеЗаполнения, ДанныеЗаполнения);
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
ЗаполнитьПоОтбору(ДанныеЗаполнения);
КонецЕсли;
ИнициализироватьСправочник(ДанныеЗаполнения);
ПараметрыВыбораСтатейИАналитик = Справочники.ДоговорыАренды.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ОбработкаЗаполнения(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
МассивНепроверяемыхРеквизитов = Новый Массив;
ПараметрыРеквизитовОбъекта =
УчетАрендованныхОСКлиентСервер.ЗначенияСвойствЗависимыхРеквизитов_ДоговорыАренды(ЭтотОбъект, ВспомогательныеРеквизиты());
ОбщегоНазначенияУТ.ОтключитьПроверкуЗаполненияРеквизитовОбъекта(ПараметрыРеквизитовОбъекта, МассивНепроверяемыхРеквизитов);
ПроверитьОбъект(Отказ);
ПараметрыВыбораСтатейИАналитик = Справочники.ДоговорыАренды.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты, ПараметрыВыбораСтатейИАналитик);
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов);
КонецПроцедуры
Процедура ПриКопировании(ОбъектКопирования)
Согласован = Ложь;
ДатаНачалаДействия = '00010101';
ДатаОкончанияДействия = '00010101';
ИнициализироватьСправочник();
КонецПроцедуры
Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ОбщегоНазначенияУТ.ИзменитьПризнакСогласованностиСправочника(
ЭтотОбъект, Перечисления.СтатусыДоговоровКонтрагентов.НеСогласован);
ХарактерДоговора = Перечисления.ХарактерыДоговоровФинансовыхИнструментов.Аренда;
Если ТипДоговора = Перечисления.ТипыДоговоровАренды.Лизинг Тогда
УчитыватьПредметыАрендыВРеглУчете = Истина;
УчитыватьПредметыАрендыВУпрУчете = Истина;
КонецЕсли;
Если УникальныйНомерВалютногоКонтроля <> "" Тогда
КонтрагентЮрФизЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "ЮрФизЛицо");
ВалютныйКонтроль = ДенежныеСредстваКлиентСерверЛокализация.ПрименяетсяВалютныйКонтроль(КонтрагентЮрФизЛицо);
Если Не ВалютныйКонтроль Тогда
УникальныйНомерВалютногоКонтроля = "";
КонецЕсли;
КонецЕсли;
ПараметрыВыбораСтатейИАналитик = Справочники.ДоговорыАренды.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ПередЗаписью(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ИнициализацияИЗаполнение
Процедура ЗаполнитьНаОснованииПартнера(Знач Партнер, ДанныеЗаполнения)
ДанныеЗаполнения = Новый Структура;
ДанныеЗаполнения.Вставить("Партнер", Партнер);
ДанныеЗаполнения.Вставить("Контрагент", ПартнерыИКонтрагенты.ПолучитьКонтрагентаПартнераПоУмолчанию(Партнер));
ДанныеЗаполнения.Вставить("КонтактноеЛицо", ПартнерыИКонтрагенты.ПолучитьКонтактноеЛицоПартнераПоУмолчанию(Партнер));
ЗаполнитьБанковскийСчетКонтрагентаПоУмолчанию(ДанныеЗаполнения);
КонецПроцедуры
Процедура ЗаполнитьПоОтбору(Знач ДанныеЗаполнения)
Если ДанныеЗаполнения.Свойство("ПартнерПоУмолчанию") Тогда
ДанныеЗаполнения.Вставить("Партнер", ДанныеЗаполнения.ПартнерПоУмолчанию);
ИначеЕсли ДанныеЗаполнения.Свойство("Партнер") Тогда
ИначеЕсли ДанныеЗаполнения.Свойство("Контрагент") Тогда
ДанныеЗаполнения.Вставить("Партнер", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеЗаполнения.Контрагент, "Партнер"));
КонецЕсли;
Если ДанныеЗаполнения.Свойство("Партнер") Тогда
Если НЕ (ДанныеЗаполнения.Свойство("Контрагент") И ЗначениеЗаполнено(ДанныеЗаполнения.Контрагент)) Тогда
ДанныеЗаполнения.Вставить("Контрагент", ПартнерыИКонтрагенты.ПолучитьКонтрагентаПартнераПоУмолчанию(ДанныеЗаполнения.Партнер));
КонецЕсли;
Если НЕ (ДанныеЗаполнения.Свойство("КонтактноеЛицо") И ЗначениеЗаполнено(ДанныеЗаполнения.КонтактноеЛицо)) Тогда
ДанныеЗаполнения.Вставить("КонтактноеЛицо", ПартнерыИКонтрагенты.ПолучитьКонтактноеЛицоПартнераПоУмолчанию(ДанныеЗаполнения.Партнер));
КонецЕсли;
КонецЕсли;
Если ДанныеЗаполнения.Свойство("Организация") Тогда
Если УчетАрендованныхОС.ИспользуетсяУчетАрендыПоФСБУ25_2018(ДанныеЗаполнения.Организация) Тогда
ТипДоговора = Перечисления.ТипыДоговоровАренды.Аренда;
Иначе
ТипДоговора = Перечисления.ТипыДоговоровАренды.Лизинг;
КонецЕсли;
КонецЕсли;
ЗаполнитьБанковскийСчетОрганизацииПоУмолчанию(ДанныеЗаполнения);
ЗаполнитьБанковскийСчетКонтрагентаПоУмолчанию(ДанныеЗаполнения);
Если ДанныеЗаполнения.Свойство("ВалютаВзаиморасчетов") И Не ДанныеЗаполнения.Свойство("ОплатаВВалюте") Тогда
ДанныеЗаполнения.Вставить("ОплатаВВалюте",
ВзаиморасчетыСервер.ПолучитьОплатуВВалютеПоУмолчанию());
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьБанковскийСчетОрганизацииПоУмолчанию(ДанныеЗаполнения)
Если ДанныеЗаполнения.Свойство("БанковскийСчет") И ЗначениеЗаполнено(ДанныеЗаполнения.БанковскийСчет)
ИЛИ НЕ (ДанныеЗаполнения.Свойство("Организация") И ЗначениеЗаполнено(ДанныеЗаполнения.Организация)) Тогда
Возврат;
КонецЕсли;
ОплатаВВалюте = ДанныеЗаполнения.Свойство("ОплатаВВалюте") И ДанныеЗаполнения.ОплатаВВалюте;
Запрос = Новый Запрос("
|ВЫБРАТЬ ПЕРВЫЕ 2
| БанковскиеСчетаОрганизаций.Ссылка КАК БанковскийСчет
|ИЗ
| Справочник.БанковскиеСчетаОрганизаций КАК БанковскиеСчетаОрганизаций
|ГДЕ
| БанковскиеСчетаОрганизаций.Владелец = &Организация
| И ((БанковскиеСчетаОрганизаций.ВалютаДенежныхСредств = &ВалютаРегл И НЕ &ОплатаВВалюте)
| ИЛИ (БанковскиеСчетаОрганизаций.ВалютаДенежныхСредств <> &ВалютаРегл И &ОплатаВВалюте))
| И НЕ БанковскиеСчетаОрганизаций.ПометкаУдаления
|");
Запрос.УстановитьПараметр("Организация", ДанныеЗаполнения.Организация);
Запрос.УстановитьПараметр("ОплатаВВалюте", ОплатаВВалюте);
Запрос.УстановитьПараметр("ВалютаРегл", ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация));
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() = 1 И Выборка.Следующий() Тогда
ДанныеЗаполнения.Вставить("БанковскийСчет", Выборка.БанковскийСчет);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьБанковскийСчетКонтрагентаПоУмолчанию(ДанныеЗаполнения)
Если ДанныеЗаполнения.Свойство("БанковскийСчетКонтрагента") И ЗначениеЗаполнено(ДанныеЗаполнения.БанковскийСчетКонтрагента)
ИЛИ НЕ (ДанныеЗаполнения.Свойство("Контрагент") И ЗначениеЗаполнено(ДанныеЗаполнения.Контрагент)) Тогда
Возврат;
КонецЕсли;
ОплатаВВалюте = ДанныеЗаполнения.Свойство("ОплатаВВалюте") И ДанныеЗаполнения.ОплатаВВалюте;
Запрос = Новый Запрос("
|ВЫБРАТЬ ПЕРВЫЕ 2
| БанковскиеСчетаКонтрагентов.Ссылка КАК БанковскийСчетКонтрагента
|ИЗ
| Справочник.БанковскиеСчетаКонтрагентов КАК БанковскиеСчетаКонтрагентов
|ГДЕ
| БанковскиеСчетаКонтрагентов.Владелец = &Контрагент
| И ((БанковскиеСчетаКонтрагентов.ВалютаДенежныхСредств = &ВалютаРегл И НЕ &ОплатаВВалюте)
| ИЛИ (БанковскиеСчетаКонтрагентов.ВалютаДенежныхСредств <> &ВалютаРегл И &ОплатаВВалюте))
| И НЕ БанковскиеСчетаКонтрагентов.ПометкаУдаления
|");
Запрос.УстановитьПараметр("Контрагент", ДанныеЗаполнения.Контрагент);
Запрос.УстановитьПараметр("ОплатаВВалюте", ОплатаВВалюте);
Запрос.УстановитьПараметр("ВалютаРегл", ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация));
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() = 1 И Выборка.Следующий() Тогда
ДанныеЗаполнения.Вставить("БанковскийСчетКонтрагента", Выборка.БанковскийСчетКонтрагента);
КонецЕсли;
КонецПроцедуры
Процедура ИнициализироватьСправочник(ДанныеЗаполнения = Неопределено) Экспорт
Ответственный = Пользователи.ТекущийПользователь();
Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") Или НЕ ДанныеЗаполнения.Свойство("Организация") Тогда
Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация);
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") Или НЕ ДанныеЗаполнения.Свойство("ВалютаВзаиморасчетов") Тогда
Если Не ЗначениеЗаполнено(ВалютаВзаиморасчетов) Тогда
ВалютаВзаиморасчетов = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
КонецЕсли;
КонецЕсли;
Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") Или Не ДанныеЗаполнения.Свойство("ОплатаВВалюте") Тогда
ОплатаВВалюте = ВзаиморасчетыСервер.ПолучитьОплатуВВалютеПоУмолчанию();
КонецЕсли;
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.БанковскийСчет = БанковскийСчет;
ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
Статус = Перечисления.СтатусыДоговоровКонтрагентов.Действует;
Если (ТипДоговора = Перечисления.ТипыДоговоровАренды.Аренда
ИЛИ ТипДоговора = Перечисления.ТипыДоговоровАренды.ПустаяСсылка())
И НЕ УчетАрендованныхОС.ИспользуетсяУчетАрендыПоФСБУ25_2018(Организация) Тогда
ТипДоговора = Перечисления.ТипыДоговоровАренды.Лизинг;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ПроверкаЗаполнения
Процедура ПроверитьОбъект(Отказ)
Если ЗначениеЗаполнено(Дата)
И ЗначениеЗаполнено(ДатаНачалаДействия)
И НачалоДня(Дата) > ДатаНачалаДействия Тогда
ТекстОшибки = НСтр("ru='Дата начала действия договора должна быть не меньше даты договора'");
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, ЭтотОбъект, "ДатаНачалаДействия",, Отказ);
КонецЕсли;
Если ЗначениеЗаполнено(Дата)
И ЗначениеЗаполнено(ДатаОкончанияДействия)
И НачалоДня(Дата) > ДатаОкончанияДействия Тогда
ТекстОшибки = НСтр("ru='Дата окончания действия договора должна быть не меньше даты договора'");
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, ЭтотОбъект, "ДатаОкончанияДействия",, Отказ);
КонецЕсли;
Если ЗначениеЗаполнено(ДатаНачалаДействия)
И ЗначениеЗаполнено(ДатаОкончанияДействия)
И ДатаНачалаДействия > ДатаОкончанияДействия Тогда
ТекстОшибки = НСтр("ru='Дата окончания действия договора должна быть не меньше даты начала действия'");
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, ЭтотОбъект, "ДатаОкончанияДействия",, Отказ);
КонецЕсли;
КонтрагентЮрФизЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "ЮрФизЛицо");
ВалютныйКонтроль = ДенежныеСредстваКлиентСерверЛокализация.ПрименяетсяВалютныйКонтроль(КонтрагентЮрФизЛицо);
Если УникальныйНомерВалютногоКонтроля <> ""
И ВалютныйКонтроль Тогда
ДенежныеСредстваКлиентСерверЛокализация.ПроверитьУникальныйНомерВалютногоКонтракта(
ЭтотОбъект, УникальныйНомерВалютногоКонтроля, Отказ);
КонецЕсли;
ДенежныеСредстваСерверЛокализация.ПроверитьДоговорНаВозможностьКорреспонденцииСоСчетомЦифровогоРубля(ЭтотОбъект, Отказ);
КонецПроцедуры
#КонецОбласти
#Область Прочее
Функция ВспомогательныеРеквизиты()
ВспомогательныеРеквизиты = Новый Структура;
Если ЗначениеЗаполнено(ДатаОкончанияДействия) Тогда
ДатаПроверки = ДатаОкончанияДействия;
Иначе
ДатаПроверки = ?(ДатаНачалаДействия < ТекущаяДатаСеанса(), '000101010000', ДатаНачалаДействия);
КонецЕсли;
ВспомогательныеРеквизиты.Вставить(
"ИспользуетсяУчетАрендыПоФСБУ25_2018",
УчетАрендованныхОС.ИспользуетсяУчетАрендыПоФСБУ25_2018(Организация, ДатаПроверки, Ложь));
ЗначениеСвойства = НастройкиНалоговУчетныхПолитикПовтИсп.РеглУчетВНАВедетсяНезависимо(
Организация, КонецМесяца(?(ДатаНачалаДействия <> '000101010000', ДатаНачалаДействия, ТекущаяДатаСеанса())));
ВспомогательныеРеквизиты.Вставить(
"РеглУчетВНАВедетсяНезависимо",
ЗначениеСвойства);
Возврат ВспомогательныеРеквизиты;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли