Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦОО_ПОЭИС_Л5.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
393.73 Кб
Скачать

5.5. Событие Выбор

При двойном щелчке (или нажатии Enter) на ячейке табличного документа или рисунке возникает событие Выбор. Это же собы­тие возникает при одинарном щелчке на гиперссылке. Програм­мист может перехватить это событие с помощью процедуры-обработчика.

Замечание. Следует различать события Выбор и ОбработкаРасшифровки. Событие Выбор возникает при двойном щелчке (или нажатии Enter) на ячейке или рисунке, даже если у них нет расшифровки, тогда как событие ОбработкаРасшифровки возни­кает у ячеек или рисунков, содержащих расшифровку. Причем сначала возникает событие Выбор, а потом ОбработкаРасши­фровки.

6.6. Параметры

Чтобы вывести в ячейку информацию из базы данных, нужно ус­тановить свойство Заполнение в значение «Параметр» или «Шаб­лон», как показано на следующем рисунке:

Если выбрано значение «Параметр», то затем указывается имя параметра, которое будет доступно в модуле через коллекцию Параметры объекта ТабличныйДокумент.

Если выбрано значение «Шаблон», то имена параметров указы­ваются в самой ячейке в квадратных скобках, как, например, ячей­ка «Директор» в макете расходной накладной.

Замечание. В квадратных скобках строки-шаблона не может быть выражений на встроенном языке, как это допускалось в вер­сии 7.7. При формировании отчета не учитывается контекст мо­дуля. Текст программы на встроенном языке может быть только в программном модуле.

Рассмотрим, как заполняются параметры у объекта ТабличныйДокумент через его свойство-коллекцию Параметры. Следующий фрагмент демонстрирует задание параметров через это свойство:

//получим область как новый табличный документ

Область = Макет.ПолучитьОбласть("Заголовок");

//укажем параметры области

Область.Параметры.НомерДокумента = Номер;

Область.Параметры.От = Дата;

Область.Параметры.Кому = Контрагент;

ТабДок.Вывести(Область);

ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка"));

Область = Макет.ПолучитьОбласть("Строка");

Для Каждого СтрСостава Из Состав Цикл

Область.Параметры.Заполнить(СтрСостава);

ТабДок.Вывести(Область);

КонецЦикла;

Область = Макет.ПолучитьОбласть("Подвал");

Область.Параметры.ИтогоКоличество= Состав.Итог("Количество");

Область.Параметры.ИтогоСумма = Состав.Итог("Сумма");

РегОтв = РегистрыСведений.ОтветственныеСотрудники;

Область.Параметры.Директор= РегОтв.ПолучитьПоследнее(Дата).Директор;

ТабДок.Вывести(Область);

Метод Заполнить позволяет в краткой форме присвоить значения всем параметрам. Соответствие устанавливается по именам параметров области и именам свойств переданного объекта.

5.7. Расшифровки

Система 1С:Предприятие 8 поддерживает механизм расшифро­вок, когда пользователь щелкает на строке или ячейке отчета и получает более детальный отчет, если, конечно, это предусмотрено разработчиком.

Расшифровки делятся на стандартные и нестандартные.

Стандартные расшифровки обрабатываются системой автомати­чески и не требуют дополнительных усилий от программиста, на­пример:

• значения типа «число», «строка», «дата», «перечисление» бу­дут выданы для просмотра;

• для документов будет открыта форма документа;

• для элементов справочника будет открыта форма элемента, а если справочник редактируется в списке, то курсор будет уста­новлен на текущем элементе в форме списка.

Для обеспечения стандартной расшифровки необходимо:

  • в свойствах ячейки, которая нуждается в расшифровке, найти свойство "парам. расшифровки" и ввести имя переменной-ссылки на элемент справочника, форму элемента которого необходимо показать (Например "Расшифровка")

  • В тексте процедуры печати означить данную переменную. Пример такой процедуры:

Пример процедуры печати справочника

Процедура Печать(Элемент)

ТабДок = Новый ТабличныйДокумент;

Макет = Справочники.ОсновныеСредства.ПолучитьМакет("Печать");

Макет.Параметры.Расшифровка = Истина; // чтобы работала расшифровка

Секция = Макет.ПолучитьОбласть("Заголовок");

ТабДок.Вывести(Секция);

Секция = Макет.ПолучитьОбласть("Шапка");

ТабДок.Вывести(Секция);

Выборка = Справочники.ОсновныеСредства.ВыбратьИерархически();

Пока Выборка.Следующий() = Истина Цикл

Объект = Выборка.ПолучитьОбъект();

Если Объект.ЭтоГруппа = Истина Тогда

Секция = Макет.ПолучитьОбласть("Группа");

Секция.Параметры.Код=Объект.Код;

Секция.Параметры.Наименование=Объект.Наименование;

ТабДок.Вывести(Секция);

Иначе

Секция = Макет.ПолучитьОбласть("Элемент");

Секция.Параметры.Код=Объект.Код;

Секция.Параметры.Расшифровка=Объект;

Секция.Параметры.Наименование=Объект.Наименование;

ТабДок.Вывести(Секция);

КонецЕсли;

КонецЦикла;

ТабДок.ОтображатьСетку = Ложь;

ТабДок.Защита = Истина;

ТабДок.ТолькоПросмотр = Истина; // только в данном режиме работает расшифровка!!!

ТабДок.ОтображатьЗаголовки = Ложь;

ТабДок.Показать();

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

Для выполнения нестандартной расшифровки предназначено со­бытие ОбработкаРасшифровки.

Замечание. Событие ОбработкаРасшифровки можно обрабо­тать только, если табличный документ отображается в форме в элементе управления ПолеТабличногоДокумента, а не открыва­ется в отдельном окне.

ТабДок = ЭлементыФормы.ПолеТабДок;

ТабДок.Очистить();

Ниже показан отчет, в форме которого располагается элемент управления ПолеТабличногоДокумента на закладке «Таблица»

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

Замечание. В некоторых случаях бывает затруднительно вы­делить поле табличного документа, чтобы обратиться к его свой­ствам. Обычно это делается щелчком мыши на границе элемента управления, но это невозможно, когда граница не видна, напри­мер, сливается с границей панели. В этом случае необходимо вы­делить любую ячейку и нажать клавишу ESC, после чего таблич­ный документ будет выделен. Затем нажмите Alt-Enter для редактирования его свойств.

Следующая процедура-обработчик события анализирует расшиф­ровку, и, если это элемент справочника Номенклатура, то вызы­вается процедура РасшифроватьСтроку, а стандартная обработка расшифровки отключается:

Процедура тпРезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)

Если

ТипЗнч(Расшифровка)=Тип("СправочникСсылка.Номенклатура") Тогда

//отключим стандартную обработку

СтандартнаяОбработка = Ложь;

НовыйТабДок = ФормаРаcшифровки.ЭлементыФормы.ТабДок;

РасшифробатьСтроку(НовыйТабДок, Расшифровка);

ФормаРасшифровки.Открыть();

КонецЕсли;

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

Обработку расшифровок у ячейки можно отключить, если задать свойство ИспользованиеРасшифровки в значение «Без обработ­ки». Это же свойство позволяет распространить расшифровку ячейки на всю строку, если установить его в значение «Строка».