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