Виды номенклатуры / Форма выбора / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;

	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
	
	НесколькоВидовНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовНоменклатуры");
	Элементы.ДекорацияРасшифровкаОтбора.Видимость = Ложь;

	Если ЗначениеЗаполнено(Параметры.ТекущийВид) Тогда
		
		ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список,
																				"Ссылка",
																				Параметры.ТекущийВид,
																				ВидСравненияКомпоновкиДанных.НеРавно,
																				,
																				Истина);
	ИначеЕсли Параметры.Свойство("Номенклатура") Тогда
		
		НастроитьСписок(Параметры.Номенклатура);
		
	КонецЕсли;
	
	// ЭлектронноеВзаимодействие.РаботаСНоменклатурой
	РаботаСНоменклатурой.ПриСозданииНаСервереФормаСпискаВидаНоменклатуры(ЭтотОбъект, ЭтотОбъект.КоманднаяПанель);
	// Конец ЭлектронноеВзаимодействие.РаботаСНоменклатурой
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	// ЭлектронноеВзаимодействие.РаботаСНоменклатурой
	Если ИмяСобытия = РаботаСНоменклатуройКлиент.ОписаниеОповещенийПодсистемы().ЗагрузкаКатегорий Тогда
		Если Параметр.Количество() > 0 Тогда
			Элементы.Список.ТекущаяСтрока = Параметр[0];
		КонецЕсли;
	КонецЕсли;
	// Конец ЭлектронноеВзаимодействие.РаботаСНоменклатурой
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Процедура НастроитьСписок(Номенклатура = Неопределено, ОтключениеОтбора = Ложь)
	
	УсловияВыбораНовогоВидаНоменклатуры = Справочники.Номенклатура.УсловияВыбораНовогоВидаНоменклатуры();
	
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	ВидНоменклатурыПереопределяемый.Ссылка,
	|	ВидНоменклатурыПереопределяемый.ПометкаУдаления,
	|	ВидНоменклатурыПереопределяемый.Родитель,
	|	ВидНоменклатурыПереопределяемый.ЭтоГруппа,
	|	ВидНоменклатурыПереопределяемый.Наименование,
	|	ВидНоменклатурыПереопределяемый.АлкогольнаяПродукция,
	|	ВидНоменклатурыПереопределяемый.ВариантОформленияПродажи,
	|	ВидНоменклатурыПереопределяемый.ВариантПредставленияНабораВПечатныхФормах,
	|	ВидНоменклатурыПереопределяемый.ВариантРасчетаЦеныНабора,
	|	ВидНоменклатурыПереопределяемый.ВестиУчетПоГТД,
	|	ВидНоменклатурыПереопределяемый.ВестиУчетСертификатовНоменклатуры,
	|	ВидНоменклатурыПереопределяемый.ВидАлкогольнойПродукции,
	|	ВидНоменклатурыПереопределяемый.ВладелецСерий,
	|	ВидНоменклатурыПереопределяемый.ВладелецТоварныхКатегорий,
	|	ВидНоменклатурыПереопределяемый.ВладелецХарактеристик,
	|	ВидНоменклатурыПереопределяемый.ГруппаАналитическогоУчета,
	|	ВидНоменклатурыПереопределяемый.ГруппаДоступа,
	|	ВидНоменклатурыПереопределяемый.ГруппаФинансовогоУчета,
	|	ВидНоменклатурыПереопределяемый.ЕдиницаДляОтчетов,
	|	ВидНоменклатурыПереопределяемый.ЕдиницаИзмерения,
	|	ВидНоменклатурыПереопределяемый.ЗапретРедактированияНаименованияДляПечатиНоменклатуры,
	|	ВидНоменклатурыПереопределяемый.ЗапретРедактированияНаименованияДляПечатиХарактеристики,
	|	ВидНоменклатурыПереопределяемый.ЗапретРедактированияРабочегоНаименованияНоменклатуры,
	|	ВидНоменклатурыПереопределяемый.ЗапретРедактированияРабочегоНаименованияХарактеристики,
	|	ВидНоменклатурыПереопределяемый.ИмпортнаяАлкогольнаяПродукция,
	|	ВидНоменклатурыПереопределяемый.ИспользованиеХарактеристик,
	|	ВидНоменклатурыПереопределяемый.ИспользоватьИндивидуальноеНаименованиеПриПечати,
	|	ВидНоменклатурыПереопределяемый.ИспользоватьКоличествоСерии,
	|	ВидНоменклатурыПереопределяемый.ИспользоватьНомерСерии,
	|	ВидНоменклатурыПереопределяемый.ИспользоватьСерии,
	|	ВидНоменклатурыПереопределяемый.ИспользоватьСрокГодностиСерии,
	|	ВидНоменклатурыПереопределяемый.ИспользоватьУпаковки,
	|	ВидНоменклатурыПереопределяемый.ИспользоватьХарактеристики,
	|	ВидНоменклатурыПереопределяемый.КонтролироватьДублиНоменклатуры,
	|	ВидНоменклатурыПереопределяемый.КонтролироватьДублиХарактеристик,
	|	ВидНоменклатурыПереопределяемый.КоэффициентЕдиницыДляОтчетов,
	|	ВидНоменклатурыПереопределяемый.НаборСвойств,
	|	ВидНоменклатурыПереопределяемый.НаборСвойствСерий,
	|	ВидНоменклатурыПереопределяемый.НаборСвойствХарактеристик,
	|	ВидНоменклатурыПереопределяемый.НаборУпаковок,
	|	ВидНоменклатурыПереопределяемый.НаименованиеДляПечати,
	|	ВидНоменклатурыПереопределяемый.НастройкаИспользованияСерий,
	|	ВидНоменклатурыПереопределяемый.НоменклатураМногооборотнаяТара,
	|	ВидНоменклатурыПереопределяемый.ОбособленнаяЗакупкаПродажа,
	|	ВидНоменклатурыПереопределяемый.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры,
	|	ВидНоменклатурыПереопределяемый.Описание,
	|	ВидНоменклатурыПереопределяемый.ОсобенностьУчета,
	|	ВидНоменклатурыПереопределяемый.ПодакцизныйТовар,
	|	ВидНоменклатурыПереопределяемый.ПоставляетсяВМногооборотнойТаре,
	|	ВидНоменклатурыПереопределяемый.СезоннаяГруппа,
	|	ВидНоменклатурыПереопределяемый.ПолитикаУчетаСерий,
	|	ВидНоменклатурыПереопределяемый.СкладскаяГруппа,
	|	ВидНоменклатурыПереопределяемый.СодержитДрагоценныеМатериалы,
	|	ВидНоменклатурыПереопределяемый.ТипНоменклатуры,
	|	ВидНоменклатурыПереопределяемый.ТочностьУказанияСрокаГодностиСерии,
	|	ВидНоменклатурыПереопределяемый.ХарактеристикаМногооборотнаяТара,
	|	ВидНоменклатурыПереопределяемый.ТоварныеКатегорииОбщиеСДругимВидомНоменклатуры,
	|	ВидНоменклатурыПереопределяемый.ШаблонНаименованияДляПечатиНоменклатуры,
	|	ВидНоменклатурыПереопределяемый.ШаблонНаименованияДляПечатиХарактеристики,
	|	ВидНоменклатурыПереопределяемый.ШаблонРабочегоНаименованияНоменклатуры,
	|	ВидНоменклатурыПереопределяемый.ШаблонРабочегоНаименованияСерии,
	|	ВидНоменклатурыПереопределяемый.ШаблонРабочегоНаименованияХарактеристики,
	|	ВидНоменклатурыПереопределяемый.ШаблонЦенника,
	|	ВидНоменклатурыПереопределяемый.ШаблонЭтикетки,
	|	ВидНоменклатурыПереопределяемый.ШаблонЭтикеткиСерии,
	|	ВидНоменклатурыПереопределяемый.КодОКВЭД,
	|	ВидНоменклатурыПереопределяемый.КодТНВЭД,
	|	ВидНоменклатурыПереопределяемый.Представление
	|ИЗ
	|	Справочник.ВидыНоменклатуры КАК ВидНоменклатурыПереопределяемый";
	
	Если Не ЗначениеЗаполнено(Номенклатура)
		Или ОтключениеОтбора Тогда
		
		УстановитьСвойстваСписка(ТекстЗапроса);
		
		Элементы.ДекорацияРасшифровкаОтбора.Видимость = Ложь;
		
		Возврат;
		
	КонецЕсли;
	
	ТекстЗапроса = ТекстЗапроса + "
	|ГДЕ
	|	ВидНоменклатурыПереопределяемый.ЭтоГруппа
	|	ИЛИ ИСТИНА ";
	
	Для Каждого КлючЗначение Из УсловияВыбораНовогоВидаНоменклатуры Цикл
		
		ТекстПараметра = СтрЗаменить(КлючЗначение.Значение, "НовыйВидНоменклатуры", "ВидНоменклатурыПереопределяемый");
		ТекстЗапроса = ТекстЗапроса + " И НЕ " + ТекстПараметра;
		
	КонецЦикла;
	
	Запрос = Новый Запрос;
	Запрос.Текст = ТекстЗапроса;
	ПараметрыЗапроса = Запрос.НайтиПараметры();

	ИменаРеквизитов = Новый Структура;
	Для Каждого Параметр Из ПараметрыЗапроса Цикл
		ИменаРеквизитов.Вставить(Параметр.Имя, "ВидНоменклатуры." + Параметр.Имя);
	КонецЦикла;
	
	СтарыеРеквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Номенклатура, ИменаРеквизитов);
	
	УстановитьСвойстваСписка(ТекстЗапроса);
	
	Для Каждого Параметр Из ПараметрыЗапроса Цикл
		ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список,
																			Параметр.Имя,
																			СтарыеРеквизиты[Параметр.Имя],
																			Истина);
	КонецЦикла;
	
	Элементы.Список.Обновить();
	
	МассивСтрок = Новый Массив;
	МассивСтрок.Добавить(НСтр("ru = 'Если номенклатура уже была задействована в программе (в документах, настройках и т.п.), то произвольное изменение вида номенклатуры может привести к проблемам. Показаны виды номенклатуры, которые можно выбрать без привнесения проблем.'"));	
	
	Если Пользователи.РолиДоступны("РедактированиеРеквизитовОбъектов") Тогда
		ЧастьФорматированнойСтроки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
										НСтр("ru = '<a href=""%1"">Показать все виды номенклатуры</a>.'"),
										"ОтключитьОтбор");
		МассивСтрок.Добавить(ЧастьФорматированнойСтроки);
	КонецЕсли;
	
	Элементы.ДекорацияРасшифровкаОтбора.Видимость = Истина;
	Элементы.ДекорацияРасшифровкаОтбора.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(
														СтрСоединить(МассивСтрок, " "));
	
КонецПроцедуры

&НаСервере
Процедура УстановитьСвойстваСписка(ТекстЗапроса)
	
	СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
	СвойстваСписка.ТекстЗапроса					= ТекстЗапроса;
	СвойстваСписка.ОсновнаяТаблица				= "Справочник.ВидыНоменклатуры";
	СвойстваСписка.ДинамическоеСчитываниеДанных	= Истина;
	
	ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
	
КонецПроцедуры

&НаКлиенте
Процедура ДекорацияРасшифровкаОтбораОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	
	Если НавигационнаяСсылка = "ОтключитьОтбор" Тогда 
		НастроитьСписок(,Истина);
	КонецЕсли;
КонецПроцедуры

#КонецОбласти

#Область ПодключаемыеКоманды

// ЭлектронноеВзаимодействие.РаботаСНоменклатурой
&НаКлиенте
Процедура Подключаемый_ПодобратьКатегорииИзСервиса(Команда)
		
	РаботаСНоменклатуройКлиент.ПодобратьКатегорииИзСервиса();
	
КонецПроцедуры
// Конец ЭлектронноеВзаимодействие.РаботаСНоменклатурой

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
	ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры

&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Список);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

#КонецОбласти

Связанные материалы