Одна процедура для обработки нескольких событий
Теперь при изменении количества в любой строке документа Приходная накладная, сумма в этой в этой строке пересчитывается автоматически. Но теперь хотелось бы сделать тоже самое для поля Цена. Также подобное автозаполнение может понадобиться нам в других документах. Поэтому лучше будет поместить расчет суммы в некоторое общедоступное место, чтобы разные документы могли использовать этот алгоритм. Для описания таких мест служат объекты Общий модуль, расположенные в ветке Общие - Общие модули. Процедуры и функции, содержащиеся в этих модулях, могут быть доступны для любых объектов конфигурации.
Создайте общий модуль РаботаСДокументами, установите в его свойствах флажок Клиент, а флажок Сервер снимите (это означает, что модуль будет скомпилирован в тонком клиенте и в веб-клиенте, а не на сервере).
Перенесите в него созданную процедуру расчета суммы. В документе оставим вызов этой процедуры из общего модуля.
Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество
*СтрокаТабличнойЧасти.Цена;
КонецПроцедуры
Теперь зайдите в модуль формы документа Приходная накладная и изменим вторую строчку процедуры на следующую:
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
Тем самым мы вызываем процедуру РассчитатьСумму() из общего модуля РаботаСДокументами и передаем ей в качестве параметра текущую строку табличной части.
|
|
Осталось для поля Цена установить такой же обработчик. Создайте обработчик события ПриИзменении для поля табличной части МатериалыЦена также, как делали это для поля МатериалыКоличество, повторите в нем вызов процедуры РассчитатьСумму() из общего модуля.
Для этого нажмите внизу вкладку Форма (рядом с Модуль), дважды щелкните в левом верхнем окне на МатериалыЦена, прокрутите окно свойств, нажмите на значок лупы в поле ПриИзменении и в выделенную область впишите:
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные; РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
Запустите 1С: Предприятие в режиме отладки и убедитесь, что теперь при изменении как количества, так и цены, сумма автоматически пересчитывается.
Документ «Оказание услуги» Создайте новый документ с именем ОказаниеУслуги. Представление объекта не задаем – будет использоваться синоним, Представление списка задайте как Оказание услуг. На вкладке Подсистемы отметьте ОказаниеУслуг и Бухгалтерия. На вкладке Данные создайте реквизиты документа:
· Склад, тип СправочникСсылка.Склады, Значение заполнения – Основной;
· Клиент, тип СправочникСсылка.Клиенты, Проверка заполнения – Выдавать ошибку;
|
|
· Мастер, тип СправочникСсылка.Сотрудники, Проверка заполнения – Выдавать ошибку.
Создайте табличную часть документа с именем ПереченьНоменклатуры с реквизитами:
· Номенклатура, тип СправочникСсылка.Номенклатура;
· Количество, тип Число, длина 15, точность 3, неотрицательное;
· Цена, тип Число, длина 15, точность 2, неотрицательное;
· Сумма, тип Число, длина 15, точность 2, неотрицательное.
Установите для табличной части в целом и для каждого ее реквизита свойство Проверка заполнения в Выдавать ошибку.
Перейдите на вкладку Формы. Создайте основную форму документа.
Для поля ПереченьНоменклатурыКоличество создайте обработчик события ПриИзменении, в котором будем вызывать процедуру РассчитатьСумму() из общего модуля РаботаСДокументами.
Откроется модуль формы с шаблоном обработчика события ПереченьНоменклатурыКоличествоПриИзменении, который пока не заполняйте, а перейдите в окно элементов формы на закладку Форма и аналогично создайте обработчик события
ПереченьНоменклатурыЦенаПриИзменении для поля ПереченьНоменклатурыЦена.
Далее модуль формы документа ОказаниеУслуги заполните следующим образом:
|
|
&НаКлиенте
Процедура ПереченьНоменклатурыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.ПереченьНоменклатуры.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
&НаКлиенте
Процедура ПереченьНоменклатурыЦенаПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.ПереченьНоменклатуры.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
Отредактируйте командный интерфейс, чтобы в подсистеме Оказание услуг была доступна команда создания новых документов. Запустите 1С: Предприятие в режиме отладки.
В панели действий раздела Оказание услуг создайте документ и заполните следующим образом:
Обратите внимание, что склад Основной подставляется по умолчанию, а для полей Мастер и Клиент выполняется проверка заполнения, а также при вводе цены и количества сумма рассчитывается автоматически по нашему алгоритму.
Дата добавления: 2021-03-18; просмотров: 69; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!