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