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

файл

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

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

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

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

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

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

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

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

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

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


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


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

&НаКлиенте
Процедура УстановитьСтатусКВыполнению(Команда)
	
	ВыделенныеСсылки = ОбщегоНазначенияУТКлиент.ПроверитьПолучитьВыделенныеВСпискеСсылки(Элементы.Список);
	
	Если ВыделенныеСсылки.Количество() = 0 Тогда
		
		Возврат;
		
	КонецЕсли;
	
	ТекстВопроса = НСтр("ru='У выделенных в списке заказов будет установлен статус ""К выполнению"". Продолжить?'");
	Ответ = Неопределено;

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

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

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

&НаКлиенте
Процедура УстановитьСтатусНаСогласовании(Команда)
	
	ВыделенныеСсылки = ОбщегоНазначенияУТКлиент.ПроверитьПолучитьВыделенныеВСпискеСсылки(Элементы.Список);
	
	Если ВыделенныеСсылки.Количество() = 0 Тогда
		
		Возврат;
		
	КонецЕсли;
	
	ТекстВопроса = НСтр("ru='У выделенных в списке заказов будет установлен статус ""На согласовании"". Продолжить?'");
	Ответ = Неопределено;

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

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

	ВыделенныеСсылки = ДополнительныеПараметры.ВыделенныеСсылки;

	Ответ = РезультатВопроса;

	Если Ответ = КодВозвратаДиалога.Нет Тогда

		Возврат;

	КонецЕсли;

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

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

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

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

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

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

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

#Область СлужебныйПрограммныйИнтерфейс

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

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

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

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

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

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

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

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

#Область Производительность

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

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

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