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

Открытие форм справочника

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

Рассмотрим возможные варианты открытия различных форм справочника:

//обращение к форме по имени

Форма = Справочники.Сотрудники.Получитьформу("ФормаДляМенеджера");

Форма.Открыть();

//открыть основную форму списка

Справочники.Сотрудники.ПолучитьФормуСписка().Открыть();

//открыть подбор товара из документа,

//текущая форма будет владельцем открываемой формы

Форма = Справочники.Номенклатура.ПолучитьФормуВыбора(, ЭтаФорма);

Если НЕ Форма.Открыта() Тогда //если она еще не открыта

Форма.ИмяСохраненияПоложенияОкна = "НоменклатураПодбор";

КонецЕсли;

//установить свойства формы до ее открытия

Форма.РежимВыбора = Истина;

Форма.ЗакрыватьПриВыборе = Ложь;

Форма.РазрешитьСостояниеПрикрепленное = Истина;

//открыть форму или активизировать уже открытую форму

Форма.Открыть();

Работа с табличным частями

Обращение к табличным частям справочника производится через их имена. Для обхода строк табличной части рекомендуется при­менять конструкцию

«Для Каждого...».

Ниже показан пример обработки табличной части УтверждаемыеДокументы для справочника Сотрудники:

Сообщить("Выбранный сотрудник утверждает следующие документы:");

Для Каждого УтвДок Из ВыбСотр.УтверждаемыеДокументы Цикл

Сообщить(УтвДок.Документ);

КонецЦикла;

Модуль объекта

В версии 8 введено такое понятие как модуль объекта, который отличается от модуля формы элемента справочника. В новой вер­сии экранные формы отделены от самих объектов конфигурации, поэтому необходимо понимать предназначение модуля объекта. Дело в том, что именно в нем располагаются обработчики собы­тий, связанных с элементом справочника.

В версии 8 существуют следующие события, обработчики кото­рых располагаются в модуле справочника:

  • ПриКопировании

Событие возникает при создании элемента справочника ко­пированием. В обработчике события ПриКопировании можно вмешаться в этот процесс и более интеллектуально заполнить некоторые реквизиты элемента справочника.

  • ПередЗаписью

Процедура-обработчик вызывается после начала транзак­ции, но до начала записи элемента справочника. В данном обработчике можно отказаться от записи элемента.

  • ПриЗаписи

Событие возникает после записи элемента справочника в базу данных, но до окончания транзакции* записи. В данном обработчике также можно отказаться от записи элемента.

  • ПередУдалением

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

  • ПриУстановкеНовогоКода

Событие возникает в момент, когда выполняется установка нового кода элемента справочника.

  • ОбработкаЗаполнения

Событие возникает при вводе элемента справочника на основании, а также при выполнении метода Заполнить. В процедуре-обработчике этого события должен быть описан алгоритм заполнения реквизитов элемента справочника на основании переданного значения.

Обработчики этих событий должны располагаться в модуле объ­екта и только там, независимо от наличия у справочника различ­ных форм. Обработчики событий будут вызываться всегда при наступлении указанных событий, даже если событие инициирова­но программными вызовами, например методами Записать и Удалить. Это важное отличие в обработке событий по сравнению с версией 7.7, в которой такие события вызывались только при интерактивных действиях пользователя.

Приведем пример использования обработчика события. Допустим, в конфигурации категорически не допускается ввод позиции но­менклатуры без указания основной единицы измерения. Тогда в модуле объекта справочника Номенклатура необходимо преду­смотреть обработку события ПередЗаписью:

Процедура ПередЗаписью(Отказ)

Если ЭтоГруппа = Ложь И ЕдиницаИзмерения.Пустая() Тогда

Сообщить("Не указана основная ед. измерения!");

Отказ = Истина;

КонецЕсли;

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

Обратите внимание, что реквизит ЕдиницаИзмерения определен только для элементов справочника Номенклатура, поэтому сна­чала проверяется, что записывается именно элемент, а не группа (условие «ЭтоГруппа = Ложь»).

Также заметьте, что вторая часть условия в операторе Если не выполняется, если первое условие не выполнено. Это происходит, потому, что, как уже говорилось в главе «Встроенный язык», в 1С:Предприятии 8 применяется сокращенное вычисление условий. Если после вычисления части составного условия уже можно определить результат всего условия, то остальная часть условия не вычисляется. Если бы в нашем примере для группы вычисля­лась вторая часть условия, то выдавалась бы ошибка, поскольку реквизит ЕдиницаИзмерения для групп не определен.ssssss

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