Создание процедуры обработки события в общем модуле
Для того, чтобы алгоритм, выполняемый при обработке события, был доступен для разных документов, мы создадим общий модуль и перенесем в него нашу процедуру расчета суммы. А в документе просто оставим вызовы этой процедуры из общего модуля.
Создадим объект конфигурации Общий модуль в ветке Общие

Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
КонецПроцедуры
Ключевое слово Экспорт в конце оператора "Процедура" как раз указывает на то, что эта процедура может быть доступна из других программных модулей.
Затем в модуле нашей формы изменим текст нашего обработчика:
Процедура МатериалыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти = ЭлементыФормы.Материалы.ТекущиеДанные;
РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
Таким образом, теперь вместо непосредственного расчета суммы мы будем вызывать процедуру из общего модуля, и передавать ей в качестве параметра нужную нам строку табличной части. [77]
Проверим, как это работает, и убедимся, что ничего не изменилось.
Теперь осталось и для поля "Цена" установить такой же обработчик. Так как однажды мы уже написали в модуле формы нужную нам процедуру, то мы просто могли бы сопоставить ее также и другому событию другого элемента управления, расположенного в форме. Однако стандарты разработки конфигураций фирмы "1С" не допускают такого решения.

Узнай больше!
Согласно стандартам разработки фирмы "1С", у каждого события должен быть свой обработчик. Если одинаковые действия должны выполняться при изменении разных элементов управления (например, при нажатии нескольких кнопок), то в этом случае следует поступать следующим образом:
· | создается отдельная процедура (функция), выполняющая необходимые действия; |
· | для каждого элемента управления создается отдельный обработчик с именем, назначаемым no умолчанию; |
· | из каждого обработчика вызывается требуемая процедура (функция). |
Поэтому мы создадим обработчик события "При изменении" для поля ввода, которое расположено в колонке "Цена" и повторим в нем вызов процедуры "РассчитатьСумму" из общего модуля:
Процедура МатериалыЦенаПриИзменении(Элемент)
СтрокаТабличнойЧасти = ЭлементыФормы.Материалы.ТекущиеДанные;
РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
Запустим 1С:Предприятие в режиме отладки и убедимся, что теперь сумма в строках табличной части документов "ПриходнаяНакладная" пересчитывается как при изменении количества, так и при изменении цены. [78]
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий