Главная » 1С Предприятие » МЕТОДЫ ФОРМЫ СПИСКА СПРАВОЧНИКА

0

Употребляются  в  модулях формы  списка   справочника без  префикса.  Приводятся в табл. 5.11.

Методы формы элемента справочника

Таблица 5.11

Метод

Описание

датаТек =  ИспользоватьДату

([датаНов]);

Имеет  то же назначение, что  и одноименный метод табл.  5.8

владТек =  ИспользоватьВладельца

([владелец], [флагИзм]);

Задает  владельца  для  формы списка  подчиненного справочника. Имеет то же описание, что

и одноименный метод табл. 5.8. Пример см.

в  разд.  5.10.3.

родТек =  ИспользоватьРодителя ([родитель],  [флагИзм]);

Задает родителя для формы  списка подчиненного справочника.  Имеет  то же описание, что

и  одноименный метод табл. 5.8

иерархТек  = ИерархическийСписок

([иерарх], [флагИзм]);

Если  иерарх  =1,  то  многоуровневый  справочник будет  отображаться  по  группам   в  виде иерархического списка (см.,  например, рис. 5.1); если  иерарх  =  0, то  элементы  в  окне   вывода  следуют без учета иерархии,  отсортированные, например, по

коду  (см.  рис. 5.2).  Если  флагИзм  = 1,  то  пользователь  может  интерактивно  включать/отключать  режим ввода списка  справочника  по  группам, и  не может,  если  флагИзм   = 0.  По   умолчанию  флагИзм

=  1. Возвращает 1, если  показ  списка элементов

осуществляется по группам,   или   0 -в  противном случае

выбТек =  ВыборГруппы([выбНов]);

Имеет  то же назначение, что  и одноименный метод табл.  5.8

Метод

Описание

редактТек  = РедактироватьВДиалоге

([редакт], [флагИзм]);

Если редакт = 1, то редактирование элемента (группы)  справочника будет осуществляться с использованием формы этого элемента (группы). Такие формы, конечно же, должны  быть заготовлены заранее. Если редакт = 0, то элемент (группа) редактируется в строке формы списка справочника. Если флагИзм = 1, то пользователь  может интерактивно менять режим редактирования справочника, и не может, если флагИзм = 0. По умолчанию флагИзм = 1. Возвращает 1, если редактирование на момент  вызова метода осуществляется в диалоге, или  0 -в противном случае

списТек = СохранениеПериодических Реквизитов(вариант, [список]);

Имеет то же назначение, что и одноименный метод табл.  5.8

сортТек = Сортировка

{[сорт], [флагИзм]);

Задает символьным параметром сорт способ сортировки данных  в диалоге формы списка справочника. Всегда параметр сорт можно задать равным "Код" или "Наименование". Также в качестве сорт можно передать  строку с именем реквизита, имеющего свойство Сортировка. Если флагИзм = 1, то пользователь может интерактивно менять  способ  упорядочения данных, и не может, если флагИзм = 0. По умолча­

нию флагИзм = 1. Возвращает 1, если редактирование на момент  вызова метода осуществляется в диалоге, ил и 0    в противном случае

УстановитьОтбор(рекв, знач);

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

(см. рис. 5.29, б). Если рекв пустая строка, то отбор отключается. Тип (разновидность типа) параметра знач определяется типом реквизита, по которому устанавливается отбор

флаг = ПолучитьОтбор(рекв, знач);

видыТек = ВидыОтбора

(списокРекв);

Возвращает в параметры рекв и знач текущий отбор  элементов справочника. Параметры имеют тот же смысл, что и одноименные параметры метода УстановитьОтбор. Возвращает  1, если отбор задан, или 0 в противном случае

Задает параметром списокРекв список реквизитов,

по которым в интерактивном режиме можно устанавливать отбор. Параметр списокРекв это строка, содержащая одно или несколько разделенных запятыми имен отбора, например "Образование" или "Имя,, ГодРождения"

Метод

Описание

флаг = ЗакладкиОтбора(рекв, [знач]);

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

