Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laby_1-3_po_informatsionnym_tehnologiam_i_siste....doc
Скачиваний:
81
Добавлен:
08.12.2018
Размер:
10 Мб
Скачать
☆

2.3. Процедура для обработки нескольких событий

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

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

Поэтому лучше будет поместить расчет суммы в некоторое «общедоступное» место, чтобы разные документы, имеющие аналогичные реквизиты табличной части, могли использовать этот алгоритм.

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

Рис. 2.27. Объекты конфигурации Общие модули

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

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

Назовем его РаботаСДокументами и установим в его свойствах флажок Клиент (управляемое приложение), а флажок Сервер снимем 9рис. 2.29).

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

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

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

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

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

Откроем форму документа ПриходнаяНакладная (рис. 2.30).

Рис. 2.30.

Перейдем на вкладку Модуль. В модуле формы изменим текст обработчика следующим образом (листинг 2.3).

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

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

Задание 2. Аналогичным образом измените обработчик события ПриИзменении для поля табличной части МатериалыЦена.

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

Рис. 2.31. До изменения цены и количества

Изменим цену и количество строчного трансформатора GoldStar (рис. 2.32).

Рис. 2.32. Пересчет суммы после изменения количества и цены

Задание 3. 1. Создайте документ ОказаниеУслуги. Представление списка задать как Оказание услуг. Отметить, что документ будет доступен в подсистемах Бухгалтерия и Оказание услуг.

2. Создать реквизиты документа:

  • Склад, тип СправочникСсылка.Склады. Выберем для свойства Значение заполнения предопределенный элемент Основной справочника Склады.

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

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

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

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

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

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

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

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

5. Создать основную форму документа ОказаниеУслуги.

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

Рис. 2.33. Создание обработчика события для поля ПереченьНоменклатурыКоличество

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

Рис. 2.34. Шаблон обработчика события

Рис. 2.35.

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

Листинг 2.4. Модуль формы документа «Оказание услуги»

Теперь отредактируем командный интерфейс так, чтобы в подсистеме Оказание услуг была доступна команда создания новых документов.

Откроем окно редактирования объекта конфигурации Подсистема ОказаниеУслуг и нажмем кнопку Командный интерфейс (рис. 2.36).

Рис. 2.36.

В открывшемся окне отразятся все команды выбранной подсистемы. В группе Панель действий.Создать включим видимость у команды Оказание услуги: создать (рис. 2.37).

Рис. 2.37. Настройка командного интерфейса подсистемы

Запустим 1С:Предприятие в режиме отладки.

В панели действий раздела Оказание услуг вызовем команду создания документа Оказание услуги (рис. 2.38).

Рис. 2.38.

Заполним его следующим образом (рис. 2.39).

Рис. 2.39. Создание документа «Оказание услуги №1»

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]