Работа с формой документа.
Форма документа предназначена для внесения данных и корректировки отдельного документа.
При создании формы документа на неё выносятся автоматически управляющие элементы, отображающие существующие реквизиты документа. Состав управляющих элементов можно корректировать, добавлять новые элементы.
Рис.1.12. Управляемые элементы, устанавливаемые на форму документа.
Элемент "обычная группа" позволяет менять порядок расположения элементов, за счёт включения элементов в группу, кроме того в свойствах элемента можно задать горизонтальную или вертикальную группировку.
События обработки управляющих элементов
Для управляющих элементов предопределены события. События можно определять через контекстное меню элемента (команда События) и через свойства элемента. При выборе некоторого события автоматически создаётся процедура обработки соответствующего события.
Рис.1.13. Предопределённые события для управляющих элементов.
Например, при выборе события <ПриИзменении>, для реквизита табличной части Количество будет создан программный модуль- обработчик, связанный с данным событием изменения значения этого реквизита. В качестве параметра для метода-обработчика передаётся ссылка на элемент - Элемент, с которым связано рассматриваемое событие.
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
// Вставить содержимое обработчика.
КонецПроцедуры
Обработка данных документа.
Обработка данных документа может производится на основе модулей, выполняемых на клиенте и сервере, в зависимости от данных которые требуется обработать и которые необходимы для обработки. На стороне клиента доступны данные управляющих элементов и реквизитов документа. Данные управляющих элементов доступны через коллекцию документа Элементы данная коллекция содержит все управляющие элементы Документа. Доступ к реквизитам осуществляется через главный реквизит Объект, соответствующий всему документу.
В том случае, когда требуются данные справочников, констант, макеты, сохранённые данные документа, необходимо использовать модули выполняемые на сервере.
В частности в как рассмотрено в примере обработки
Например, для созданного выше метода-обработчика ТоварыКоличествоПриИзменении пересчёт значения элемента Сумма может быть произведён следующим образом.
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
// Вставить содержимое обработчика.
Стр=Элементы.Товары.ТекущиеДанные ;
Стр.Сумма=Стр.Количество*Стр.Цена;
КонецПроцедуры
Данный обработчик – выполняет пересчёт суммы при изменении количества соответствующих единиц номенклатуры в табличной части.
В процедуре используются следующие объекты.
Элементы – Коллекция управляющих элементов формы.
Элементы.Товары – табличная часть формы (в данном случае имя табличной часть – Товары).
Товары.ТекущиеДанные – текущая строка табличной части. Обратите внимание, если реквизитом табличной части является агрегатныей объект, то его свойства нельзя увидеть через ТекущиеДанные.
Через переменную Стр происходит выборка текущей строки и зачем пересчёт значения суммы.
Пусть необходимо сделать обработчика события изменения реквизита Номенклатура табличной части документа. При изменении номенклатуры автоматически должна подставляться цена новой выбранной номенклатурной единицы. В данном случае для получение цены необходимо создать вспомогательный программный модуль, например функцию, обеспечивающий получение цены номенклатурной единицы. В качестве входного параметра для данной функции целесообразно задавать экземпляр соотвествующего справочника (номенлатура) Данный программный модуль должен выполняться на сервере.
Процедура ТоварыНоменклатураПриИзменении(Элемент)
// Вставить содержимое обработчика.
Стр=Элементы.Товары.ТекущиеДанные;
Стр.Цена=ПолучитьЦенуНоменклатуры(Стр.Номенклатура);
ТоварыКоличествоПриИзменении(Элемент) ;
КонецПроцедуры
Обработчик события "При изменении" поля Номенклатура в табличной части. Для получения цены номенклатуры создана функция ПолучитьЦенуНоменклатуры (цену нельзя получить через объект стр.Номенклатура )
&НаСервереБезКонтекста
Функция ПолучитьЦенуНоменклатуры(Номенклатура)
Возврат Номенклатура.ЦенаПокупки;
КонецФункции
Для выборки данных всей табличной части документа лучше использовать объект специальной коллекции Документы. Данная коллекция включает все документы сохранённые с системе. Для получение одного конкретного экземпляра документа необходимо позиционироваться на треуемом элементе данной коллекции с помощью метода НайтиПоНомеру или НайтиДокумент.
Док=Документы.<ВидДокумента>.НайтиПоНомеру(НомерДок);
В данном случае объект Док будет соотвествовать документу с требуемым номером.
Для перебора даных табличной части документа можно использовать цикл.
Для Каждого ТекущаяСтрока Из Док.Товары Цикл
КККК = текущаяСтрока.Количество;
КонецЦикла;
В данном случае выводится в переменную ККК значение реквизита табличной части Количество (Товары – имя табличной части документа)
Дата добавления: 2017-08-01; просмотров: 212;