в разд. 5.9.1.2

ИспользоватьСписокЭлементов

(сЗнач);

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

с непустым списком нельзя вводить, копировать и перемещать элементы справочника. Пример употребления см. в разд. 5.9.2

списТек = ПросмотрИстории([список]);

Имеет то же назначение, что и одноименный метод табл. 5.8

Пример.    В    предопределенной    процедуре   ПриОткрытии    модуля    форм ы    списка справочника  Сотрудники_2  задаются способы  представления  данных.

процедура  ПриОткрытии() перем  обр;

// Вывод данных осуществляется в диалоге формы без  учета иерархии;

// способ вывода изменению не подлежит

// Сортировка производится по наименованию;

// способ сортировки может меняться  интерактивно

// Редактирование записи выполняется в диалоге или в документе,

// если реквизит ПриказПрием содержит ссылку на документ Приказ  о приеме на работу

// Кроме того, устанавливаем отбор по реквизиту Образование и выводим  после

// открытия список сотрудников с высшим образованием ИерархическийСписок(0, 0); Сортировка("Наименование", 1);

// Режим редактирования можно менять интерактивно РедактироватьВДиалоге(1, 1);

обр = СоздатьОбъект("Справочник.Образование_2");

// Ищем высшее образование

если обр.НайтиПоНаименованию("В", 0) = 1 тогда

// Второй параметр  метода УстановитьОтбор должен иметь разновидность типа

// Справочник.Образование_2

УстановитьОтбор("Образование",  обр.ТекущийЭлемент()); иначе

Предупреждение

("В справочнике  Образование_2  нет записи,  начинающейся с буквы  В."); конецЕсли;

конецПроцедуры // ПриОткрытии

5.12.3.   ПРЕДОПРЕДЕЛЕННЫЕ  ПРОЦЕДУРЫ МОДУЛЯ ФОРМЫ  СПИСКА  СПРАВОЧНИКА

Включаются  программистом в модуль  формы списка справочника по мере  необходимости. Приводятся в табл. 5.12.

Таблица5.12

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

Процедура

Описание

ПриВводеСтроки()

Вызывается до начала ввода новой строки в форме списка справочника

ПриРедактированииНовой Строки()

Вызывается в  момент начала ввода данных в  новую строку  формы списка справочника

ПриНачалеРедактирования Строки()

Вызывается в  момент начала редактирования данных в существующей строке формы списка справочника

ПриЗаписи([пер.Рекв])

Имеет то же назначение, что и одноименная предопределенная процедура  модуля формы элемента (группы)  справочника

ПриПереносеЭлемента  ВДругуюГруппу ([элемент], [группа])

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

ПриВыбореРодителя

([родитель])

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

ПриВыбореВладельца

([владелец])

Вызывается при интерактивном выборе владельца. Здесь выбор

это перемещение с одного элемента справочника-хозяина на другой.  Параметр  владелец,  если  присутствует,  имеет тип Справочник и содержит выбранный элемент-владелец. Пример см. в разд. 5.10.3

ПриСменеИерархии

([иерарх])

Вызывается при интерактивной смене способа представления списка элементов справочника (иерархический неиерархический). Числовой  параметр иерарх, если он присутствует,  равен единице,  если  устанавливается иерархический способ, или нулю  в противном случае

ПриУстановкеОтбора

([рекв], [знач])

Вызывается при интерактивной установке отбора (см. разд. 5.9). Параметр рекв это строка, содержащая имя реквизита, по которому отбор установлен, например  "Образование", знач значение(критерий)отбора

Пример.  При переносе элемента в другую группу  справочника Сотрудники_2 необходимо изменить его код, приведя в соответствие  с правилами его автоматического назначения. Правила таковы: в качестве первых цифр кода элемента берется  код родителя, если родитель расположен на втором уровне справочника Сотрудники_2, или код родителя, увеличенный в 10 раз, если родитель лежит на первом уровне (всего в справочнике Сотрудники_2 три  уровня).  Последующие  цифры кода  сотрудника  образуют

