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