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