возрастающую  последовательность  целых  положительность чисел.  Эту  схему  реализ ует  функция  СоздатьКод.  Ее  алгоритм  приведен в  разд.  5.8.2.2.  Правда,  в  нем  вместо функции  СоздатьКод использована одноименная процедура.

функция СоздатьКод(группа) далее

процедура ПриПереносеЭлементаВДругуюГруппу(элемент, группа) новКод = СоздатьКод(группа);

// Новый код для переносимого в другую группу элемента

УстановитьАтрибут("Код",  новКод);

конецПроцедуры // ПриПереносеЭлементаВДругуюГруппу

функция СоздатьКод(группа)

перем сСотр_2, максКод, двеЦифр, послЦифр; перем двеЦифрУмнНаК, к;

двеЦифр = ?(группа.Уровень() = 1, 10 * группа.Код, 1 * группа.Код);

// Найдем максКод максимальный код сотрудника в пределах подразделения сСотр_2  = СоздатьОбъект("Справочник.Сотрудники_2"); сСотр_2.ИспользоватьРодителя(группа);

// Осуществим перебор в порядке возрастания кодов элементов сСотр_2.ПорядокКодов();

сСотр_2.ВыбратьЭлементы();

максКод = 0;

пока сСотр_2.ПолучитьЭлемент() > 0 цикл максКод = 1 * сСотр_2.Код;

конецЦикла; // пока

// Ищем последующие цифры максКод и затем последующие цифры кода

// нового сотрудника. Будем умножать двеЦифр на 10, пока не превысим максКод

к=1 ;

двеЦифрУмнНаК = двеЦифр;

пока двеЦифрУмнНаК < максКод цикл двеЦифрУмнНаК = двеЦифрУмнНаК * 10;

конецЦикла; // пока

// Последующие цифры кода нового сотрудника

послЦифр = ?(максКод = 0, 1, максКод двеЦифрУмнНаК / 10 + 1);

// Итак, вернем код нового сотрудника

возврат Число(Строка(двеЦифр) + Строка(послЦифр)); конецФункции // СоздатьКод

5.13.   ЧТЕНИЕ ЗНАЧЕНИЯ РЕКВИЗИТА СПРАВОЧНИКА

Все  рассматриваемые  в  текущем   разделе  способы доступа  к  реквизитам  справочника уже нами употреблялись.  Здесь  же мы  приведем некоторые обобщения.

Значение  реквизита справочника  можно  получить, создав  объект  типа Справочник и   применив   вслед  известные  методы   доступа   к  реквизитам объекта  (см.  табл.   5.8). Причем значение  кода  (или иного реквизита) атрибута Родитель  (Владелец) можно  п олучить следующим  образом:

сСотр_2  =  СоздатьОбъект("Справочник.Сотрудники_2");

сСотр_2.НайтиПоКоду(301,  0);

//

Ищем  во всем справочнике

Сообщить(сСотр_2.Родитель.Код);

//

Код атрибута Родитель

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

Функция  ОткрытьФорму и  метод  модуля  формы  ОткрытьПодбор возвращают  ко нтекст  открытой формы. Поэтому, если  открыт  справочник, можно  обратиться  к его р еквизиту через  полученный контекст (см.  разд.  5.4).

Если объект, например  Сотрудник, имеет тип Справочник и является компонентом другого    объекта,   например   документа   ПриказОПриеме,   то    к   реквизиту объектакомпонента можно  обратиться, использовав,  например, такой путь:

<Создаем объект док с разновидностью типа Документ.ПриказОПриеме>

<Находим нужный  документ  (приказ)>

// Читаем значение реквизита Образование в справочнике, на который указывает

// реквизит Сотрудник найденного документа ПриказОПриеме обр = док.Сотрудник.Образование;

Источник: Бартеньев О. В. 1С:Предприятие:  программирование для  всех.  Базовые объекты и расчеты на одной дискете. М.: Диалог-МИФИ, 2005. 464 с.

По теме:

  • Комментарии