584 документа
← К списку

Обработчик события

страница

Обработчик события

Поскольку вы хотите организовать пересчет суммы в строке табличной части при изменении количества и цены, очевидно, вам понадобится событие ПриИзменении, которое возникает после изменения значения соответствующих полей формы. Вам нужно создать собственный обработчик этого события, и тогда описанные в нем на встроенном языке алгоритмы будут выполняться при возникновении этого события поля.

Для этого в редакторе формы, в дереве элементов формы, нажмите События в контекстном меню элемента МатериалыКоличество. Вы увидите перечень событий, которые могут быть связаны с этим полем. Выберите <ПриИзменении> (рис. 8.3).

Рис. 8.3. Создание обработчика события «ПриИзменении» поля табличной части «Количество»

1С:EDT предложит окно для выбора контекста обработчика события, который вы хотите создать (рис. 8.4).

Рис. 8.4. Окно для выбора контекста создаваемого обработчика события

Оставьте без изменения вариант Создать на клиенте, предложенный по умолчанию. Про тип обработчика события подробно рассказывалось на предыдущем занятии в разделе «Форма».

После этого в модуле формы будет создан шаблон процедуры обработчика этого события, а редактор формы перейдет на закладку Модуль (рис. 8.5).

Рис. 8.5. Шаблон обработчика события «ПриИзменении» поля табличной части «Количество»

Процедуру обработчика – МатериалыКоличествоПриИзменении() – заполните следующим образом (листинг 8.2).

**Листинг 8.**2. Процедура «МатериалыКоличествоПриИзменении()»

СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные;

СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;

В первой строке процедуры в переменную СтрокаТабличнойЧасти вы помещаете объект, содержащий данные той строки табличной части, которую вам нужно пересчитать.

Поскольку вы находитесь в модуле формы, в нем доступны все свойства и методы объекта встроенного языка ФормаКлиентскогоПриложения. Поэтому вы можете обращаться к ним напрямую. В данном случае после знака равенства вы обращаетесь к коллекции элементов формы, используя одно из свойств объекта ФормаКлиентскогоПриложения – свойство Элементы.

Коллекция элементов формы является объектом встроенного языка ВсеЭлементыФормы, содержащим все элементы формы. То есть это программный аналог корня дерева элементов формы.

Каждый элемент формы можно получить, указав его имя в качестве свойства этого объекта, то есть через точку от него. В данном случае вы обращаетесь к табличной части документа Материалы (Элементы.Материалы).

Табличная часть документа представляет собой объект встроенного языка ТаблицаФормы. Получить ту строку, в которой в настоящее время осуществляется редактирование, можно при помощи свойства этого объекта– ТекущиеДанные (Элементы.Материалы.ТекущиеДанные).

Таким образом, в результате выполнения первой строки процедуры обработчика переменная СтрокаТабличнойЧасти будет содержать объект ДанныеФормыСтруктура. Этот объект содержит данные, находящиеся в текущей строке табличной части документа (Элементы.Материалы.ТекущиеДанные).

Получив этот объект, вы можете обратиться к данным конкретной колонки табличной части, указав имя колонки в качестве свойства объекта. Например, используя обращение СтрокаТабличнойЧасти.Количество, вы получаете число, которое находится в редактируемой строке в колонке Количество.

Таким образом, во второй строке процедуры обработчика вычисляется значение колонки Сумма как произведение значений колонок Количество и Цена.