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