Установка цен номенклатуры / Форма списка / Модуль формы

файл

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

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

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

	// ИнтеграцияС1СДокументооборотом
	ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтаФорма, Элементы.ГруппаГлобальныеКоманды);
	// Конец ИнтеграцияС1СДокументооборотом

	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
	
	// СтандартныеПодсистемы.ВерсионированиеОбъектов
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОтборВидЦенПриИзменении(Элемент)
	
	УстановитьОтборПоВидуЦен();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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


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


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

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

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

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

#Область ШтрихкодыИТорговоеОборудование

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

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

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

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

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

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

&НаСервереБезКонтекста
Процедура ОтключитьНедоступныеОтборы(Коллекция, ДоступныеПоляОтбора = Неопределено)
	
	УдаляемыеЭлементы = Новый Массив;
	
	Для Каждого ТекущиеДанные Из Коллекция Цикл
		
		Если ТипЗнч(ТекущиеДанные) = Тип("ОтборКомпоновкиДанных") Тогда
			
			ОтключитьНедоступныеОтборы(ТекущиеДанные.Элементы, ТекущиеДанные.ДоступныеПоляОтбора);
			
		ИначеЕсли ТипЗнч(ТекущиеДанные) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
			
			ОтключитьНедоступныеОтборы(ТекущиеДанные.Элементы, ДоступныеПоляОтбора);
			
		ИначеЕсли ТипЗнч(ТекущиеДанные) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
			
			Если НЕ ТекущиеДанные.Использование Тогда
				Продолжить;
			КонецЕсли;
			
			Для Каждого ИмяСвойства Из СтрРазделить("ЛевоеЗначение,ПравоеЗначение",",") Цикл
				
				ТекущееПоле = ТекущиеДанные[ИмяСвойства];
				Если ТипЗнч(ТекущееПоле) = Тип("ПолеКомпоновкиДанных") 
					И ДоступныеПоляОтбора.НайтиПоле(ТекущееПоле) = Неопределено Тогда
					
					УдаляемыеЭлементы.Добавить(ТекущиеДанные);
					Прервать;
					
				КонецЕсли;
				
			КонецЦикла;
			
		КонецЕсли;
		
	КонецЦикла;
	
	Для Каждого УдаляемыйЭлемент Из УдаляемыеЭлементы Цикл
		Коллекция.Удалить(УдаляемыйЭлемент);
	КонецЦикла;
	
КонецПроцедуры

&НаСервере
Процедура УстановитьОтборПоВидуЦен()

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

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

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

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