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