Одна процедура для обработки нескольких событий



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

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

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

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

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

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

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

Теперь зайдите в модуль формы документа Приходная накладная и изменим вторую строчку процедуры на следующую:

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

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

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

Для этого нажмите внизу вкладку Форма (рядом с Модуль), дважды щелкните в левом верхнем окне на МатериалыЦена, прокрутите окно свойств, нажмите на значок лупы в поле ПриИзменении и в выделенную область впишите:

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

Запустите 1С: Предприятие в режиме отладки и убедитесь, что теперь при изменении как количества, так и цены, сумма автоматически пересчитывается.

Документ «Оказание услуги» Создайте новый документ с именем ОказаниеУслуги. Представление объекта не задаем – будет использоваться синоним, Представление списка задайте как Оказание услуг. На вкладке Подсистемы отметьте ОказаниеУслуг и Бухгалтерия. На вкладке Данные создайте реквизиты документа:

· Склад, тип СправочникСсылка.Склады, Значение заполнения Основной;

· Клиент, тип СправочникСсылка.Клиенты, Проверка заполнения Выдавать ошибку;

· Мастер, тип СправочникСсылка.Сотрудники, Проверка заполнения Выдавать ошибку.

Создайте табличную часть документа с именем ПереченьНоменклатуры с реквизитами:

· Номенклатура, тип СправочникСсылка.Номенклатура;

· Количество, тип Число, длина 15, точность 3, неотрицательное;

· Цена, тип Число, длина 15, точность 2, неотрицательное;

· Сумма, тип Число, длина 15, точность 2, неотрицательное.

Установите для табличной части в целом и для каждого ее реквизита свойство Проверка заполнения в Выдавать ошибку.

Перейдите на вкладку Формы. Создайте основную форму документа.

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

Откроется модуль формы с шаблоном обработчика события ПереченьНоменклатурыКоличествоПриИзменении, который пока не заполняйте, а перейдите в окно элементов формы на закладку Форма и аналогично создайте обработчик события

ПереченьНоменклатурыЦенаПриИзменении для поля ПереченьНоменклатурыЦена.

Далее модуль формы документа ОказаниеУслуги заполните следующим образом:

&НаКлиенте

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

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

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

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

 

&НаКлиенте

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

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

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

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

Отредактируйте командный интерфейс, чтобы в подсистеме Оказание услуг была доступна команда создания новых документов. Запустите 1С: Предприятие в режиме отладки.

В панели действий раздела Оказание услуг создайте документ и заполните следующим образом:

Обратите внимание, что склад Основной подставляется по умолчанию, а для полей Мастер и Клиент выполняется проверка заполнения, а также при вводе цены и количества сумма рассчитывается автоматически по нашему алгоритму.

 

 


Дата добавления: 2021-03-18; просмотров: 69; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!