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