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

В режиме "Конфигуратор"

страница

В режиме «Конфигуратор»

Общий модуль

Добавим объект конфигурации Общий модуль.

Для этого раскроем ветвь Общие в дереве объектов конфигурации, нажав на + слева от нее. Затем выделим ветвь Общие модули и нажмем кнопку Добавить в командной панели окна конфигурации (рис. 4.24).

Рис. 4.24. Создание общего модуля в дереве объектов конфигурации

Откроется окно для ввода текста модуля и окно палитры его свойств. Дадим имя модулю - РаботаСДокументами и установим в его свойствах флажок Клиент (управляемое приложение), а флажок Сервер снимем. Это означает, что экземпляры этого модуля будут скомпилированы в контексте тонкого клиента и в контексте веб-клиента (рис. 4.25).

Рис. 4.25. Свойства общего модуля

Внесем в модуль следующий текст (листинг 4.2).

Листинг 4.2. Процедура «РассчитатьСумму()»

Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт

 

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

 

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

Прокомментируем этот код. В процедуру РассчитатьСумму() мы передаем переменную СтрокаТабличнойЧасти, которую мы определили в обработчике события ПриИзменении поля Количество. Она содержит данные редактируемой строки табличной части документа ПриходнаяНакладная.

Теперь, используя эту переменную, мы можем получить доступ к данным колонок табличной части и рассчитать сумму как произведение цены на количество.

Ключевое слово Экспорт в заголовке процедуры указывает на то, что эта процедура может быть доступна из других программных модулей.

Теперь в модуле нашей формы изменим текст обработчика МатериалыКоличествоПриИзменении (листинг 4.3).

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

&НаКлиенте

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

 

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

РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);

 

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

Мы видим, что первая строка процедуры осталась без изменений. А во второй строке вместо непосредственного расчета суммы мы вызываем процедуру РассчитатьСумму() из общего модуля РаботаСДокументами и передаем ей в качестве параметра текущую строку табличной части.

Проверим, как это работает, и убедимся, что ничего не изменилось.

Теперь осталось и для поля Цена установить такой же обработчик. Так как однажды мы уже написали в модуле формы нужную нам процедуру, то мы просто могли бы сопоставить ее также и другому событию другого элемента управления, расположенного в форме. Однако стандарты разработки конфигураций фирмы «1С» не допускают такого решения.

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

Согласно стандартам разработки фирмы «1С» у каждого события должен быть свой обработчик. Если одинаковые действия должны выполняться при изменении разных элементов управления (например, при нажатии нескольких кнопок), то в этом случае следует поступать следующим образом:

- создается отдельная процедура (функция), выполняющая необходимые действия;

- для каждого элемента управления создается отдельный обработчик с именем, назначаемым по умолчанию;

- из каждого обработчика вызывается требуемая процедура (функция).

Поэтому мы создадим обработчик события ПриИзменении для поля табличной части МатериалыЦена так же, как мы делали это для поля МатериалыКоличество, и повторим в нем вызов процедуры РассчитатьСумму из общего модуля (листинг 4.4).

Листинг 4.4. Процедура «МатериалыЦенаПриИзменении()»

&НаКлиенте

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

 

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

РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);

 

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