При переходе от разработки в обычных формах к управляемым формам (УФ) у многих разработчиков возникают трудности с доступом к данным табличной части. Частый вопрос — как правильно рассчитать значение (например, произведение количества на цену) прямо в процессе редактирования строки.
В отличие от обычных форм, где мы могли обращаться к элементам управления напрямую через ЭлементыФормы, в управляемых формах архитектура взаимодействия с данными иная. Для доступа к строке, в которой пользователь внес изменения, мы используем метод ТекущиеДанные, который доступен через коллекцию Элементы.
Разберем процесс настройки автоматического расчета суммы при изменении данных в колонках «Количество» или «Цена».
ПриИзменении.Рассмотрим пример кода, который нужно разместить в модуле управляемой формы:
&НаКлиенте
Процедура ТабличнаяЧасть1ПриИзменении(Элемент)
// Получаем доступ к текущей строке табличной части
ТекущиеДанные = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
// Проверяем, что текущие данные не пусты
Если ТекущиеДанные <> Неопределено Тогда
// Выполняем расчет произведения
ТекущиеДанные.Сумма = ТекущиеДанные.Количество * ТекущиеДанные.Цена;
КонецЕсли;
КонецПроцедуры
ТекущиеДанные?Важно помнить, что конструкция Объект.Таблица1 обращается ко всей таблице целиком. Если вы попытаетесь обратиться напрямую, например, Объект.Таблица1.Сумма = ..., платформа выдаст ошибку или выполнит действие некорректно, так как не понимает, в какой именно строке нужно изменить значение. Использование свойства ТекущиеДанные — это стандарт индустрии при работе с интерактивными изменениями в строках табличных частей управляемых форм.
При проектировании интерфейса и логики формы учтите следующие моменты:
&НаСервере. Однако для простых арифметических операций вычисления на клиенте являются наиболее эффективными и быстрыми.ТекущиеДанные. Если по какой-то причине визуального обновления не происходит, можно принудительно вызвать метод Элементы.ИмяТабличнойЧасти.ОбновитьПодчиненныеЭлементы().ПриИзменении в этом случае не сработает автоматически.Данный подход позволяет сделать работу пользователя комфортной и исключает ошибки ручного ввода. Разбирая подобные кейсы, мы видим, что ключом к успеху в 1С является правильное понимание того, как платформа управляет клиентским контекстом и объектами формы.