Загрузка данных


&После("ПриСозданииНаСервере")
Процедура саб_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	саб_ЗаполнитьТТК();
КонецПроцедуры

&НаСервере
Процедура саб_ЗаполнитьТТК()

	саб_ТТКСписок.Очистить();
	саб_ТТКСостав.Очистить();

	Если Объект.Ссылка.Пустая() Тогда
		Возврат;
	КонецЕсли;

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

	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		ЗаполнитьЗначенияСвойств(саб_ТТКСписок.Добавить(), Выборка);
	КонецЦикла;

	Если саб_ТТКСписок.Количество() > 0 Тогда
		саб_ЗаполнитьСостав(саб_ТТКСписок[0].Спецификация);
	КонецЕсли;

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

&НаСервере
Процедура саб_ЗаполнитьСостав(Спецификация)

	саб_ТТКСостав.Очистить();

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

	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		НоваяСтрока = саб_ТТКСостав.Добавить();
		НоваяСтрока.Номенклатура = Выборка.Номенклатура;
		НоваяСтрока.Единица = Строка(?(ЗначениеЗаполнено(Выборка.Упаковка),
			Выборка.Упаковка, Выборка.ЕдиницаНоменклатуры));
		НоваяСтрока.Количество = Выборка.Количество;
	КонецЦикла;

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

&НаКлиенте
Процедура саб_ТТКСписокПриАктивизацииСтроки(Элемент)
	ПодключитьОбработчикОжидания("саб_ОбновитьСостав", 0.2, Истина);
КонецПроцедуры

&НаКлиенте
Процедура саб_ОбновитьСостав()
	ТекущиеДанные = Элементы.саб_ТТКСписок.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		саб_ЗаполнитьСостав(ТекущиеДанные.Спецификация);
	КонецЕсли;
КонецПроцедуры

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