&НаКлиенте
Процедура ПродукцияКоличествоРолловПриИзменении(Элемент)
ТекущаяСтрока = ТекущийЭлемент.ТекущаяСтрока; //При удалении нескольких строк в документе индексы остаются старые...
Если НужнаяНоменклатура(ТекущаяСтрока) Тогда
ТекущийЭлемент.ТекущиеДанные.Количество = ТекущийЭлемент.ТекущиеДанные.КоличествоРоллов * 8;
Иначе
ТекущийЭлемент.ТекущиеДанные.КоличествоРоллов = 0;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция НужнаяНоменклатура(ТекущаяСтрока)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ЭтоГруппа = ЛОЖЬ
| И Номенклатура.Родитель = &Родитель
| И Номенклатура.Ссылка = &Ссылка
| И НЕ Номенклатура.ПометкаУдаления";
Запрос.УстановитьПараметр("Ссылка", Объект.Продукция[ТекущаяСтрока].Номенклатура); //Вот сюда нужно предать данные строки
Запрос.УстановитьПараметр("Родитель", Справочники.Номенклатура.НайтиПоКоду("ФР-00000129"));
Результат = Запрос.Выполнить().Выбрать();
Возврат Результат.Следующий();
КонецФункции
Этьа конструкция работает, но вот если заполнить таблицу каким либо обработчиком и потом удалить несколько строк, то данная конструкция не работает, говорит что "Индекс находится за пределами массива"...Так вот вопрос, как ещё можно передать данные текущей строки???
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший