#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем КешРазделов;
&НаКлиенте
Перем СтарыйНомерРаздела;
&НаКлиенте
Перем НовыйНомерРаздела;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
УчетПрослеживаемыхТоваровЛокализация.УстановитьВидимостьКоличестваРНПТ(ЭтаФорма, Объект.Дата);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
Элементы.ТоварыПодобратьИзОформления.Видимость =
НЕ ПолучитьФункциональнуюОпцию("КонтролироватьОстаткиТоваровОрганизацийКОформлениюПоПоступлениям");
ПараметрыДоступностиСтатей = Новый Структура("ТаможенныйСбор, ТаможенныйШтраф", Объект.ТаможенныйСбор, Объект.ТаможенныйШтраф);
ПараметрыВыбораСтатейИАналитик = Документы.ТаможеннаяДекларацияИмпорт.ПараметрыВыбораСтатейИАналитик(ПараметрыДоступностиСтатей);
ДоходыИРасходыСервер.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
КонецЕсли;
Элементы.СтраницаРазделыТовары.Заголовок = ?(Объект.ИспользоватьРазделы, НСтр("ru='Разделы ГТД'"), НСтр("ru='Товары ГТД'"));
Элементы.ГруппаРазделы.Видимость = Объект.ИспользоватьРазделы;
Элементы.ГруппаТовары.ОтображатьЗаголовок = Объект.ИспользоватьРазделы;
Элементы.ГруппаТовары.Отображение = ?(Объект.ИспользоватьРазделы, ОтображениеОбычнойГруппы.СлабоеВыделение, ОтображениеОбычнойГруппы.Нет);
Если Объект.ИспользоватьРазделы Тогда
Элементы.ГруппаТовары.ПутьКДаннымЗаголовка = "Объект.Товары.КоличествоСтрок";
КонецЕсли;
Элементы.ТоварыПоказатьВсеТовары.Видимость = Объект.ИспользоватьРазделы;
Элементы.ТоварыУстановитьНомерРаздела.Видимость = Объект.ИспользоватьРазделы;
Элементы.ТоварыЗаполнитьНомерРаздела.Видимость = Объект.ИспользоватьРазделы;
Элементы.ТоварыНомерРаздела.Видимость = Объект.ИспользоватьРазделы;
Элементы.ТоварыСтавкаНДС.Видимость = НЕ Объект.ИспользоватьРазделы;
Элементы.ТоварыСтавкаПошлины.Видимость = НЕ Объект.ИспользоватьРазделы;
НастройкиУчетаНДС = УчетНДСУП.НастройкиУчета();
НалогообложениеНДС = НастройкиУчетаНДС.ОсновноеНалогообложениеНДСПродажи;
ТаможеннаяДекларацияИмпортЛокализация.УстановитьМаскуНомераТаможеннойДекларации(Элементы.НомерДекларации.Маска);
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаИтого.ЦветФона = Новый Цвет();
Элементы.ГруппаИтогоТовары.ЦветФона = Новый Цвет();
КонецЕсли;
УстановитьДоступностьКомандБуфераОбмена();
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтаФорма);
ИсправлениеДокументов.ПриСозданииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
УчетПрослеживаемыхТоваровЛокализация.УстановитьЗаголовокНомерГТД(Элементы, "ТоварыНомерГТД",, НСтр("ru = 'для целей учета'"));
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
ПараметрыДоступностиСтатей = Новый Структура("ТаможенныйСбор, ТаможенныйШтраф", ТекущийОбъект.ТаможенныйСбор, ТекущийОбъект.ТаможенныйШтраф);
ПараметрыВыбораСтатейИАналитик = Документы.ТаможеннаяДекларацияИмпорт.ПараметрыВыбораСтатейИАналитик(ПараметрыДоступностиСтатей);
ДоходыИРасходыСервер.ПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ОбновитьСуммуДокументаНаФорме();
ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтаФорма);
ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
ПараметрыЗаписи.Свойство("РежимЗаписи", РежимЗаписи);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
Если Объект.Статус = Перечисления.СтатусыТаможенныхДеклараций.ВыпущеноСТаможни И РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Если Объект.ИспользоватьРазделы Тогда
Если Объект.Товары.НайтиСтроки(Новый Структура("НомерРаздела", 0)).Количество() > 0 Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Если Отказ Тогда
Элементы.ТоварыПоказатьВсеТовары.Пометка = Истина;
НастроитьСервисыЗаполнения(Элементы, Объект);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ЗаполнитьДанныеФормы();
ЗаполнитьДополнительныеПризнакиТоваров();
ЗаполнитьПорядковыйНомерТовараВТаблицеТоварыСервер();
УстановитьИспользованиеПодакцизныхТоваров();
ДоходыИРасходыСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект.ДополнительныеСвойства);
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_ТаможеннаяДекларацияИмпорт", ПараметрыЗаписи, Объект.Ссылка);
ВзаиморасчетыКлиент.ФормаПослеЗаписи(ЭтаФорма);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
Если ВзаиморасчетыКлиент.НуженВызовОбработкиОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ЗачтенаОплатаСервер(ИмяСобытия, Параметр, Источник);
КонецЕсли;
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументЗакупки.Форма.Форма" Тогда
ОбработкаВыбораДобавитьТовары(ВыбранноеЗначение, ДанныеТекущегоРаздела(Элементы.Разделы), Ложь, "АдресТоваровВХранилище");
ИначеЕсли ИсточникВыбора.ИмяФормы = "ОбщаяФорма.ПодборТоваровПоПоступлениям" Тогда
ОбработкаВыбораДобавитьТовары(ВыбранноеЗначение, ДанныеТекущегоРаздела(Элементы.Разделы), Ложь, "АдресТоваровВХранилище", "Товары", Истина);
ИначеЕсли ИсточникВыбора.ИмяФормы = "РегистрНакопления.ТоварыКОформлениюДокументовИмпорта.Форма.ПодборПоОстаткам" Тогда
ОбработкаВыбораДобавитьТовары(ВыбранноеЗначение, ДанныеТекущегоРаздела(Элементы.Разделы),Истина);
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецЕсли;
УчетНДСУПКлиент.ОбработкаИзмененияСостоянияОплатыНДСПоСчетуФактуре(
ИсточникВыбора,
ВыбранноеЗначение,
Элементы.СостояниеОплатыПоСчетуФактуре);
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.Статус) И СтатусДокумента <> Объект.Статус
И Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыТаможенныхДеклараций.ВыпущеноСТаможни") Тогда
ДатаВыпуска = Объект.Дата;
ПоказатьВводДаты(Новый ОписаниеОповещения("СтатусПриИзмененииЗавершение", ЭтотОбъект, Новый Структура("ДатаВыпуска", ДатаВыпуска)), ДатаВыпуска, НСтр("ru='Дата выпуска с таможни'"), ЧастиДаты.Дата);
Возврат;
КонецЕсли;
СтатусДокумента = Объект.Статус;
КонецПроцедуры
&НаКлиенте
Процедура СтатусПриИзмененииЗавершение(Дата, ДополнительныеПараметры) Экспорт
ДатаВыпуска = ?(Дата = Неопределено, ДополнительныеПараметры.ДатаВыпуска, Дата);
перТекущаяДата = ОбщегоНазначенияКлиент.ДатаСеанса();
Если (Дата <> Неопределено) Тогда
Если Дата > перТекущаяДата Тогда
ОчиститьСообщения();
ТекстОшибки = НСтр("ru='Дата выпуска с таможни не может быть больше текущей!'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект");
Возврат;
КонецЕсли;
Объект.Дата = КонецДня(ДатаВыпуска);
КонецЕсли;
СтатусДокумента = Объект.Статус;
КонецПроцедуры
&НаКлиенте
Процедура ПоставщикПриИзменении(Элемент)
ПоставщикПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ДатаПриИзмененииСервер();
Если ЕстьСтрокиОтличнойВалюты() Тогда
ПересчитатьСуммуПоКурсуНаДату();
КонецЕсли;
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииСервер();
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
КонецПроцедуры
&НаКлиенте
Процедура НадписьЗаголовокПоступленияНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьФорму(
"ОбщаяФорма.ПросмотрСпискаДокументов",
Новый Структура("СписокДокументов, Заголовок",
СписокПоступлений,
НСтр("ru='Поступления по импорту (%КоличествоДокументов%)'")
),
ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВариантОформленияПриИзменении(Элемент)
ВалютаИзменена = Ложь;
ВариантОформленияПриИзмененииСервер(ВалютаИзменена);
Если ВалютаИзменена Тогда
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
ВалютаДокумента = Объект.Валюта;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
ПартнерПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПоставщикаПриИзменении(Элемент)
КонтрагентПоставщикаПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
СоглашениеПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчетОрганизации, Объект.БанковскийСчетКонтрагента);
ДоговорПриИзмененииСервер();
ЗаполнитьДанныеФормы(Истина);
НастроитьЭлементыФормы();
КонецПроцедуры
&НаКлиенте
Процедура СтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "СтраницаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если ТекущаяСтраница = Элементы.СтраницаРазделыТовары Тогда
АктивироватьРаздел();
КонецЕсли;
Если ТекущаяСтраница.Имя = "СтраницаОсновное" Тогда
ОбновитьСуммуДокументаНаФорме();
ВзаиморасчетыКлиентСервер.ОбновитьТекстГиперссылкиВалюты(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтатьяРасходовСборПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура СтатьяРасходовСборНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СтатьяРасходовШтрафПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура СтатьяРасходовШтрафНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АналитикаРасходовСборНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АналитикаРасходовСборАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)
ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АналитикаРасходовСборОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка)
ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АналитикаРасходовШтрафНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АналитикаРасходовШтрафАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)
ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АналитикаРасходовШтрафОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка)
ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ОплатаЧерезЕдиныйЛицевойСчетПриИзменении(Элемент)
УчетНДСУПКлиент.ОбработкаИзмененияСостоянияОплатыНДСВФормеДокумента(
Элементы.СостояниеОплатыПоСчетуФактуре,
Не Объект.ОплатаЧерезЕдиныйЛицевойСчет);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПорядковыйНомерТовараПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ОбновитьДанныеСтрокиПриИзмененииПорядковогоНомераТовара(ТекущаяСтрока, Объект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьДанныеСтрокиПриИзмененииПорядковогоНомераТовара(ТекущаяСтрока, Объект)
ТекущаяСтрока.ПорядковыйНомерТовара = СокрЛП(ТекущаяСтрока.ПорядковыйНомерТовара);
Если ЗначениеЗаполнено(Объект.НомерДекларации) Тогда
НовыйНомерДляСФ = НомерДляСФ(СокрЛП(Объект.НомерДекларации), ТекущаяСтрока.ПорядковыйНомерТовара);
Если ТекущаяСтрока.НомерДляСФ <> НовыйНомерДляСФ Тогда
ТекущаяСтрока.НомерДляСФ = НовыйНомерДляСФ;
ТекущаяСтрока.НомерГТД = Неопределено;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НомерДекларацииИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
ТекущийТекстНомераДекларации = Текст;
ПодключитьОбработчикОжидания("Подключаемый_ВывестиИнформациюОбОшибкахВНомере", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатие(Элемент, СтандартнаяОбработка)
ВзаиморасчетыКлиент.НадписьЭтапыОплатыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура НадписьВалютыНажатие(Элемент, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("НадписьВалютыНажатиеЗавершение", ЭтотОбъект);
ВзаиморасчетыКлиент.ВалютыИКурсДокументаНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(
ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыРазделы
&НаКлиенте
Процедура РазделыПриАктивизацииСтроки(Элемент)
ПодключитьОбработчикОжидания("АктивироватьРаздел", 0.2, Истина);
КонецПроцедуры
&НаКлиенте
Процедура РазделыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
НовыйНомерРаздела = НовыйНомерРаздела(Объект.Разделы);
Если (НовыйНомерРаздела > НомерРазделаПредел) Тогда
Отказ = Истина;
КонецЕсли;
Если Отказ Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Достигнут предельный номер раздела, новый раздел добавить нельзя. Проверьте нумерацию разделов.'"),
Объект.Ссылка,
"Разделы[" + (Элементы.Разделы.ТекущиеДанные.НомерСтроки - 1) + "].НомерРаздела",);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РазделыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока Тогда
Элемент.ТекущиеДанные.НомерРаздела = НовыйНомерРаздела;
Элемент.ТекущиеДанные.СуммаАкциза = 0;
КонецЕсли;
СтарыйНомерРаздела = Элемент.ТекущиеДанные.НомерРаздела;
КонецПроцедуры
&НаКлиенте
Процедура РазделыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если Элемент.ТекущиеДанные <> Неопределено Тогда
Если НоваяСтрока И Не ОтменаРедактирования Тогда
ЗаменитьЭлементВСпискеВыбора(
Элементы.ТоварыНомерРаздела.СписокВыбора, -1, Элемент.ТекущиеДанные.НомерРаздела, Элементы.ТоварыНомерРаздела.Формат);
КонецЕсли;
СтарыйНомерРаздела = Элемент.ТекущиеДанные.НомерРаздела;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РазделыПередУдалением(Элемент, Отказ)
Разделы = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(Объект.Разделы, Элементы.Разделы.ВыделенныеСтроки);
КешРазделов = Новый Соответствие;
Для Каждого Раздел Из Разделы Цикл
КешРазделов.Вставить(Раздел.НомерРаздела, Раздел.НомерРаздела);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура РазделыПослеУдаления(Элемент)
ОчиститьНомераРазделовТоваров(КешРазделов);
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
КонецПроцедуры
&НаКлиенте
Процедура РазделыНомерРазделаПриИзменении(Элемент)
НовыйНомерРаздела = Элементы.Разделы.ТекущиеДанные.НомерРаздела;
Если НомерРазделаУникальный(Объект.Разделы, НовыйНомерРаздела) Тогда
ЗаполнитьПоляТабчасти("Товары", Новый Структура("НомерРаздела", НовыйНомерРаздела), Новый Структура("НомерРаздела", СтарыйНомерРаздела));
ЗаменитьЭлементВСпискеВыбора(
Элементы.ТоварыНомерРаздела.СписокВыбора, СтарыйНомерРаздела, НовыйНомерРаздела, Элементы.ТоварыНомерРаздела.Формат);
АктивироватьРаздел();
Иначе
Элементы.Разделы.ТекущиеДанные.НомерРаздела = СтарыйНомерРаздела;
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
СтрЗаменить(НСтр("ru = 'Раздел №%1 уже существует. Укажите другой номер раздела'"), "%1", НовыйНомерРаздела),
Объект.Ссылка,
"Разделы[" + (Элементы.Разделы.ТекущиеДанные.НомерСтроки - 1) + "].НомерРаздела",);
КонецЕсли;
НовыйНомерРаздела = Элементы.Разделы.ТекущиеДанные.НомерРаздела;
КонецПроцедуры
&НаКлиенте
Процедура РазделыТаможеннаяСтоимостьПриИзменении(Элемент)
Раздел = Элементы.Разделы.ТекущиеДанные;
ПересчитатьПоля(Раздел, "СуммаПошлины, СуммаНДС", Раздел, Объект.ИспользоватьРазделы);
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
РаспределитьНаТоварыСервер(Истина);
КонецПроцедуры
&НаКлиенте
Процедура РазделыСтавкаПошлиныПриИзменении(Элемент)
Раздел = Элементы.Разделы.ТекущиеДанные;
ПересчитатьПоля(Раздел, "СуммаПошлины, СуммаНДС", Раздел, Объект.ИспользоватьРазделы);
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
РаспределитьНаТоварыСервер(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура РазделыСуммаПошлиныПриИзменении(Элемент)
Раздел = Элементы.Разделы.ТекущиеДанные;
ПересчитатьПоля(Раздел, "СтавкаПошлины, СуммаНДС", Раздел, Объект.ИспользоватьРазделы);
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
РаспределитьНаТоварыСервер(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура РазделыСтавкаНДСПриИзменении(Элемент)
Раздел = Элементы.Разделы.ТекущиеДанные;
ПересчитатьПоля(Раздел, "СуммаНДС", Раздел, Объект.ИспользоватьРазделы);
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
РаспределитьНаТоварыСервер(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура РазделыСуммаНДСПриИзменении(Элемент)
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
РаспределитьНаТоварыСервер(Ложь);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока И Не Копирование Тогда
Если Объект.ИспользоватьРазделы Тогда
ДанныеРаздела = ДанныеТекущегоРаздела(Элементы.Разделы);
ЗаполнитьЗначенияСвойств(Элементы.Товары.ТекущиеДанные, ДанныеРаздела, "НомерРаздела, СтавкаНДС, СтавкаПошлины, СтранаПроисхождения, Склад");
КонецЕсли;
Если ЗначениеЗаполнено(Объект.НомерДекларации) Тогда
Элемент.ТекущиеДанные.НомерДляСФ = НомерДляСФ(СокрЛП(Объект.НомерДекларации), Элемент.ТекущиеДанные.НомерСтроки);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
ОбновитьИнформациюПоПоступлениям();
ПересчитатьСуммыВРазделе();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Действия = Новый Структура;
Действия.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
Действия.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
Действия.Вставить("ПересчитатьКоличествоЕдиниц");
Действия.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
Действия.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
Действия.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
Действия.Вставить("ЗаполнитьСтрануПроисхожденияНоменклатуры",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтраныПроисхождения());
Действия.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
Действия.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти", ИмяФормы, "Товары"));
Если Не Объект.ИспользоватьРазделы Тогда
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполнитьСтавкуНДС.НалогообложениеНДС = НалогообложениеНДС;
Действия.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
КонецЕсли;
Если ИспользоватьПодакцизныеТовары Тогда
ПараметрыЗаполненияПризнакаПодакцизныйТовар =
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияПризнакаПодакцизныйТовар(Объект);
Действия.Вставить("ЗаполнитьПризнакПодакцизныйТовар", ПараметрыЗаполненияПризнакаПодакцизныйТовар);
ПараметрыПересчетаСуммыАкциза =
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыАкциза(Объект, Истина);
Действия.Вставить("ПересчитатьСуммуАкциза", ПараметрыПересчетаСуммыАкциза);
КонецЕсли;
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(Действия);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
Действия,
"Склад",
Истина);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, Действия, КэшированныеЗначения);
ПересчитатьПоля(ТекущаяСтрока, "СуммаНДС", ДанныеТекущегоРаздела(Элементы.Разделы), Объект.ИспользоватьРазделы);
ПересчитатьСуммыВРазделе();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Действия = Новый Структура;
Действия.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, Действия, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Действия = Новый Структура;
Действия.Вставить("ПересчитатьКоличествоЕдиниц");
Если ИспользоватьПодакцизныеТовары И ТекущаяСтрока.ПодакцизныйТовар Тогда
ПараметрыПересчетаСуммыАкциза =
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыАкциза(Объект, Истина);
Действия.Вставить("ПересчитатьСуммуАкциза", ПараметрыПересчетаСуммыАкциза);
КонецЕсли;
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
Действия,
"Склад",
Истина);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, Действия, КэшированныеЗначения);
Если ИспользоватьПодакцизныеТовары И ТекущаяСтрока.ПодакцизныйТовар Тогда
ПересчитатьПоля(ТекущаяСтрока, "СуммаНДС", ДанныеТекущегоРаздела(Элементы.Разделы), Объект.ИспользоватьРазделы);
ПересчитатьСуммыВРазделе();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураЕдиницаИзмеренияПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ИспользоватьПодакцизныеТовары И ТекущаяСтрока.ПодакцизныйТовар Тогда
Действия = Новый Структура;
ПараметрыПересчетаСуммыАкциза = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыАкциза(
Объект, Истина);
Действия.Вставить("ПересчитатьСуммуАкциза", ПараметрыПересчетаСуммыАкциза);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, Действия, КэшированныеЗначения);
ПересчитатьПоля(ТекущаяСтрока, "СуммаНДС", ДанныеТекущегоРаздела(Элементы.Разделы), Объект.ИспользоватьРазделы);
ПересчитатьСуммыВРазделе();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Действия = Новый Структура;
Действия.Вставить("ПересчитатьКоличествоЕдиниц");
Если ИспользоватьПодакцизныеТовары И ТекущаяСтрока.ПодакцизныйТовар Тогда
ПараметрыПересчетаСуммыАкциза =
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыАкциза(Объект, Истина);
Действия.Вставить("ПересчитатьСуммуАкциза", ПараметрыПересчетаСуммыАкциза);
КонецЕсли;
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
Действия,
"Склад",
Истина);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, Действия, КэшированныеЗначения);
Если ИспользоватьПодакцизныеТовары И ТекущаяСтрока.ПодакцизныйТовар Тогда
ПересчитатьПоля(ТекущаяСтрока, "СуммаНДС", ДанныеТекущегоРаздела(Элементы.Разделы), Объект.ИспользоватьРазделы);
ПересчитатьСуммыВРазделе();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаАкцизаПриИзменении(Элемент)
Товар = Элементы.Товары.ТекущиеДанные;
ПересчитатьПоля(Товар, "СуммаНДС", ДанныеТекущегоРаздела(Элементы.Разделы), Объект.ИспользоватьРазделы);
ПересчитатьСуммыВРазделе();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыТаможеннаяСтоимостьПриИзменении(Элемент)
Товар = Элементы.Товары.ТекущиеДанные;
ПересчитатьПоля(Товар, "СуммаПошлины, СуммаНДС", ДанныеТекущегоРаздела(Элементы.Разделы), Объект.ИспользоватьРазделы);
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтавкаПошлиныПриИзменении(Элемент)
Товар = Элементы.Товары.ТекущиеДанные;
ПересчитатьПоля(Товар, "СуммаПошлины, СуммаНДС", ДанныеТекущегоРаздела(Элементы.Разделы), Объект.ИспользоватьРазделы);
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзменении(Элемент)
Товар = Элементы.Товары.ТекущиеДанные;
ПересчитатьПоля(Товар, "СуммаНДС", ДанныеТекущегоРаздела(Элементы.Разделы), Объект.ИспользоватьРазделы);
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПошлиныПриИзменении(Элемент)
Товар = Элементы.Товары.ТекущиеДанные;
ПересчитатьПоля(Товар, "СтавкаПошлины, СуммаНДС", ДанныеТекущегоРаздела(Элементы.Разделы), Объект.ИспользоватьРазделы);
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаНДСПриИзменении(Элемент)
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНомерГТДПриИзменении(Элемент)
ДанныеГТД = ОбщегоНазначенияУТВызовСервера.ЗначенияРеквизитовОбъекта(Элементы.Товары.ТекущиеДанные.НомерГТД, "Код, СтранаПроисхождения, ПорядковыйНомерТовара");
Элементы.Товары.ТекущиеДанные.ПорядковыйНомерТовара = ДанныеГТД.ПорядковыйНомерТовара;
Элементы.Товары.ТекущиеДанные.НомерДляСФ = ДанныеГТД.Код;
Элементы.Товары.ТекущиеДанные.СтранаПроисхождения = ДанныеГТД.СтранаПроисхождения;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = Элементы.Товары.ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСкладПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПроверитьСериюРассчитатьСтатус = Новый Структура("Склад, ПараметрыУказанияСерий",
ТекущаяСтрока.Склад, ПараметрыУказанияСерий);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", ПроверитьСериюРассчитатьСтатус);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
СтруктураДействий,
"Склад",
Истина);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыДокументПоступленияПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДокументПоступленияПриИзмененииСервер(ТекущаяСтрока.ПолучитьИдентификатор());
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНомерРазделаПриИзменении(Элемент)
Товар = Элементы.Товары.ТекущиеДанные;
ПересчитатьПоля(Товар, "СуммаПошлины, СуммаНДС", ДанныеТекущегоРаздела(Элементы.Разделы), Объект.ИспользоватьРазделы);
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура РаспределитьНаТовары(Команда)
ОчиститьСообщения();
ТекстОшибки = "";
Если Объект.Разделы.Количество() = 0 Тогда
ТекстОшибки = НСтр("ru='Необходимо создать хотя бы один раздел декларации и заполнить в нем товары.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Разделы");
Возврат;
КонецЕсли;
Если Объект.Товары.Количество() = 0 Тогда
ТекстОшибки = НСтр("ru='Необходимо заполнить товары декларации. Это можно сделать с помощью команды ""Заполнить"" или вручную.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Товары");
Возврат;
КонецЕсли;
Отбор = Новый Структура("НомерРаздела");
Разделы = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(Объект.Разделы, Элементы.Разделы.ВыделенныеСтроки);
СписокРазделов = "";
Для Каждого Раздел Из Разделы Цикл
НомерРаздела = Формат(Раздел.НомерРаздела, "ЧН=0; ЧГ=0");
СписокРазделов = СписокРазделов + ?(ЗначениеЗаполнено(СписокРазделов), ", ", "") + НомерРаздела;
Если Раздел.ТаможеннаяСтоимость = 0. Тогда
ТекстОшибки = НСтр("ru='Необходимо задать таможенную стоимость в разделе %НомерРаздела%.'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%НомерРаздела%", НомерРаздела);
ПолеСтоимости = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Разделы", Раздел.НомерСтроки, "ТаможеннаяСтоимость");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, ПолеСтоимости, "Объект");
КонецЕсли;
Отбор.НомерРаздела = Раздел.НомерРаздела;
Товары = Объект.Товары.НайтиСтроки(Отбор);
Для Каждого Товар Из Товары Цикл
Если Товар.ТаможеннаяСтоимость = 0. Тогда
ТекстОшибки =
НСтр("ru='Необходимо предварительно заполнить таможенную стоимость товара в строке %СтрокаТовара% раздела %НомерРаздела%.'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%НомерРаздела%", НомерРаздела);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%СтрокаТовара%", Формат(Товар.НомерСтроки, "ЧН=0; ЧГ=0"));
ПолеСтоимости = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", Товар.НомерСтроки, "ТаможеннаяСтоимость");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, ПолеСтоимости, "Объект");
КонецЕсли;
КонецЦикла;
Если Товары.Количество() = 0 Тогда
ТекстОшибки = НСтр("ru='Необходимо заполнить товары раздела %НомерРаздела%. Это можно сделать с помощью команды ""Заполнить"" или вручную.'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%НомерРаздела%", НомерРаздела);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Товары");
КонецЕсли;
КонецЦикла;
Если ТекстОшибки <> "" Или Разделы.Количество() = 0 Тогда
Возврат;
КонецЕсли;
РаспределитьНаТоварыСервер();
ТекстПояснения = ?(Разделы.Количество() > 1,
НСтр("ru = 'Суммы разделов %СписокРазделов% распределены на товары'"),
НСтр("ru = 'Суммы раздела %СписокРазделов% распределены на товары'"));
ПоказатьОповещениеПользователя(
НСтр("ru = 'Команда выполнена'"), ,
СтрЗаменить(ТекстПояснения, "%СписокРазделов%", СписокРазделов), БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьПоТоварам(Команда)
Если Объект.Товары.Количество() > 0 И Объект.Разделы.Количество() > 0 Тогда
РассчитатьПоТоварамСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьВсеТовары(Команда)
Элементы.ТоварыПоказатьВсеТовары.Пометка = Не Элементы.ТоварыПоказатьВсеТовары.Пометка;
НастроитьСервисыЗаполнения(Элементы, Объект);
АктивироватьРаздел();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьНомерРаздела(Команда)
ЗаполнитьПоляТабчасти("Товары", Новый Структура("НомерРаздела", ДанныеТекущегоРаздела(Элементы.Разделы).НомерРаздела));
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНомерРаздела(Команда)
ТекущийРаздел = ДанныеТекущегоРаздела(Элементы.Разделы).НомерРаздела;
ЗаполнитьПоляТабчасти("Товары", Новый Структура("НомерРаздела", ТекущийРаздел), Новый Структура("НомерРаздела", 0));
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТовары(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ТаможеннаяДекларацияИмпорт.ФормаДокумента.Команда.ПодобратьТовары");
Склад = ДанныеТекущегоРаздела(Элементы.Разделы).Склад;
ПараметрыПодбора = Новый Структура;
ПараметрыПодбора.Вставить("Документ", Объект.Ссылка);
ПараметрыПодбора.Вставить("Дата", ДатаДокумента(Объект.Дата));
ПараметрыПодбора.Вставить("Склад", Склад);
ПараметрыПодбора.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь)));
ПараметрыПодбора.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Истина);
ПараметрыПодбора.Вставить("РежимПодбораИсключитьГруппыДоступныеВЗаказах", Истина);
ПараметрыПодбора.Вставить("РежимПодбораБезСуммовыхПараметров", Истина);
ОткрытьФорму("Обработка.ПодборТоваровВДокументЗакупки.Форма", ПараметрыПодбора, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьИзПоступлений(Команда)
ПараметрыПроверки = РаботаСТабличнымиЧастямиКлиент.ПараметрыПроверкиЗаполнения();
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Организация", НСтр("ru = 'Организация'"));
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Поставщик", НСтр("ru = 'Поставщик'"));
Оповещение = Новый ОписаниеОповещения("ПодобратьИзПоступленийЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПроверитьВозможностьЗаполнения(ЭтаФорма, Оповещение, ПараметрыПроверки);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьИзПоступленийЗавершение(Результат, ДополнительныеПараметры) Экспорт
ДанныеРаздела = ДанныеТекущегоРаздела(Элементы.Разделы);
ПараметрыПодбора = Новый Структура;
ПараметрыПодбора.Вставить("Партнер", Объект.Поставщик);
ПараметрыПодбора.Вставить("Организация", Объект.Организация);
ПараметрыПодбора.Вставить("Склад", ДанныеРаздела.Склад);
ПараметрыПодбора.Вставить("ЗакупкаПоИмпорту", Истина);
ПараметрыПодбора.Вставить("ПоказыватьТару", Ложь);
ПараметрыПодбора.Вставить("ПоказыватьТовары", Истина);
ПараметрыПодбора.Вставить("ЦенаВключаетНДС", Ложь);
ПараметрыПодбора.Вставить("Валюта", Объект.Валюта);
ПараметрыПодбора.Вставить("Дата", ДатаДокумента(Объект.Дата));
ОткрытьФорму("ОбщаяФорма.ПодборТоваровПоПоступлениям", ПараметрыПодбора, ЭтаФорма);
ОбновитьИнформациюПоПоступлениям();
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьИзОформления(Команда)
ПараметрыПроверки = РаботаСТабличнымиЧастямиКлиент.ПараметрыПроверкиЗаполнения();
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Организация", НСтр("ru = 'Организация'"));
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Поставщик", НСтр("ru = 'Поставщик'"));
Оповещение = Новый ОписаниеОповещения("ПодобратьИзОформленияЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПроверитьВозможностьЗаполнения(ЭтаФорма, Оповещение, ПараметрыПроверки);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьИзОформленияЗавершение(Результат, ДополнительныеПараметры) Экспорт
ДанныеРаздела = ДанныеТекущегоРаздела(Элементы.Разделы);
ОтборТоваров = Новый Структура("НомерРаздела", ДанныеРаздела.НомерРаздела);
АдресВХранилище = ПоместитьВХранилище("Товары", "Номенклатура, Характеристика, Серия, Склад, Количество, ДокументПоступления", ОтборТоваров);
Склад = ДанныеРаздела.Склад;
ПараметрыПодбора = Новый Структура;
ПараметрыПодбора.Вставить("АдресВХранилище", АдресВХранилище);
ПараметрыПодбора.Вставить("Организация", Объект.Организация);
ПараметрыПодбора.Вставить("Склад", Склад);
ПараметрыПодбора.Вставить("Дата", Объект.Дата);
ПараметрыПодбора.Вставить("Поставщик", Объект.Поставщик);
ОткрытьФорму("РегистрНакопления.ТоварыКОформлениюДокументовИмпорта.Форма.ПодборПоОстаткам", ПараметрыПодбора, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтоимостьВыделенныхСтрок(Команда)
Перем ВидЦены;
ДляНезаполненныхСтрок = Ложь;
ВыбратьВидЦеныПоставщика(ВидЦены,ДляНезаполненныхСтрок);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтоимостьНезаполненныхСтрок(Команда)
Перем ВидЦены;
ДляНезаполненныхСтрок = Истина;
ВыбратьВидЦеныПоставщика(ВидЦены,ДляНезаполненныхСтрок);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСтрануПроисхождения(Команда)
Если Элементы.Товары.ВыделенныеСтроки.Количество()>0 Тогда
ОткрытьФорму("Справочник.СтраныМира.ФормаВыбора", Новый Структура("РежимВыбора", Истина),,,,, Новый ОписаниеОповещения("УстановитьСтрануПроисхожденияЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСтрануПроисхожденияЗавершение(Результат, ДополнительныеПараметры) Экспорт
СтранаПроисхождения = Результат;
Если ЗначениеЗаполнено(СтранаПроисхождения) Тогда
ЗаполнитьПоляТабчасти("Товары", Новый Структура("СтранаПроисхождения, НомерГТД", СтранаПроисхождения, Неопределено));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗачетОплаты(Команда)
ПоместитьРасшифровкуПлатежаВоВременноеХранилище();
ВзаиморасчетыКлиент.ЗачетОплаты(ЭтаФорма, Элементы.ЗачетОплатыФорма);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСклад(Команда)
Если Элементы.Товары.ВыделенныеСтроки.Количество()>0 Тогда
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("ВыборГруппыСкладов", Ложь);
ОткрытьФорму("Справочник.Склады.ФормаВыбора", ПараметрыОткрытия,,,,, Новый ОписаниеОповещения("УстановитьСкладЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСкладЗавершение(Результат, ДополнительныеПараметры) Экспорт
СкладРазмещения = Результат;
Если ЗначениеЗаполнено(СкладРазмещения) Тогда
УстановитьСкладСервер(СкладРазмещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВывестиИнформациюОбОшибкахВНомере()
ОбновитьИнформациюОбОшибкахВНомере(ТекущийТекстНомераДекларации,
НачалоКорректногоПериода,
КонецКорректногоПериода,
Элементы.ОшибкаВНомереТаможеннойДекларации);
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ПолучитьСтрокиИзБуфераОбмена(ДанныеТекущегоРаздела(Элементы.Разделы));
КоличествоВставленных = Объект.Товары.Количество()-КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере();
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СостояниеОплатыПоСчетуФактуре(Команда)
УчетНДСУПКлиент.ОткрытьФормуСостоянияОплатыНДСПоСчетуФактуре(Объект.Ссылка, ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СтатьяРасходовСбор.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТаможенныйСбор");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.СтатьяРасходовСбор");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СтатьяРасходовСбор.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТаможенныйСбор");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.СтатьяРасходовСбор");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СтатьяРасходовШтраф.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТаможенныйШтраф");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.СтатьяРасходовШтраф");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СтатьяРасходовШтраф.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТаможенныйШтраф");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.СтатьяРасходовШтраф");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РазделыСуммаПошлины.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Разделы.СтавкаПошлины");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Разделы.СуммаПошлины");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РазделыСуммаПошлины.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Разделы.СтавкаПошлины");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаАкциза.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ПодакцизныйТовар");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не используется>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РазделыСуммаАкциза.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаАкциза.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьПодакцизныеТовары");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РазделыСуммаАкциза.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаАкциза.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьПодакцизныеТовары");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Истина);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, "СерииВсегдаВТЧТовары");
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеКоличестваПоРНПТ(ЭтотОбъект);
ДополнитьУсловноеОформлениеЛокализация();
КонецПроцедуры
#Область ПриИзмененииРеквизитов
&НаКлиенте
Процедура ПересчитатьСуммуПоКурсуНаДату()
ТекстВопроса = НСтр("ru = 'Таможенная декларация оформлена по поступлениям в иностранной валюте, пересчитать сумму по курсу на дату документа?'");
СписокКнопок = Новый СписокЗначений();
СписокКнопок.Добавить(КодВозвратаДиалога.ОК, НСтр("ru = 'Пересчитать'"));
СписокКнопок.Добавить(КодВозвратаДиалога.Отмена, НСтр("ru = 'Не пересчитывать'"));
ПоказатьВопрос(Новый ОписаниеОповещения("ПересчитатьСуммуПоКурсуНаДатуЗавершение", ЭтотОбъект), ТекстВопроса, СписокКнопок);
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьСуммуПоКурсуНаДатуЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.ОК Тогда
ПересчетКурсаВалютыСервер();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПересчетКурсаВалютыСервер()
Действия = Новый Структура();
УстановитьДействияДополнительныхПризнаковТоваров(Действия);
Если Действия.Свойство("ПересчитатьКоличествоЕдиниц") Тогда
Действия.Удалить("ПересчитатьКоличествоЕдиниц");
КонецЕсли;
ВалютаРеглУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
НовыйКурс = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(ВалютаДокумента, Объект.Дата, ВалютаРеглУчета);
ПараметрыНовогоКурса = Новый Структура("Валюта, КурсЧислитель, КурсЗнаменатель", ВалютаДокумента, НовыйКурс.КурсЧислитель, НовыйКурс.КурсЗнаменатель);
ТаможеннаяДекларацияИмпортТовары = Объект.Товары.Выгрузить(,"Номенклатура,Характеристика,ДокументПоступления,Количество");
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ТаможеннаяДекларацияИмпортТовары", ТаможеннаяДекларацияИмпортТовары);
Запрос.УстановитьПараметр("ВалютаРеглУчета", ВалютаРеглУчета);
Запрос.Текст =
"ВЫБРАТЬ
| ТаможеннаяДекларацияИмпортТовары.Номенклатура КАК Номенклатура,
| ТаможеннаяДекларацияИмпортТовары.Характеристика КАК Характеристика,
| ТаможеннаяДекларацияИмпортТовары.ДокументПоступления КАК ДокументПоступления,
| ТаможеннаяДекларацияИмпортТовары.Количество КАК Количество
|ПОМЕСТИТЬ ТаможеннаяДекларацияИмпортТовары
|ИЗ
| &ТаможеннаяДекларацияИмпортТовары КАК ТаможеннаяДекларацияИмпортТовары
|;
|
|
|ВЫБРАТЬ
| ТаможеннаяДекларацияИмпортТовары.Номенклатура КАК Номенклатура,
| ТаможеннаяДекларацияИмпортТовары.Характеристика КАК Характеристика,
| ТаможеннаяДекларацияИмпортТовары.ДокументПоступления КАК ДокументПоступления,
| СУММА(ТаможеннаяДекларацияИмпортТовары.Количество) КАК Количество
|ПОМЕСТИТЬ ТДИТсводная
|ИЗ
| ТаможеннаяДекларацияИмпортТовары КАК ТаможеннаяДекларацияИмпортТовары
|
|СГРУППИРОВАТЬ ПО
| ТаможеннаяДекларацияИмпортТовары.ДокументПоступления,
| ТаможеннаяДекларацияИмпортТовары.Характеристика,
| ТаможеннаяДекларацияИмпортТовары.Номенклатура
|;
|
|
|ВЫБРАТЬ
| ПриобретениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
| ПриобретениеТоваровУслугТовары.Характеристика КАК Характеристика,
| СУММА(ПриобретениеТоваровУслугТовары.Количество) КАК Количество,
| ПриобретениеТоваровУслугТовары.Ссылка КАК ДокументПоступления,
| СУММА(ПриобретениеТоваровУслугТовары.Сумма) КАК Сумма
|ПОМЕСТИТЬ ПоступлениеТоваров
|ИЗ
| Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТДИТсводная КАК ТДИТсводная
| ПО ПриобретениеТоваровУслугТовары.Номенклатура = ТДИТсводная.Номенклатура
| И ПриобретениеТоваровУслугТовары.Характеристика = ТДИТсводная.Характеристика
| И ПриобретениеТоваровУслугТовары.Ссылка = ТДИТсводная.ДокументПоступления
|
|СГРУППИРОВАТЬ ПО
| ПриобретениеТоваровУслугТовары.Ссылка,
| ПриобретениеТоваровУслугТовары.Номенклатура,
| ПриобретениеТоваровУслугТовары.Характеристика
|;
|
|
|ВЫБРАТЬ
| ТаможеннаяДекларацияИмпортТовары.ДокументПоступления КАК ДокументПоступления,
| ПриобретениеТоваровУслуг.Валюта КАК Валюта
|ИЗ
| ТаможеннаяДекларацияИмпортТовары КАК ТаможеннаяДекларацияИмпортТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриобретениеТоваровУслуг КАК ПриобретениеТоваровУслуг
| ПО ТаможеннаяДекларацияИмпортТовары.ДокументПоступления = ПриобретениеТоваровУслуг.Ссылка
|ГДЕ
| НЕ ПриобретениеТоваровУслуг.Валюта = &ВалютаРеглУчета
|;
|
|
|ВЫБРАТЬ
| ТаможеннаяДекларацияИмпортТовары.ДокументПоступления КАК ДокументПоступления,
| ТаможеннаяДекларацияИмпортТовары.Номенклатура КАК Номенклатура,
| ТаможеннаяДекларацияИмпортТовары.Характеристика КАК Характеристика,
| ТаможеннаяДекларацияИмпортТовары.Количество * ПоступлениеТоваров.Сумма / ПоступлениеТоваров.Количество КАК Сумма,
| ТаможеннаяДекларацияИмпортТовары.Количество КАК Количество
|ИЗ
| ТаможеннаяДекларацияИмпортТовары КАК ТаможеннаяДекларацияИмпортТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ПоступлениеТоваров КАК ПоступлениеТоваров
| ПО ТаможеннаяДекларацияИмпортТовары.Номенклатура = ПоступлениеТоваров.Номенклатура
| И ТаможеннаяДекларацияИмпортТовары.Характеристика = ПоступлениеТоваров.Характеристика
| И ТаможеннаяДекларацияИмпортТовары.ДокументПоступления = ПоступлениеТоваров.ДокументПоступления
|;
|
|
|ВЫБРАТЬ
| ПоступлениеТоваров.Номенклатура КАК Номенклатура,
| ПоступлениеТоваров.Характеристика КАК Характеристика,
| ПоступлениеТоваров.Сумма КАК Сумма,
| ПоступлениеТоваров.ДокументПоступления КАК ДокументПоступления,
| ПоступлениеТоваров.Количество КАК Количество
|ИЗ
| (ВЫБРАТЬ
| ТаможеннаяДекларацияИмпортТовары.Номенклатура КАК Номенклатура,
| ТаможеннаяДекларацияИмпортТовары.Характеристика КАК Характеристика,
| ТаможеннаяДекларацияИмпортТовары.ДокументПоступления КАК ДокументПоступления,
| СУММА(ТаможеннаяДекларацияИмпортТовары.Количество) КАК КоличествоСумма
| ИЗ
| ТаможеннаяДекларацияИмпортТовары КАК ТаможеннаяДекларацияИмпортТовары
|
| СГРУППИРОВАТЬ ПО
| ТаможеннаяДекларацияИмпортТовары.Номенклатура,
| ТаможеннаяДекларацияИмпортТовары.ДокументПоступления,
| ТаможеннаяДекларацияИмпортТовары.Характеристика) КАК ТДИТСвернутая
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаможеннаяДекларацияИмпортТовары КАК ТаможеннаяДекларацияИмпортТовары
| ПО ТДИТСвернутая.Номенклатура = ТаможеннаяДекларацияИмпортТовары.Номенклатура
| И ТДИТСвернутая.Характеристика = ТаможеннаяДекларацияИмпортТовары.Характеристика
| И ТДИТСвернутая.ДокументПоступления = ТаможеннаяДекларацияИмпортТовары.ДокументПоступления
| И ТДИТСвернутая.КоличествоСумма <> ТаможеннаяДекларацияИмпортТовары.Количество
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПоступлениеТоваров КАК ПоступлениеТоваров
| ПО ТДИТСвернутая.Номенклатура = ПоступлениеТоваров.Номенклатура
| И ТДИТСвернутая.Характеристика = ПоступлениеТоваров.Характеристика
| И ТДИТСвернутая.ДокументПоступления = ПоступлениеТоваров.ДокументПоступления
| И ТДИТСвернутая.КоличествоСумма = ПоступлениеТоваров.Количество
|
|СГРУППИРОВАТЬ ПО
| ПоступлениеТоваров.Номенклатура,
| ПоступлениеТоваров.ДокументПоступления,
| ПоступлениеТоваров.Характеристика,
| ПоступлениеТоваров.Сумма,
| ПоступлениеТоваров.Количество";
Результат = Запрос.ВыполнитьПакет();
Если Результат[3].Пустой() Тогда
Возврат;
КонецЕсли;
РеквизитыПоступления = Результат[3].Выгрузить();
ТаблицаСуммыПоступления = Результат[4].Выгрузить();
ТаблицаКорректировок = Результат[5].Выгрузить();
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
ТекущийРаздел = -1;
Для Каждого Товар Из Объект.Товары Цикл
Если Не ЗначениеЗаполнено(Товар.ДокументПоступления) Тогда
Продолжить;
КонецЕсли;
Если ТекущийРаздел <> Товар.НомерРаздела Тогда
ТекущийРаздел = Товар.НомерРаздела;
Найдено = Объект.Разделы.НайтиСтроки(Новый Структура("НомерРаздела", ТекущийРаздел));
ДанныеРаздела = ?(Найдено.Количество() > 0, Найдено[0], ДанныеПустогоРаздела());
КонецЕсли;
СтрокаВалюта = РеквизитыПоступления.Найти(Товар.ДокументПоступления,"ДокументПоступления");
ВалютаПоступления = ?(СтрокаВалюта = Неопределено, ВалютаДокумента, СтрокаВалюта.Валюта);
ТекущийКурс = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(ВалютаПоступления, Объект.Дата, ВалютаРеглУчета);
ПараметрыТекущегоКурса = Новый Структура("Валюта, КурсЧислитель, КурсЗнаменатель", ВалютаПоступления, ТекущийКурс.КурсЧислитель, ТекущийКурс.КурсЗнаменатель);
Отбор = Новый Структура("Номенклатура,Характеристика,ДокументПоступления,Количество");
ЗаполнитьЗначенияСвойств(Отбор,Товар);
СтрокиПоступления = ТаблицаСуммыПоступления.НайтиСтроки(Отбор);
Если СтрокиПоступления.Количество() > 0 Тогда
СтрокаПоступления = СтрокиПоступления[0];
Товар.ТаможеннаяСтоимость = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(СтрокаПоступления.Сумма, ПараметрыТекущегоКурса, ПараметрыНовогоКурса);
ОбрабатываемыеСтроки.Добавить(Товар);
ПересчитатьПоля(Товар, "СуммаПошлины, СуммаНДС", ДанныеРаздела, Объект.ИспользоватьРазделы);
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
Действия,
Объект.Товары,
КэшированныеЗначения);
Если ТаблицаКорректировок.Количество() > 0 Тогда
ТекущийРаздел = -1;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для каждого ТоварКор Из ТаблицаКорректировок Цикл
СуммаКРаспределению = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(ТоварКор.Сумма, ПараметрыТекущегоКурса, ПараметрыНовогоКурса);
Отбор = Новый Структура("Номенклатура,Характеристика,ДокументПоступления");
ЗаполнитьЗначенияСвойств(Отбор,ТоварКор);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Если ТекущийРаздел <> НайденныеСтроки[0].НомерРаздела Тогда
ТекущийРаздел = НайденныеСтроки[0].НомерРаздела;
Найдено = Объект.Разделы.НайтиСтроки(Новый Структура("НомерРаздела", ТекущийРаздел));
ДанныеРаздела = ?(Найдено.Количество() > 0, Найдено[0], ДанныеПустогоРаздела());
КонецЕсли;
СтрокаВалюта = РеквизитыПоступления.Найти(НайденныеСтроки[0].ДокументПоступления,"ДокументПоступления");
ВалютаПоступления = ?(СтрокаВалюта = Неопределено, ВалютаДокумента, СтрокаВалюта.Валюта);
ТекущийКурс = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(ВалютаПоступления, Объект.Дата, ВалютаРеглУчета);
ПараметрыТекущегоКурса = Новый Структура("Валюта, КурсЧислитель, КурсЗнаменатель", ВалютаПоступления, ТекущийКурс.КурсЧислитель, ТекущийКурс.КурсЗнаменатель);
ТаблицаТаможеннойСтоимости = Объект.Товары.Выгрузить(НайденныеСтроки, "ТаможеннаяСтоимость");
ТаблицаТаможеннойСтоимости.Свернуть(,"ТаможеннаяСтоимость");
НайденныеСтроки[0].ТаможеннаяСтоимость = НайденныеСтроки[0].ТаможеннаяСтоимость + СуммаКРаспределению - ТаблицаТаможеннойСтоимости[0].ТаможеннаяСтоимость;
ОбрабатываемыеСтроки.Добавить(НайденныеСтроки[0]);
ПересчитатьПоля(НайденныеСтроки[0], "СуммаПошлины, СуммаНДС", ДанныеРаздела, Объект.ИспользоватьРазделы);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
Действия,
Объект.Товары,
КэшированныеЗначения);
КонецЕсли;
КопияТовар = Объект.Товары.Выгрузить(,"НомерРаздела,ТаможеннаяСтоимость");
КопияТовар.Свернуть("НомерРаздела","ТаможеннаяСтоимость");
Для Каждого Раздел Из Объект.Разделы Цикл
СтрокаРаздела = КопияТовар.Найти(Раздел.НомерРаздела,"НомерРаздела");
Если СтрокаРаздела <> Неопределено Тогда
Раздел.ТаможеннаяСтоимость = СтрокаРаздела.ТаможеннаяСтоимость;
ПересчитатьПоля(Раздел, "СуммаПошлины, СуммаНДС", Раздел, Объект.ИспользоватьРазделы);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ЕстьСтрокиОтличнойВалюты()
ДокументыПоступления = Объект.Товары.Выгрузить(,"ДокументПоступления");
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ТаблицаПоступлений",ДокументыПоступления);
Запрос.УстановитьПараметр("ВалютаРеглУчета", ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация));
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаПоступлений.ДокументПоступления
|ПОМЕСТИТЬ ТаблицаПоступлений
|ИЗ
| &ТаблицаПоступлений КАК ТаблицаПоступлений
|;
|
|
|ВЫБРАТЬ
| ТаблицаПоступлений.ДокументПоступления
|ИЗ
| ТаблицаПоступлений КАК ТаблицаПоступлений
|ГДЕ
| НЕ ТаблицаПоступлений.ДокументПоступления.Валюта = &ВалютаРеглУчета";
РезультатЗапроса = Запрос.Выполнить();
Возврат Не РезультатЗапроса.Пустой();
КонецФункции
&НаСервере
Процедура ПоставщикПриИзмененииСервер()
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Поставщик, Объект.КонтрагентПоставщика);
ЗаполнитьДанныеФормы(Истина);
НастроитьЭлементыФормы();
ОбновитьИнформациюПоПоступлениям();
ОсичтитьХозяйственнуюОперацию();
КонецПроцедуры
&НаСервере
Процедура КонтрагентПоставщикаПриИзмененииСервер()
ОбновитьИнформациюПоПоступлениям();
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЗаполнитьДоговорПоУмолчанию();
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Объект.Организация;
СтруктураПараметров.БанковскийСчет = Объект.БанковскийСчетОрганизации;
Объект.БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
УстановитьИспользованиеПодакцизныхТоваров();
АктуализироватьСуммуНДС();
ОбновитьСуммуДокументаНаФорме();
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Организация");
ЗаполнитьДанныеФормы(Истина);
НастроитьЭлементыФормы();
ПересчитатьКоличествоРНПТ();
ОсичтитьХозяйственнуюОперацию();
КонецПроцедуры
&НаСервере
Процедура ВариантОформленияПриИзмененииСервер(ВалютаИзменена)
ЗаполнитьДанныеФормы();
Если РасчетыСТаможней Тогда
Объект.ФормаОплаты = Перечисления.ФормыОплаты.Безналичная;
ЗаполнитьДоговорПоУмолчанию();
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НастроитьЭлементыФормы();
Иначе
НастроитьЭлементыФормы();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПартнерПриИзмененииСервер()
Если ЗначениеЗаполнено(Объект.Партнер) Тогда
Документы.ТаможеннаяДекларацияИмпорт.ЗаполнитьПоПартнеру(Объект, Объект.Партнер);
КонецЕсли;
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить("Договор");
МассивРеквизитов.Добавить("НаправлениеДеятельности");
МассивРеквизитов.Добавить("Контрагент");
МассивРеквизитов.Добавить("Организация");
МассивРеквизитов.Добавить("Соглашение");
МассивРеквизитов.Добавить("Партнер");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивРеквизитов);
ЗаполнитьДанныеФормы(Истина);
НастроитьЭлементыФормы();
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииСервер()
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
Объект.БанковскийСчетКонтрагента = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Объект.Контрагент, , Объект.БанковскийСчетКонтрагента);
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Контрагент");
НастроитьЭлементыФормы();
КонецПроцедуры
&НаСервере
Процедура СоглашениеПриИзмененииСервер()
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
УсловияЗакупок = ЗакупкиСервер.ПолучитьУсловияЗакупок(Объект.Соглашение);
Документы.ТаможеннаяДекларацияИмпорт.ЗаполнитьПоУсловиямЗакупок(Объект, УсловияЗакупок);
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить("Партнер");
МассивРеквизитов.Добавить("Договор");
МассивРеквизитов.Добавить("НаправлениеДеятельности");
МассивРеквизитов.Добавить("Контрагент");
МассивРеквизитов.Добавить("Организация");
МассивРеквизитов.Добавить("Соглашение");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивРеквизитов);
ЗаполнитьДанныеФормы(Истина);
НастроитьЭлементыФормы();
КонецПроцедуры
&НаСервере
Процедура ДокументПоступленияПриИзмененииСервер(ИдентификаторСтроки)
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ИдентификаторСтроки);
Если ТекущаяСтрока <> Неопределено Тогда
РеквизитыПоступления = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ТекущаяСтрока.ДокументПоступления, "ЗакупкаПодДеятельность, ХозяйственнаяОперация");
ТекущаяСтрока.ЗакупкаПодДеятельность = РеквизитыПоступления.ЗакупкаПодДеятельность;
ТекущаяСтрока.ХозяйственнаяОперация = РеквизитыПоступления.ХозяйственнаяОперация;
КонецЕсли;
ОбновитьИнформациюПоПоступлениям();
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "НаправлениеДеятельности");
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДоговорПриИзмененииСервер()
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Договор");
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииСервер()
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма,"Дата");
УчетПрослеживаемыхТоваровЛокализация.УстановитьВидимостьКоличестваРНПТ(ЭтаФорма, Объект.Дата);
Если Не Элементы.ТоварыГруппаКоличествоПоРНПТ.Видимость Тогда
ПересчитатьКоличествоРНПТ();
КонецЕсли;
УстановитьИспользованиеПодакцизныхТоваров();
АктуализироватьСуммуНДС();
ОбновитьСуммуДокументаНаФорме();
КонецПроцедуры
#КонецОбласти
#Область ОбработкаКомандФормыНаСервере
&НаСервере
Процедура РаспределитьНаТоварыСервер(РаспределятьТаможеннуюСтоимость = Истина)
Отбор = Новый Структура("НомерРаздела");
Если РаспределятьТаможеннуюСтоимость Тогда
СписокСтрокРазделов = Элементы.Разделы.ВыделенныеСтроки;
Иначе
СписокСтрокРазделов = Новый Массив();
СписокСтрокРазделов.Добавить(Элементы.Разделы.ТекущаяСтрока);
КонецЕсли;
Разделы = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(Объект.Разделы, СписокСтрокРазделов);
Для Каждого Раздел Из Разделы Цикл
Отбор.НомерРаздела = Раздел.НомерРаздела;
ТоварыРаздела = Объект.Товары.Выгрузить(Отбор);
Если ТоварыРаздела.Количество() > 0 Тогда
Коэффициенты = ТоварыРаздела.ВыгрузитьКолонку("ТаможеннаяСтоимость");
Если РаспределятьТаможеннуюСтоимость Тогда
НовыеСуммы = ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(Раздел.ТаможеннаяСтоимость, Коэффициенты);
Если НовыеСуммы <> Неопределено Тогда
ТоварыРаздела.ЗагрузитьКолонку(НовыеСуммы, "ТаможеннаяСтоимость");
КонецЕсли;
КонецЕсли;
НовыеСуммы = ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(Раздел.СуммаПошлины, Коэффициенты);
Если НовыеСуммы <> Неопределено Тогда
ТоварыРаздела.ЗагрузитьКолонку(НовыеСуммы, "СуммаПошлины");
КонецЕсли;
КонецЕсли;
Для каждого Товар Из ТоварыРаздела Цикл
Объект.Товары[Товар.НомерСтроки-1].СтавкаНДС = Раздел.СтавкаНДС;
Объект.Товары[Товар.НомерСтроки-1].СтавкаПошлины = Раздел.СтавкаПошлины;
Если РаспределятьТаможеннуюСтоимость Тогда
Объект.Товары[Товар.НомерСтроки-1].ТаможеннаяСтоимость = ?(Раздел.ТаможеннаяСтоимость <> 0., Товар.ТаможеннаяСтоимость, 0.);
КонецЕсли;
Объект.Товары[Товар.НомерСтроки-1].СуммаПошлины = ?(Раздел.СуммаПошлины <> 0., Товар.СуммаПошлины, 0.);
Если Раздел.СуммаНДС <> 0. Тогда
СтрокаТовары = Объект.Товары[Товар.НомерСтроки-1];
СтрокаТовары.СуммаНДС = ЦенообразованиеКлиентСервер.РассчитатьСуммуНДС(
СтрокаТовары.ТаможеннаяСтоимость + СтрокаТовары.СуммаПошлины + СтрокаТовары.СуммаАкциза,
СтрокаТовары.СтавкаНДС,
Ложь);
Иначе
Объект.Товары[Товар.НомерСтроки-1].СуммаНДС = 0;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
КонецПроцедуры
&НаСервере
Процедура РассчитатьПоТоварамСервер()
Отбор = Новый Структура("НомерРаздела");
Разделы = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(Объект.Разделы, Элементы.Разделы.ВыделенныеСтроки);
Для Каждого Раздел Из Разделы Цикл
Отбор.НомерРаздела = Раздел.НомерРаздела;
ТоварыРаздела = Объект.Товары.НайтиСтроки(Отбор);
Если ТоварыРаздела.Количество() > 0 Тогда
Раздел.ТаможеннаяСтоимость = 0.;
Раздел.СуммаАкциза = 0;
ПересчитатьПоля(Раздел, "СуммаПошлины, СуммаНДС", Раздел, Объект.ИспользоватьРазделы);
Для Каждого Товар Из ТоварыРаздела Цикл
Раздел.ТаможеннаяСтоимость = Раздел.ТаможеннаяСтоимость + Товар.ТаможеннаяСтоимость;
Раздел.СуммаПошлины = Раздел.СуммаПошлины + Товар.СуммаПошлины;
Раздел.СуммаНДС = Раздел.СуммаНДС + Товар.СуммаНДС;
Раздел.СуммаАкциза = Раздел.СуммаАкциза + Товар.СуммаАкциза;
КонецЦикла;
ПересчитатьПоля(Раздел, "СтавкаПошлины", Раздел, Объект.ИспользоватьРазделы);
КонецЕсли;
КонецЦикла;
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораДобавитьТовары(ВыбранноеЗначение, ДанныеРаздела, УдалятьСтроки, ИмяАдреса = Неопределено, ИмяТабчасти=Неопределено, ЗаполнятьСтоимость = Ложь)
СтруктураДействий = Новый Структура;
Если Не Объект.ИспользоватьРазделы Тогда
НастройкиУчетаНДС = УчетНДСУП.НастройкиУчета();
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполнитьСтавкуНДС.НалогообложениеНДС = НастройкиУчетаНДС.ОсновнойВидДеятельностиНДСЗакупки;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
КонецЕсли;
Если ИспользоватьПодакцизныеТовары Тогда
ПараметрыПересчетаСуммыАкциза =
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыАкциза(Объект, Истина);
СтруктураДействий.Вставить("ПересчитатьСуммуАкциза", ПараметрыПересчетаСуммыАкциза);
КонецЕсли;
УстановитьДействияДополнительныхПризнаковТоваров(СтруктураДействий);
Если УдалятьСтроки Тогда
СтрокиУдаления = Объект.Товары.НайтиСтроки(Новый Структура("НомерРаздела", ДанныеРаздела.НомерРаздела));
Для Каждого СтрокаУдаления Из СтрокиУдаления Цикл
Объект.Товары.Удалить(СтрокаУдаления);
КонецЦикла;
КонецЕсли;
Если ИмяАдреса<>Неопределено Тогда
БуферТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение[ИмяАдреса]);
Если ИмяТабчасти<>Неопределено Тогда
БуферТоваров = БуферТоваров[ИмяТабчасти];
КонецЕсли;
Иначе
БуферТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение);
КонецЕсли;
ОбрабатываемыеСтроки = Новый Массив;
Для каждого ЭлементБуфера Из БуферТоваров Цикл
Товар = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(
Товар,
ЭлементБуфера);
Если ЗаполнятьСтоимость Тогда
Товар.ТаможеннаяСтоимость = ЭлементБуфера.Сумма;
КонецЕсли;
Если Объект.ИспользоватьРазделы Тогда
ЗаполнитьЗначенияСвойств(Товар, ДанныеРаздела, "НомерРаздела, СтавкаНДС, СтавкаПошлины, СтранаПроисхождения");
КонецЕсли;
ОбновитьДанныеСтрокиПриИзмененииПорядковогоНомераТовара(Товар, Объект);
ОбрабатываемыеСтроки.Добавить(Товар);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
Для каждого Товар Из ОбрабатываемыеСтроки Цикл
ПересчитатьПоля(Товар, "СуммаПошлины, СуммаНДС", ДанныеРаздела, Объект.ИспользоватьРазделы);
КонецЦикла;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ОбновитьИнформациюПоПоступлениям();
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
ПересчитатьСуммыВРазделахНаСервере(ДанныеРаздела);
КонецПроцедуры
&НаСервере
Процедура УстановитьСтоимостьСервер(Знач ВидЦены = Неопределено, ОтборТоваров = Неопределено)
Если ОтборТоваров = Неопределено Тогда
ТоварыЗаполнения = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
Иначе
ТоварыЗаполнения = Объект.Товары.НайтиСтроки(ОтборТоваров);
КонецЕсли;
ВидЦены = ?(ЗначениеЗаполнено(ВидЦены), ВидЦены, Справочники.ВидыЦенПоставщиков.ПустаяСсылка());
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена");
ПараметрыЗаполнения.Вставить("Дата", ДатаДокументаСервер(Объект.Дата));
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦеныПоставщика", ВидЦены);
ЦеныРассчитаны = ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(Объект.Товары, ТоварыЗаполнения, ПараметрыЗаполнения);
Действия = Новый Структура;
УстановитьДействияДополнительныхПризнаковТоваров(Действия);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив;
ТекущийРаздел = -1;
Для Каждого Товар Из ТоварыЗаполнения Цикл
Если ТекущийРаздел <> Товар.НомерРаздела Тогда
ТекущийРаздел = Товар.НомерРаздела;
Найдено = Объект.Разделы.НайтиСтроки(Новый Структура("НомерРаздела", ТекущийРаздел));
ДанныеРаздела = ?(Найдено.Количество() > 0, Найдено[0], ДанныеПустогоРаздела());
КонецЕсли;
Товар.ТаможеннаяСтоимость = Товар.КоличествоУпаковок * Товар.Цена;
ОбрабатываемыеСтроки.Добавить();
ПересчитатьПоля(Товар, "СуммаПошлины, СуммаНДС", ДанныеРаздела, Объект.ИспользоватьРазделы);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
Действия,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
КонецПроцедуры
#КонецОбласти
#Область ПоддержкаТаблицФормы
&НаКлиенте
Процедура АктивироватьРаздел()
РазделОтбора = ДанныеТекущегоРаздела(Элементы.Разделы).НомерРаздела;
ПоРазделам = Не Элементы.ТоварыПоказатьВсеТовары.Пометка;
Товары = Элементы.Товары;
Если ПоРазделам И (Товары.ОтборСтрок = Неопределено Или Товары.ОтборСтрок.НомерРаздела <> РазделОтбора) Тогда
Товары.ОтборСтрок = Новый ФиксированнаяСтруктура("НомерРаздела", РазделОтбора);
ИначеЕсли Не ПоРазделам И Товары.ОтборСтрок<>Неопределено Тогда
Товары.ОтборСтрок = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция НовыйНомерРаздела(Разделы)
МаксимальныйНомер = 0;
Для Каждого Раздел Из Разделы Цикл
Если Раздел.НомерРаздела > МаксимальныйНомер Тогда
МаксимальныйНомер = Раздел.НомерРаздела;
КонецЕсли;
КонецЦикла;
Возврат МаксимальныйНомер + 1;
КонецФункции
&НаСервере
Процедура ОчиститьНомераРазделовТоваров(СтарыеНомера)
Для Каждого Товар Из Объект.Товары Цикл
Если СтарыеНомера[Товар.НомерРаздела]<>Неопределено Тогда
Товар.НомерРаздела = 0;
КонецЕсли;
КонецЦикла;
Выбор = Элементы.ТоварыНомерРаздела.СписокВыбора;
Для Каждого СтарыйНомер Из СтарыеНомера Цикл
НайденныйЭлемент = Выбор.НайтиПоЗначению(СтарыйНомер.Значение);
Выбор.Удалить(НайденныйЭлемент);
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаменитьЭлементВСпискеВыбора(Выбор, СтароеЗначение, НовоеЗначение, Формат);
ЭлементВыбора = Выбор.НайтиПоЗначению(СтароеЗначение);
Если Неопределено <> ЭлементВыбора Тогда
Выбор.Удалить(ЭлементВыбора);
КонецЕсли;
ЭлементВыбора = Выбор.НайтиПоЗначению(СтароеЗначение);
Если Неопределено = ЭлементВыбора Тогда
Выбор.Добавить(НовоеЗначение, Формат(НовоеЗначение, Формат));
КонецЕсли;
Выбор.СортироватьПоЗначению();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ДанныеТекущегоРаздела(Разделы)
ДанныеРаздела = ДанныеПустогоРаздела();
Если Разделы.ТекущиеДанные <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(ДанныеРаздела, Разделы.ТекущиеДанные);
КонецЕсли;
Возврат ДанныеРаздела;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ДанныеПустогоРаздела()
СтруктураВозврата = Новый Структура;
СтруктураВозврата.Вставить("НомерРаздела", 0);
СтруктураВозврата.Вставить("СтавкаПошлины", 0.);
СтруктураВозврата.Вставить("СтавкаНДС", Неопределено);
СтруктураВозврата.Вставить("Склад", Неопределено);
СтруктураВозврата.Вставить("СтранаПроисхождения", Неопределено);
Возврат СтруктураВозврата;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ПересчитатьПоля(ТекущиеДанные, Знач ПоляПересчета, Знач ДанныеРаздела, Знач ИспользоватьРазделы)
ПоляПересчета = НРег(ПоляПересчета);
Если СтрНайти(ПоляПересчета, "суммапошлины")>0 Тогда
Если ИспользоватьРазделы Тогда
ТекущиеДанные.СтавкаПошлины = ДанныеРаздела.СтавкаПошлины;
КонецЕсли;
ТекущиеДанные.СуммаПошлины = ТекущиеДанные.ТаможеннаяСтоимость * ТекущиеДанные.СтавкаПошлины / 100.;
ИначеЕсли СтрНайти(ПоляПересчета, "ставкапошлины")>0 Тогда
ТекущиеДанные.СтавкаПошлины =
100. * ?(ТекущиеДанные.ТаможеннаяСтоимость=0., 0., ТекущиеДанные.СуммаПошлины / ТекущиеДанные.ТаможеннаяСтоимость);
КонецЕсли;
Если СтрНайти(ПоляПересчета, "суммандс")>0 Тогда
Если ИспользоватьРазделы Тогда
ТекущиеДанные.СтавкаНДС = ДанныеРаздела.СтавкаНДС;
КонецЕсли;
ТекущиеДанные.СуммаНДС =
ЦенообразованиеКлиентСервер.РассчитатьСуммуНДС(
ТекущиеДанные.ТаможеннаяСтоимость + ТекущиеДанные.СуммаПошлины + ТекущиеДанные.СуммаАкциза,
ТекущиеДанные.СтавкаНДС,
Ложь);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоляТабчасти(ИмяТабчасти, ПоляЗначения, ОтборТабчасти = Неопределено)
Если ОтборТабчасти = Неопределено Тогда
Строки =
РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(Объект[ИмяТабчасти], Элементы[ИмяТабчасти].ВыделенныеСтроки);
Иначе
Строки = Объект[ИмяТабчасти].НайтиСтроки(ОтборТабчасти);
КонецЕсли;
Для Каждого Строка Из Строки Цикл
ЗаполнитьЗначенияСвойств(Строка, ПоляЗначения);
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция НомерРазделаУникальный(Разделы, НомерРаздела)
НомерВстречался = Ложь;
Для Каждого Раздел Из Разделы Цикл
Если НомерВстречался И (Раздел.НомерРаздела = НомерРаздела) Тогда
Возврат Ложь;
КонецЕсли;
НомерВстречался = НомерВстречался Или (Раздел.НомерРаздела = НомерРаздела);
КонецЦикла;
Возврат Истина;
КонецФункции
&НаСервере
Процедура АктуализироватьСуммуНДС()
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
Если ИспользоватьПодакцизныеТовары Тогда
ПараметрыЗаполненияПризнакаПодакцизныйТовар =
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияПризнакаПодакцизныйТовар(Объект);
ПараметрыПересчетаСуммыАкциза =
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыАкциза(Объект, Истина);
СтруктураДействий.Вставить("ЗаполнитьПризнакПодакцизныйТовар", ПараметрыЗаполненияПризнакаПодакцизныйТовар);
СтруктураДействий.Вставить("ПересчитатьСуммуАкциза", ПараметрыПересчетаСуммыАкциза);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий);
Для Каждого Строка Из Объект.Товары Цикл
Если Не ИспользоватьПодакцизныеТовары Тогда
Строка.СуммаАкциза = 0;
КонецЕсли;
Строка.СуммаНДС =
ЦенообразованиеКлиентСервер.РассчитатьСуммуНДС(
Строка.ТаможеннаяСтоимость + Строка.СуммаПошлины + Строка.СуммаАкциза,
Строка.СтавкаНДС,
Ложь);
КонецЦикла;
Если Объект.ИспользоватьРазделы Тогда
СуммыПоРазделам = Объект.Товары.Выгрузить(, "НомерРаздела, СуммаАкциза, СуммаНДС");
СуммыПоРазделам.Свернуть("НомерРаздела","СуммаАкциза, СуммаНДС");
СуммыПоРазделам.Индексы.Добавить("НомерРаздела");
Для Каждого Раздел Из Объект.Разделы Цикл
СтрокаРаздела = СуммыПоРазделам.Найти(Раздел.НомерРаздела, "НомерРаздела");
Если СтрокаРаздела <> Неопределено Тогда
Раздел.СуммаАкциза = СтрокаРаздела.СуммаАкциза;
Раздел.СуммаНДС = СтрокаРаздела.СуммаНДС;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьСуммыВРазделе(ПоВсемРазделам = Ложь)
Если Не Объект.ИспользоватьРазделы Или Не ИспользоватьПодакцизныеТовары Тогда
Возврат;
КонецЕсли;
Если ПоВсемРазделам Тогда
Разделы = Объект.Разделы;
Иначе
СписокСтрокРазделов = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Элементы.Разделы.ТекущаяСтрока);
Разделы = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(Объект.Разделы, СписокСтрокРазделов);
КонецЕсли;
Отбор = Новый Структура("НомерРаздела");
Для Каждого Раздел Из Разделы Цикл
Раздел.СуммаАкциза = 0;
Раздел.СуммаНДС = 0;
Отбор.НомерРаздела = Раздел.НомерРаздела;
ТоварыРаздела = Объект.Товары.НайтиСтроки(Отбор);
Для Каждого СтрокаРаздела Из ТоварыРаздела Цикл
Раздел.СуммаАкциза = Раздел.СуммаАкциза + СтрокаРаздела.СуммаАкциза;
Раздел.СуммаНДС = Раздел.СуммаНДС + СтрокаРаздела.СуммаНДС;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПересчитатьСуммыВРазделахНаСервере(ДанныеРаздела)
Если Не Объект.ИспользоватьРазделы Или Не ИспользоватьПодакцизныеТовары Тогда
Возврат;
КонецЕсли;
Отбор = Новый Структура("НомерРаздела", ДанныеРаздела.НомерРаздела);
Разделы = Объект.Разделы.Выгрузить(Отбор, "НомерСтроки");
Для Каждого СтрокаРаздела Из Разделы Цикл
ТоварыРаздела = Объект.Товары.Выгрузить(Отбор, "СуммаАкциза, СуммаНДС");
ТоварыРаздела.Свернуть(,"СуммаАкциза, СуммаНДС");
Раздел = Объект.Разделы[СтрокаРаздела.НомерСтроки-1];
Раздел.СуммаАкциза = ТоварыРаздела[0].СуммаАкциза;
Раздел.СуммаНДС = ТоварыРаздела[0].СуммаНДС;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "")
Если НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтаФорма,ПараметрыУказанияСерий,Текст)Тогда
ТекстИсключения = НСтр("ru = 'Ошибка при попытке указать серии - в этом документе для указания серий не нужен серверный вызов.'");
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Функция ПоместитьВХранилище(ИмяТабчасти, ИменаПолей, ПараметрыОтбора)
Возврат ПоместитьВоВременноеХранилище(Объект[ИмяТабчасти].Выгрузить(ПараметрыОтбора, ИменаПолей), УникальныйИдентификатор);
КонецФункции
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности");
ЗаполнитьДанныеФормы();
УстановитьИспользованиеПодакцизныхТоваров();
ЗаполнитьДополнительныеПризнакиТоваров();
ЗаполнитьПорядковыйНомерТовараВТаблицеТоварыСервер();
НастроитьЭлементыФормы();
НастроитьВыборРазделов();
НомерРазделаПредел = Метаданные.Документы.ТаможеннаяДекларацияИмпорт.ТабличныеЧасти.Разделы.Реквизиты.НомерРаздела.МаксимальноеЗначение;
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект,
Документы.ТаможеннаяДекларацияИмпорт));
ОбновитьИнформациюПоПоступлениям();
КорректныйПериод = ЗакупкиСервер.КорректныйПериодВводаДокументовНомераТаможеннойДекларации();
НачалоКорректногоПериода = КорректныйПериод.НачалоКорректногоПериода;
КонецКорректногоПериода = КорректныйПериод.КонецКорректногоПериода;
ТекущийТекстНомераДекларации = Объект.НомерДекларации;
ОбновитьИнформациюОбОшибкахВНомере(ТекущийТекстНомераДекларации,
НачалоКорректногоПериода,
КонецКорректногоПериода,
Элементы.ОшибкаВНомереТаможеннойДекларации);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДанныеФормы(ОбновитьОбъект = Ложь)
Если Не ЗначениеЗаполнено(ВалютаДокумента) Тогда
ВалютаДокумента = Объект.Валюта;
КонецЕсли;
РасчетыСТаможней = (Объект.ВариантОформления = Перечисления.ХозяйственныеОперации.ОформлениеГТДСамостоятельно);
СтатусДокумента = Объект.Статус;
УчетНДСУП.УстановитьЗаголовокСостоянияОплатыНДСПоСчетуФактуре(
Объект.Ссылка,
Элементы.СостояниеОплатыПоСчетуФактуре,
Объект.ОплатаЧерезЕдиныйЛицевойСчет);
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция РазностиИтогов(Разделы, Товары)
Возврат Новый Структура("РазностьСтоимостей, РазностьПошлин, РазностьНДС",
Разделы.Итог("ТаможеннаяСтоимость") - Товары.Итог("ТаможеннаяСтоимость"),
Разделы.Итог("СуммаПошлины") - Товары.Итог("СуммаПошлины"),
Разделы.Итог("СуммаНДС") - Товары.Итог("СуммаНДС"));
КонецФункции
&НаСервере
Процедура УстановитьДействияДополнительныхПризнаковТоваров(Действия)
Действия.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
Действия.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
Действия.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
Действия.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
Действия.Вставить("ПересчитатьКоличествоЕдиниц");
Если ИспользоватьПодакцизныеТовары Тогда
ПараметрыЗаполненияПризнакаПодакцизныйТовар =
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияПризнакаПодакцизныйТовар(Объект);
Действия.Вставить("ЗаполнитьПризнакПодакцизныйТовар", ПараметрыЗаполненияПризнакаПодакцизныйТовар);
КонецЕсли;
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(Действия);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
Действия,
"Склад",
Истина);
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыВыбораВидаЗапасов()
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Организация", "Объект.Организация"));
Если ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета") Тогда
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Номенклатура", "Элементы.Товары.ТекущиеДанные.Номенклатура"));
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоПоставщикам") Тогда
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Поставщик", "Объект.Поставщик"));
КонецЕсли;
Элементы.ТоварыВидЗапасов.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивПараметров);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДополнительныеПризнакиТоваров()
Действия = Новый Структура;
УстановитьДействияДополнительныхПризнаковТоваров(Действия);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, Действия, Неопределено);
КонецПроцедуры
&НаСервере
Процедура НастроитьЭлементыФормы()
Элементы.Контрагент.Заголовок = ?(РасчетыСТаможней, НСтр("ru='Контрагент таможни'"), НСтр("ru='Контрагент брокера'"));
Элементы.БанковскийСчетКонтрагента.Заголовок = ?(РасчетыСТаможней,
НСтр("ru='Счет контрагента таможни'"),
НСтр("ru='Счет контрагента брокера'"));
ПараметрыВыбораПартнер = Новый Массив;
Если РасчетыСТаможней Тогда
ПараметрыВыбораПартнер.Добавить(Новый ПараметрВыбора("Отбор.ПрочиеОтношения", РасчетыСТаможней));
Иначе
ПараметрыВыбораПартнер.Добавить(Новый ПараметрВыбора("Отбор.Поставщик", Истина));
КонецЕсли;
Элементы.Партнер.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораПартнер);
Элементы.ГруппаРасходы.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьУчетПрочихДоходовРасходов");
Элементы.Соглашение.Доступность = Не РасчетыСТаможней;
ЗакупкиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
Элементы.Договор.ОтметкаНезаполненного =
Элементы.Договор.Доступность И ЗначениеЗаполнено(Объект.Соглашение) И Не ЗначениеЗаполнено(Объект.Договор);
ВалютыДокументаИРеглУчетаОтличаются = Объект.Валюта <> ВалютаРегламентированногоУчета;
Если ВалютыДокументаИРеглУчетаОтличаются Тогда
ТекстЗаголовкаСуммаАкциза = СтрШаблон(НСтр("ru = 'Сумма акциза, %1'"), ВалютаРегламентированногоУчета);
Иначе
ТекстЗаголовкаСуммаАкциза = НСтр("ru = 'Сумма акциза'");
КонецЕсли;
Элементы.РазделыСуммаАкциза.Заголовок = ТекстЗаголовкаСуммаАкциза;
Элементы.ТоварыСуммаАкциза.Заголовок = ТекстЗаголовкаСуммаАкциза;
Элементы.ВалютаРегламентированногоУчетаРазделы.Видимость = ВалютыДокументаИРеглУчетаОтличаются;
Элементы.ВалютаРегламентированногоУчета.Видимость = ВалютыДокументаИРеглУчетаОтличаются;
Элементы.ИтогиРазделыАкцизРазделы.Видимость = ИспользоватьПодакцизныеТовары;
Элементы.ИтогиТоварыСуммаАкциза.Видимость = ИспользоватьПодакцизныеТовары;
НастроитьСервисыЗаполнения(Элементы, Объект);
УстановитьПараметрыВыбораВидаЗапасов();
КонецПроцедуры
&НаСервере
Процедура НастроитьВыборРазделов()
Выбор = Элементы.ТоварыНомерРаздела.СписокВыбора;
Выбор.Очистить();
Для Каждого Раздел Из Объект.Разделы Цикл
Выбор.Добавить(Раздел.НомерРаздела, Формат(Раздел.НомерРаздела, Элементы.ТоварыНомерРаздела.Формат));
КонецЦикла;
Выбор.СортироватьПоЗначению();
Выбор.Вставить(0, 0, Формат(0, Элементы.ТоварыНомерРаздела.Формат));
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьСервисыЗаполнения(Элементы, Объект)
ПоРазделам = Не Элементы.ТоварыПоказатьВсеТовары.Пометка;
Элементы.ТоварыПодобратьИзПоступлений.Доступность = ПоРазделам;
Элементы.ТоварыПодобратьТовары.Доступность = ПоРазделам;
Элементы.ТоварыПодобратьИзОформления.Доступность = ПоРазделам;
Элементы.ТоварыЗаполнитьНомерРаздела.Доступность = Не ПоРазделам;
Элементы.ТоварыУстановитьНомерРаздела.Доступность = Не ПоРазделам;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
ОперацииОтбораСоглашенийДоговоров = Документы.ТаможеннаяДекларацияИмпорт.ОперацииОтбораСоглашенийДоговоров();
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = Объект.ВалютаВзаиморасчетов;
Договор = ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(
Объект, ОперацииОтбораСоглашенийДоговоров, ДопПараметры);
Если (Договор <> Объект.Договор) Тогда
Объект.Договор = Договор;
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчетОрганизации, Объект.БанковскийСчетКонтрагента);
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Договор");
КонецПроцедуры
&НаКлиенте
Функция ДатаДокумента(ОбъектДата)
Возврат ?(ЗначениеЗаполнено(ОбъектДата), ОбъектДата, ОбщегоНазначенияКлиент.ДатаСеанса());
КонецФункции
&НаСервере
Функция ДатаДокументаСервер(ОбъектДата)
Возврат ?(ЗначениеЗаполнено(ОбъектДата), ОбъектДата, ТекущаяДатаСеанса());
КонецФункции
&НаКлиенте
Процедура ВыбратьВидЦеныПоставщика(ВидЦеныПоставщика,ДляНезаполненныхСтрок)
ВидЦеныПоставщика = ВидЦеныПоставщикаПоУмолчанию(ДатаДокумента(Объект.Дата), Объект.Поставщик);
Если ВидЦеныПоставщика = Неопределено Тогда
ПараметрыПодбора = Новый Структура;
ПараметрыПодбора.Вставить("Отбор", Новый Структура("Владелец", Объект.Поставщик));
ОткрытьФорму("Справочник.ВидыЦенПоставщиков.ФормаВыбора",
ПараметрыПодбора,,,,,
Новый ОписаниеОповещения("ВыбратьВидЦеныПоставщикаЗавершение",ЭтотОбъект, Новый Структура("ДляНезаполненныхСтрок", ДляНезаполненныхСтрок)),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Иначе
УстановитьСтоимость(ВидЦеныПоставщика, ДляНезаполненныхСтрок);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьВидЦеныПоставщикаЗавершение(Результат, ДопПараметры) Экспорт
ВидЦеныПоставщика = Результат;
ДляНезаполненныхСтрок = ДопПараметры.ДляНезаполненныхСтрок;
Если ЗначениеЗаполнено(ВидЦеныПоставщика) Тогда
УстановитьСтоимость(ВидЦеныПоставщика, ДляНезаполненныхСтрок);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСтоимость(ВидЦеныПоставщика, ДляНезаполненныхСтрок)
Если ДляНезаполненныхСтрок Тогда
УстановитьСтоимостьСервер(ВидЦеныПоставщика, Новый Структура("ТаможеннаяСтоимость", 0.));
Иначе
УстановитьСтоимостьСервер(ВидЦеныПоставщика);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ВидЦеныПоставщикаПоУмолчанию(ДатаДокумента, Партнер)
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос("
|ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 2
| Цены.ВидЦеныПоставщика
|ИЗ
| РегистрСведений.ЦеныНоменклатурыПоставщиков КАК Цены
|ГДЕ
| Цены.Партнер = &Партнер
| И Цены.Период <= КОНЕЦПЕРИОДА(&ДатаДокумента, ДЕНЬ)
|");
Запрос.УстановитьПараметр("ДатаДокумента", ДатаДокумента);
Запрос.УстановитьПараметр("Партнер", Партнер);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() > 1 Тогда
Возврат Неопределено;
ИначеЕсли Выборка.Количество() = 0 Тогда
Возврат Справочники.ВидыЦенПоставщиков.ПустаяСсылка();
КонецЕсли;
Пока Выборка.Следующий() Цикл
Возврат Выборка.ВидЦеныПоставщика;
КонецЦикла;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция НомерДляСФ(НомерДекларации, НомерДополнения)
НомерДляСФ = НомерДекларации;
Если ЗначениеЗаполнено(НомерДополнения) Тогда
НомерДляСФ = НомерДекларации + "/" + НомерДополнения;
КонецЕсли;
Возврат НомерДляСФ;
КонецФункции
&НаСервере
Процедура УстановитьСкладСервер(СкладРазмещения)
ЗаполнитьПоляТабчасти("Товары", Новый Структура("Склад", СкладРазмещения));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
&НаСервере
Процедура ОбновитьИнформациюПоПоступлениям()
СписокПоступлений.Очистить();
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если ЗначениеЗаполнено(ТекСтрока.ДокументПоступления) И СписокПоступлений.НайтиПоЗначению(ТекСтрока.ДокументПоступления) = Неопределено Тогда
СписокПоступлений.Добавить(ТекСтрока.ДокументПоступления);
КонецЕсли;
КонецЦикла;
Если СписокПоступлений.Количество() = 1 Тогда
ПоступлениеТоваров = СписокПоступлений[0].Значение;
КонецЕсли;
Если СписокПоступлений.Количество() > 1 Тогда
НадписьЗаголовокПоступления = СтрЗаменить(
НСтр("ru='Всего документов: %КоличествоПоступлений%'"),
"%КоличествоПоступлений%",
СписокПоступлений.Количество());
ПоступлениеТоваров = Неопределено;
КонецЕсли;
Если СписокПоступлений.Количество() < 1 Тогда
ПоступлениеТоваров = Неопределено;
КонецЕсли;
Если СписокПоступлений.Количество() <= 1 Тогда
Элементы.СтраницыПоступления.ТекущаяСтраница = Элементы.СтраницаПоступление;
Иначе
Элементы.СтраницыПоступления.ТекущаяСтраница = Элементы.СтраницаПоступления;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗачтенаОплатаСервер(ИмяСобытия, Параметр, Источник)
ВзаиморасчетыСервер.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр);
КонецПроцедуры
&НаКлиенте
Процедура НадписьВалютыНажатиеЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(РезультатЗакрытия) = Тип("Структура") Тогда
ИзмененныеРеквизиты = РезультатЗакрытия.СтарыеЗначенияИзмененныхРеквизитов;
Если ИзмененныеРеквизиты.Количество() > 0 Тогда
НадписьВалютыНажатиеЗавершениеСервер(РезультатЗакрытия);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НадписьВалютыНажатиеЗавершениеСервер(РезультатЗакрытия)
ИзмененныеРеквизиты = РезультатЗакрытия.СтарыеЗначенияИзмененныхРеквизитов;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, ИзмененныеРеквизиты, Истина);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПорядковыйНомерТовараВТаблицеТоварыСервер()
НомераГТДТоваров = Объект.Товары.Выгрузить(,"НомерГТД");
НомераГТДТоваров.Свернуть("НомерГТД","");
ПорядковыеНомераТоваровПоНомерамГТД = ОбщегоНазначенияУТВызовСервера.ЗначениеРеквизитаОбъектов(НомераГТДТоваров.ВыгрузитьКолонку("НомерГТД"), "ПорядковыйНомерТовара");
Для каждого СтрокаТовара Из Объект.Товары Цикл
СтрокаТовараПорядковыйНомерТовара = "";
ПорядковыйНомерТовара = ПорядковыеНомераТоваровПоНомерамГТД[СтрокаТовара.НомерГТД];
Если ЗначениеЗаполнено(СтрокаТовара.НомерГТД) И ЗначениеЗаполнено(ПорядковыйНомерТовара) Тогда
СтрокаТовараПорядковыйНомерТовара = ПорядковыйНомерТовара;
ИначеЕсли ЗначениеЗаполнено(СтрокаТовара.НомерДляСФ) Тогда
СтрокаТовараПорядковыйНомерТовара = Справочники.НомераГТД.ПорядковыйНомерТовараИзНомераТаможеннойДекларации(СтрокаТовара.НомерДляСФ);
КонецЕсли;
Если СтрокаТовараПорядковыйНомерТовара <> СтрокаТовара.ПорядковыйНомерТовара Тогда
СтрокаТовара.ПорядковыйНомерТовара = СтрокаТовараПорядковыйНомерТовара;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьИнформациюОбОшибкахВНомере(ТекущийТекстНомераДекларации,
НачалоКорректногоПериода,
КонецКорректногоПериода,
ЭлементОшибкаВНомереТаможеннойДекларации)
РезультатПроверки = УчетНДСКлиентСерверЛокализация.ПроверитьКорректностьНомераТаможеннойДекларации(
ТекущийТекстНомераДекларации, НачалоКорректногоПериода, КонецКорректногоПериода);
ЭлементОшибкаВНомереТаможеннойДекларации.Заголовок = УчетНДСКлиентСерверЛокализация.ТекстОшибкиВНомереТаможеннойДекларации(РезультатПроверки.КодОшибки);
ЭлементОшибкаВНомереТаможеннойДекларации.Видимость = (Не РезультатПроверки.КодОшибки = 0);
КонецПроцедуры
&НаСервере
Процедура ПересчитатьКоличествоРНПТ()
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ПараметрыПолученияКоэффициентаРНПТ = УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ПараметрыПолученияКоэффициентаРНПТ(
Объект,
"Склад",
Истина);
УчетПрослеживаемыхТоваровЛокализация.ЗаполнитьКоличествоПоРНПТВТабличнойЧасти(ПараметрыПолученияКоэффициентаРНПТ,
Объект.Товары);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОсичтитьХозяйственнуюОперацию()
Для Каждого СтрокаТоваров Из Объект.Товары Цикл
СтрокаТоваров.ХозяйственнаяОперация = Неопределено;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьИспользованиеПодакцизныхТоваров()
ИспользоватьПодакцизныеТовары =
УчетПодакцизныхТоваров.ИспользуетсяИмпортПодакцизныхТоваров(Объект.Организация, Объект.Дата);
ВалютаРегламентированногоУчета =
ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
КонецПроцедуры
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере()
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена(ДанныеРаздела)
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
Действия = Новый Структура;
Если ИспользоватьПодакцизныеТовары Тогда
ПараметрыПересчетаСуммыАкциза =
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыАкциза(Объект, Истина);
Действия.Вставить("ПересчитатьСуммуАкциза", ПараметрыПересчетаСуммыАкциза);
КонецЕсли;
УстановитьДействияДополнительныхПризнаковТоваров(Действия);
ОбрабатываемыеСтроки = Новый Массив;
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
Товар = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(Товар, СтрокаТовара);
Если Объект.ИспользоватьРазделы Тогда
ЗаполнитьЗначенияСвойств(Товар, ДанныеРаздела, "НомерРаздела, СтавкаНДС, СтавкаПошлины, СтранаПроисхождения, Склад");
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(Товар);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
Действия,
Объект.Товары);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ЗаполнитьЗначенияСвойств(ЭтаФорма, РазностиИтогов(Объект.Разделы, Объект.Товары));
ПересчитатьСуммыВРазделахНаСервере(ДанныеРаздела);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена() И Не Элементы.ТоварыПоказатьВсеТовары.Пометка);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
Не Элементы.ТоварыПоказатьВсеТовары.Пометка);
КонецПроцедуры
&НаСервере
Процедура ОбновитьСуммуДокументаНаФорме()
СуммаДокумента = Документы.ТаможеннаяДекларацияИмпорт.СуммаДокумента(Объект);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СтандартныеМеханизмыБсп
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область Локализация
&НаСервере
Процедура ДополнитьУсловноеОформлениеЛокализация()
КонецПроцедуры
&НаКлиенте
Процедура НомерДекларацииПриИзменении(Элемент)
ЗаполнитьНомерДляСФ(Неопределено);
ОбновитьИнформациюОбОшибкахВНомере(ТекущийТекстНомераДекларации,
НачалоКорректногоПериода,
КонецКорректногоПериода,
Элементы.ОшибкаВНомереТаможеннойДекларации);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьНомерДляСФИзНомераСтрокиТовара(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ТаможеннаяДекларацияИмпорт.Форма.ФормаДокумента.УстановитьНомерДляСФИзНомераСтрокиТовара");
ИнициироватьЗаполнениеНомераДляСФ(Истина, "НомерСтроки");
КонецПроцедуры
&НаКлиенте
Процедура УстановитьНомерДляСФИзРаздела(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ТаможеннаяДекларацияИмпорт.Форма.ФормаДокумента.УстановитьНомерДляСФИзРаздела");
ИнициироватьЗаполнениеНомераДляСФ(Истина, "НомерРаздела");
КонецПроцедуры
&НаКлиенте
Процедура ИнициироватьЗаполнениеНомераДляСФ(БезВопроса = Ложь, ИмяПоляДополнения = "ПорядковыйНомерТовара")
Если Объект.Товары.Количество() > 0 И ЗначениеЗаполнено(Объект.НомерДекларации) Тогда
Если БезВопроса Тогда
ТекущийРаздел = ДанныеТекущегоРаздела(Элементы.Разделы).НомерРаздела;
ЗаполнитьНомерДляСФ(ТекущийРаздел, ИмяПоляДополнения);
Иначе
ТекстВопроса = НСтр("ru = 'Заполнить колонку с № декларации для счетов-фактур?'");
ПоказатьВопрос(Новый ОписаниеОповещения("ИнициироватьЗаполнениеНомераДляСФЗавершение", ЭтотОбъект, Новый Структура("ИмяПоляДополнения", ИмяПоляДополнения)),
ТекстВопроса,
РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИнициироватьЗаполнениеНомераДляСФЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
РезультатВопроса = РезультатВопроса;
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ТекущийРаздел = ДанныеТекущегоРаздела(Элементы.Разделы).НомерРаздела;
ЗаполнитьНомерДляСФ(ТекущийРаздел, ДополнительныеПараметры.ИмяПоляДополнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНомерДляСФ(ТекущийРаздел, ИмяПоляДополнения = "ПорядковыйНомерТовара")
Табчасть = Объект.Товары;
НомерДекларации = СокрЛП(Объект.НомерДекларации);
ОтборТоваров = ?(ЗначениеЗаполнено(ТекущийРаздел), Новый Структура("НомерРаздела", ТекущийРаздел), Новый Структура);
Для Каждого Строка Из Табчасть.НайтиСтроки(ОтборТоваров) Цикл
НовыйНомерДляСФ = НомерДляСФ(НомерДекларации, Строка[ИмяПоляДополнения]);
Если Строка.НомерДляСФ <> НовыйНомерДляСФ Тогда
Строка.ПорядковыйНомерТовара = Строка[ИмяПоляДополнения];
Строка.НомерДляСФ = НовыйНомерДляСФ;
Строка.НомерГТД = Неопределено;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПоместитьРасшифровкуПлатежаВоВременноеХранилище()
ВзаиморасчетыСервер.ПоместитьРасшифровкуПлатежаВоВременноеХранилище(ЭтаФорма);
КонецПроцедуры
#КонецОбласти