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