Модуль формы документа:
#Область КлючСвязиСтрок
&НаКлиенте
Процедура СоставПриИзменении(Элемент)
УстановитьКлючиСтрокНоменклатура();
УстановитьКлючиСтрокСостав();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьКлючиСтрокНоменклатура()
Для каждого Стр Из Объект.Номенклатура Цикл
Если Не ЗначениеЗаполнено(Стр.КлючСтроки) Тогда
Стр.КлючСтроки = Стр.ПолучитьИдентификатор();
КонецЕсли;
КонецЦикла;
УстановитьВидимостьСтрок();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьВидимостьСтрок()
СоставИндексСтроки = Объект.Номенклатура.Индекс(Элементы.Номенклатура.ТекущиеДанные);
Если СоставИндексСтроки >= 0 Тогда
ВыделеннаяСтрока = Объект.Номенклатура.Получить(СоставИндексСтроки);
КлючСтроки = ВыделеннаяСтрока.КлючСтроки;
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("КлючСтроки", КлючСтроки);
Элементы.Состав.ОтборСтрок = Новый ФиксированнаяСтруктура(СтруктураПоиска);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьКлючиСтрокСостав()
ИндексСтрокиСостав = Объект.Номенклатура.Индекс(Элементы.Номенклатура.ТекущиеДанные);
ВыделеннаяСтрока = Объект.Номенклатура.Получить(ИндексСтрокиСостав);
КлючСтроки = ВыделеннаяСтрока.КлючСтроки;
Для каждого Стр Из Объект.Состав Цикл
Если Не ЗначениеЗаполнено(Стр.КлючСтроки) Тогда
Стр.КлючСтроки = КлючСтроки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура НоменклатураПриАктивизацииСтроки(Элемент)
УстановитьВидимостьСтрок();
КонецПроцедуры
&НаКлиенте
Процедура НоменклатураПриИзменении(Элемент)
УстановитьВидимостьСтрок();
КонецПроцедуры
&НаКлиенте
Процедура НоменклатураПередУдалением(Элемент, Отказ)
ИндексСтроки = Объект.Номенклатура.Индекс(Элементы.Номенклатура.ТекущиеДанные);
ВыделеннаяСтрока = Объект.Номенклатура.Получить(ИндексСтроки);
КлючСтроки = ВыделеннаяСтрока.КлючСтроки;
НулевыеСтроки = Объект.Состав.НайтиСтроки(Новый Структура("КлючСтроки", КлючСтроки));
Для каждого СтрокаТаблицы Из НулевыеСтроки Цикл
Объект.Состав.Удалить(СтрокаТаблицы);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура НоменклатураПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока Тогда
Объект.Номенклатура[Объект.Номенклатура.Количество()-1].КлючСтроки = ПолучитьМаксимальныйКлючСтроки() + 1;
КонецЕсли;
УстановитьВидимостьСтрок();
КонецПроцедуры
&НаКлиенте
Функция ПолучитьМаксимальныйКлючСтроки()
МаксимальныйКлючСтроки = 1;
Для каждого Стр Из Объект.Номенклатура Цикл
Попытка
МаксимальныйКлючСтроки = Макс(МаксимальныйКлючСтроки, Число(Стр.КлючСтроки));
Исключение
МаксимальныйКлючСтроки = МаксимальныйКлючСтроки;
КонецПопытки;
КонецЦикла;
Возврат МаксимальныйКлючСтроки;
КонецФункции
&НаКлиенте
Процедура СоставПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Попытка
ИндексСтрокиСостав = Объект.Номенклатура.Индекс(Элементы.Номенклатура.ТекущиеДанные);
ВыделеннаяСтрока = Объект.Номенклатура.Получить(ИндексСтрокиСостав);
Исключение
Сообщить("Сначала выделите строку из табличной части ""Номенклатура""");
Отказ = Истина;
КонецПопытки;
КонецПроцедуры
#КонецОбласти
Оставить комментарий