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