Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания по ЭАБ.docx
Скачиваний:
211
Добавлен:
12.03.2016
Размер:
2.82 Mб
Скачать

Форма документа

Создадим свою собственную форму документа «ПриходнаяНакладная» для того, чтобы в ней мы могли описать тот алгоритм, который нам нужен.

  1. Создайте форму документа: в окне Конфигуратора выберите на дереве объект Документы, выберите ПриходнаяНакладная, выберите вкладку Формы, выберите кнопку Лупа в поле Документа, должен запуститься конструктор форм, согласившись тем самым со всем, что нам предлагает система нажмите Готово.

Рисунок 2.6 – Создание формы документа

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

Рисунок 2.6 – Конструктор формы документа

Рисунок 2.7 – Новая форма документа и окно редактора форм

Более удобный и правильный вариант, когда меняется значение в поле «Количество» или в поле «Цена», в поле «Сумма» автоматически устанавливалось значение равное Количество*Цена. Очевидно, что для этого нужно написать на встроенном языке команду похожую на Сумма = Количество*Цена, которая будет выполняться при изменении значения поля «Количество» или «Цена».

Рисунок 2.8 – Элементы управления

Процедура обработки события в модуле формы

  1. В окне ФормаДокумента выберите Поле ввода в колонке Количество, МП, Свойства, должна появиться Палитра свойств, прокрутите список до конца, вы обнаружите перечень событий, которые могут быть связаны с этим полем ввода, в группе Событияв поле При изменении нажмите Лупа, система создаст заготовку процедуры обработчика этого события в модуле нашей формы.

Модуль – это «хранилище» для текста программы на встроенном языке. В конфигурации существует большое количество модулей, которые расположены в различных ее точках. Они могут принадлежать некоторым объектам конфигурации (например, формам), а могут существовать сами по себе (принадлежать всей конфигурации в целом).

Рисунок 2.9 – Заготовка процедуры в модуле формы

  1. В модуль формы добавьте код (Листинг 2.1):

Листинг 2.1 - Процедура обработки события в модуле формы

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

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

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

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

В первой строке мы обращаемся к программному объекту ЭлементыФормы. Этот объект является коллекцией значений, содержащей все элементы управления, расположенные на нашей форме. Каждый элемент управления формы можно получить, указав его имя в качестве свойства объекта ЭлементыФормы. В данном случае мы обращаемся к элементу управления с именем «Материалы» (ЭлементыФормы.Материалы).

Этот элемент управления отображает строки табличной части нашего документа. Получить ту строку, в которой в настоящее время осуществляется редактирование, можно при помощи свойства программного объекта ТабличноеПоле - ТекущиеДанные. Таким образом, в результате выполнения первой строки переменная СтрокаТабличнойЧасти будет содержать объект

ДокументТабличнаяЧастьСтра.ПриходнаяНакладная.Материалы, в котором находятся редактируемые данные.

Во второй строке вычисляется сумма как произведение количества и цены. Объект ДокументТабличнаяЧастьСтрока.<имя>позволяет обратиться к данным конкретной колонки, указав имя колонки в качестве свойства объекта (например, СтрокаТабличнойЧасти.Количество).

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

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

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