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

файл

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОтборВариантНаладкиПриИзменении(Элемент)
	
	Возврат; // пустой обработчик
	
КонецПроцедуры

&НаКлиенте
Процедура ОтборИспользуетсяВЗаказахПриИзменении(Элемент)
	
	Возврат; // пустой обработчик
	
КонецПроцедуры

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура КомандаУстановитьСтатусВРазработке(Команда)
	
	УстановитьСтатусСпецификации("ВРазработке", НСтр("ru = 'В разработке'"));
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаУстановитьСтатусДействует(Команда)
	
	УстановитьСтатусСпецификации("Действует", НСтр("ru = 'Действует'"));
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаУстановитьСтатусЗакрыта(Команда)
	
	УстановитьСтатусСпецификации("Закрыта", НСтр("ru = 'Закрыта'"));
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьРемонт(Команда)
	
	СоздатьЭлементИзСписка(ПредопределенноеЗначение("Перечисление.ТипыПроизводственныхПроцессов.Ремонт"));
	
КонецПроцедуры

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

&НаКлиенте
Процедура КомандаОткрытьСпецификацииИзделия(Команда)
	
	
	Возврат; // пустой обработчик
	
КонецПроцедуры

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

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

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

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

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

// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

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

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

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

#Область Список

&НаСервере
Функция СписокРасширенныхОтборовСпискаСпецификаций()
	
	СписокОтборов = Новый Массив();
	


	Возврат СписокОтборов;
	
КонецФункции

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

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

#Область Отборы

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтборПоСтатусу(Форма)

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

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

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


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

#Область Прочее

&НаСервере
Процедура УстановитьУсловноеОформление()

	УсловноеОформление.Элементы.Очистить();
	
	Справочники.РесурсныеСпецификации.УстановитьУсловноеОформлениеСпискаРесурсныхСпецификаций(Список.УсловноеОформление);
	
КонецПроцедуры

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

&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьЗависимыеЭлементыФормы(Форма, СписокРеквизитов = "")

	Элементы = Форма.Элементы;
	
	Инициализация = ПустаяСтрока(СписокРеквизитов);
	СтруктураРеквизитов = Новый Структура(СписокРеквизитов);
	
	Если СтруктураРеквизитов.Свойство("Номенклатура")
		ИЛИ Инициализация Тогда
		
		Форма.Элементы.ОтборИспользуетсяКак.ТолькоПросмотр = НЕ ЗначениеЗаполнено(Форма.ОтборНоменклатура);
		
	КонецЕсли;
	
	
КонецПроцедуры

&НаКлиенте
Процедура КопироватьРесурснуюСпецификацию()

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

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

&НаКлиенте
Процедура КопироватьРесурснуюСпецификациюЗавершение(Ссылка, ДополнительныеПараметры) Экспорт

	Если Ссылка <> Неопределено Тогда
		Элементы.Список.ТекущаяСтрока = Ссылка;
	КонецЕсли; 

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

&НаКлиенте
Процедура УстановитьСтатусСпецификации(ЗначениеСтатуса, ПредставлениеСтатуса)

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

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

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

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

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

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