1С-Предприятие 8.0. Практическое пособие разработчика

       

Создание процедуры обработки события в модуле формы


Щелкните правой кнопкой мыши на поле ввода в колонке "Количество" и откройте для него палитру свойств (пункт контекстного меню Свойства). Прокрутите список до конца, и вы обнаружите перечень событий, которые могут быть связаны с этим полем ввода.

С большинством элементов управления связаны различные события, и именно с их помощью разработчик может влиять на ход работы программы.

Узнай больше!

Подробнее об обработчиках событий можно прочитать в главе "Обработчики событий" на странице 546. [74]



Среди событий, связанных с полем ввода, найдите событие "При изменении". Это событие возникает после изменения значения поля ввода.

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

Модуль – это "хранилище" для текста программы на встроенном языке. В конфигурации существует большое количество модулей, которые расположены в различных ее точках. Они могут принадлежать некоторым объектам конфигурации (например, формам), а могут существовать сами по себе (принадлежать всей конфигурации в целом). Текст программы, содержащийся в модулях, будет использоваться платформой в заранее известные моменты работы системы 1С:Предприятие.

Выберем событие "При изменении" и система создаст заготовку процедуры в модуле формы.


[75]

В модуль формы добавим следующий текст:

Процедура МатериалыКоличествоПриИзменении(Элемент)

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

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

КонецПроцедуры

Объясним назначение этих строк.

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




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

Во второй строке вычисляется сумма как произведение количества и цены. Объект ДокументТабличнаяЧастьСтрока.<имя> позволяет обратиться к данным конкретной колонки, указав имя колонки в качестве свойства объекта (например, СтрокаТабличнойЧасти.Количество).

Теперь посмотрим, как это работает. В окне программы откроем список документов "ПриходнаяНакладная" и откроем любой из двух созданных нами документов. Если теперь вы поменяете количество в любой строке документа, то сумма в строке будет пересчитана автоматически.

Замечательно. Но теперь хотелось бы и для поля "Цена" сделать то же самое. А если заглянуть вперед, то мы увидим, что подобное автоматическое заполнение поля "Сумма" может нам понадобиться и в других документах. Поэтому лучше будет поместить расчет суммы в [76] некотором "общедоступном" месте, чтобы разные документы, имеющие аналогичные реквизиты табличной части, могли использовать этот алгоритм.

Для описания таких "общедоступных" мест служат объекты конфигурации Общий модуль, расположенные в ветке Общие
Общие модули. Процедуры и функции, содержащиеся в этих модулях, могут быть доступны для любых объектов конфигурации.


Содержание раздела