1С Предприятие. Практика программирования на платформе v7

  73c64bed     

Атрибуты объекта метаданных типа «Справочник»


Атрибут или Реквизит - это некое хранилище информации определенного типа. Каждый введенный нами реквизит позволит вводить в объект данного вида некоторые значения.

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

Атрибуты Код и Наименование характерны для любого справочника. По ним можно производить сортировку элементов справочника. Тип Наименования - строка. Тип Кода можно задать — или число, или строка.

Атрибут Родитель определен для элементов или групп справочника подчиненных какой-либо группе справочника и возвращает ссылку на неё.. Доступ к значению родительской группы выбранного элемента справочника осуществляет Метод ИспользоватьРодителя(<Группа >), устанавливающий выборку элементов по группе справочника.

Метод ПринадлежитГруппе(<Группа>) проверяет, принадлежит ли указанной группе текущий элемент справочника (независимо на каком нижележащем уровне он находится). Метод возвращает: 1 - если элемент принадлежит указанной группе , 0 - если нет.

Атрибут Владелец определен для элементов подчиненного справочника и возвращает ссылку на сопряженный элемент справочника владельца. Доступ к владельцу выбранного элемента справочника в связанном справочнике осуществляет Метод ИспользоватьВладельца(<Элемент>). <Элемент> - это значение элемента связанного справочника, которому подчинен данный

62_______________________ 1С:Предприятие. Практика программирования на платформе V7

справочник. Метод устанавливает выборку по элементу связанного справочника и возвращает значение текущего владельца для справочника (на момент до исполнения метода). В контексте Модуля формы списка справочника метод относится ко всему текущему справочнику.

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




Редактирование структуры справочника

Упражнение 5. Создадим два вида справочников: «Оборудование» и «Единицы», причем справочник «Единицы» сделаем подчиненным справочнику «Оборудование», Справочник «Оборудование» сделаем иерархическим, и определим в нем периодический реквизит элемента справочника, изменяемый документами «Цена», реквизит «График», тип реквизита — Календарь», предназначенный для вычисления интервалов времени по различным графикам работы, и реквизит «КоэффАморт», тип реквизита — Число, а также реквизит группы справочника «ГрЦена», тип реквизита — Число.

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





VII Справочники______________________________________________________________ 63

Появится окно редактирования структуры справочника (или конструктор справочника, если установлен флажок «Использовать конструкторы для создания новых объектов»), в которой редактируются свойства объекта.



Чтобы к объекту можно было обращаться, ему надо задать идентификатор, который не может содержать пробелов и специальных символов, кроме подчеркивания, и не должен начинаться с цифры, его длина не должна превышать 128 символов; кроме идентификатора, можно также задать комментарий и синоним. В отличие от идентификатора, на них не накладывается никаких ограничений. Синоним описывает пользовательское представление объекта, если он не задан, то для представления используется идентификатор. В комментариях обычно записывают текст, Расшифровывающий идентификатор или поясняющий назначение создаваемого объекта. Для подчиненных справочников задается свойство подчинения (связь со справочником владельцем типа «много к одному»). Для справочников любого вида характерны реквизиты «Код» и «Наименование», названия которых не изменяются, длина кода (не более 24 символов) и наименования (не более 100 символов). Также здесь задаются основные параметры для нумерации и сортировки элементов - «Контроль уникальности» и «Серии кодов». Из данной формы доступны различные формы представления справочника: форма элемента (индивидуальная карточка), форма группы, Формы списков и устанавливаются формы для редактирования элемента справочника: «в списке», «в диалоге» - в индивидуальной карточке или «обоими



64_______________________ 1С:Предприятие. Практика программирования на платформе V7

способами».

По умолчанию справочнику дается идентификатор «Новый1», изменим его на - «Оборудование», установим тип кода — «Текстовый».

Создание нового реквизита



Создание нового реквизита справочника может осуществляться как из дерева метаданных, через контекстное меню конкретного справочника, так и из вышеописанной формы нажатием кнопки «Новый». При этом на экране появляется окно палитры свойств - «Свойства реквизита». В верхней части закладки «Общие» следует ввести идентификатор нового реквизита. Идентификатор реквизита является некоторым уникальным словом, которое позволит отличить данный реквизит от других реквизитов данного объекта. При создании нового рекви-зита программа сама подставляет идентификатор «новый1». Целесообразно вводить идентифика-торы, отражающие назначение реквизита. Введем в справочник «Оборудование» реквизит «Цена» Тип вводимого реквизита указывается выбором из списка возможных типов в поле «Тип значения». Стандартными типами являются «Число», «Строка», «Дата». Они позволяют вводить, соответственно, числовое значение, произвольную строку символов или календарную дату. Установим тип значения реквизита «Число», который располагается вы-ше типа «Строка».

Для числовых реквизитов, кроме самого типа «Число», нужно также указать длину и точность (количество знаков после запятой). Обратите вни-мание, что длина числового реквизита указывается с учетом целой части, дробной и десятичной точки, на платформе 7.5 максимальная точность чисел - 5 знаков.

VII. Справочники_____________________________________________________________ 65

на платформе 7.7-9 знаков, максимальная длина чисел -19 знаков. На закладке «Дополнительные» можно задать разделение представления числа на триады -флажок «Разделять триады»,- которое не влияет на формат хранения чисел, то есть символ разделителя не включается в длину числа. Полностью данное свойство объекта метаданных можно именовать «Разделять триады цифр при показе числового значения объекта метаданных». Это свойство доступно для редактирования только для объектов метаданных с типом значения «число». Если это свойство включено, то при вводе и показе значения объекта метаданных будут автоматически вставляться разделители между тройками цифр, разделяя тысячи, миллионы, миллиарды и так далее. Здесь же можно установить флажок «Неотрицательный», который не позволит Вам интерактивно ввести отрицательное значение реквизита, причем при вводе отрицательного значения в «неотрицательный реквизит» система запишет положительное



значение.

Укажем для реквизита «Цена» длину 10 и точность 2, это значит, что максимальное число, которое можно будет ввести в реквизит количество, составит 9999999.99, то есть, в целой части количества мы сможем вводить 10-2-1 = 7 разрядов. При выборе длины и точности нужно ориентироваться на текущие потребности, оценив, какие при-мерно максимальные значения цены и с какой точностью встре-чаются в хозяйственных операциях. В дальнейшем можно легко увеличить и длину, и точность для любого реквизита. Максимальная точность числового значения - 9 знаков.

Уменьшение длины и точности реквизита может привести к потере существующих значе-ний в уже введенных элементах, но программа предупредит вас об этом.

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

66_______________________ 1С:Предприятие. Практика программирования на платформе V7

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



Для подтверждения введенных нами данных нужно нажать кнопку «ОК.». При этом палитра свойств будет закрыта, а введенный реквизит будет располагаться в списке реквизитов, в окне редактирования реквизитов.

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



V//. Справочники_____________________________________________________________ 67

Вернемся в окно редактирования свойств справочника «Оборудование» и создадим возможность группировать элементы справочника по группам. Для этого установим значение поля ввода «Кол-во, уровней» больше единицы.



Свойство реквизита многоуровенного справочника «Использовать» позволяет определить, для каких записей будет использоваться данный реквизит: «для элемента», «для группы» или «для обоих».





68_______________________ 1С:Предприятие. Практика программирования на платформе V7

Далее нажмем последовательно кнопки «Формы списка» и «Редактировать». Форм списка может быть несколько. Две из них можно определить для просмотра каталога и для подбора значений по умолчанию.







При нажатии на кнопку «Открыть» списка конструктор предложит нам ввести реквизиты Код, Наименование, ГрЦена, Цена и График. Не забудьте установить флажок «Вставить дерево групп». Нажмем кнопку «Вставить» и выбранные реквизиты будут помещены в форму списка справочника «Оборудование».

VII. Справочники_____________________________________________________________     69

Напомню, что форма включает в себя:

1. Диалоговое окно, в котором мы задаем расположение реквизитов, кнопок

и информационных полей (создаем визуальное представление объекта для пользователя);

2. Модуль формы, в который мы помещаем те процедуры и функции, которые

выполняются в момент интерактивного открытия, заполнения, сохранения и изменения объекта;

3. Табличный шаблон, в котором мы создаем, если это необходимо, шаблон

печатной формы данного объекта.

Упражнение 6. Самостоятельно создайте Форму списка для подбора элементов справочника «Оборудование»,которая будет содержать дерево групп, а в таблице атрибуты код и наименование.



Чтобы можно было установить вручную нужную ширину колонок многострочной части, следует сначала отключить режим автоматического определения ширины колонок (в 7.7 этот режим по умолчанию отключен). Автоматическое определение ширины колонок отключается в палитре свойств многострочной части документа, для этого нужно дважды щелкнуть мышью в многострочную часть. В палитре свойств следует щелкнуть мышью флажок «Автоматическая настройка ширины колонок» и нажать кнопку «ОК», чтобы подтвердить произведенные изменения. После этого можно перетаскиванием вертикальных границ колонок табличной части установить для них желаемую Ширину. Для перетаскивания границ колонок необходимо поместить указатель Мыши над линией, разделяющей колонки в табличной части, чтобы курсор мыши принял соответствующую форму, затем нажать правую кнопу мыши и, не опуская ее, перетащить разделитель колонок в новое место.



70_______________________ 1С:Предприятие. Практика программирования на платформе V7

Если все колонки не помещаются в видимой области табличной части, то, для «прокрутки» колонок по горизонтали, следует щелкать мышью в левую или правую стрелку горизонтальной полосы прокрутки у нижней границы табличной части.

Можно изменить порядок следования колонок, перетаскивая их в пределах табличной части. Для перетаскивания колонки её следует выделить, щелкнув мышью в ее заголовок, и переместить указатель мыши, при нажатой левой кнопке, в то место, где должна располагаться колонка, при этом выделенной, т.е. редактируемой, колонкой останется та же колонка по номеру позиции; например, была выделена 5-я колонка и перемещена в 3-ю позицию, но выделенной станет колонка в 5-ой позиции, то есть та, которая была 4-ой.

Упражнение 7. Создайте диалоговую Форму для элементов справочника «Оборудование».

Редактирование формы в основном выполняется мышью. Основным приемом работы является «перетаскивание». При перетаскивании щелкают левой кнопкой мыши в элемент, который нужно перетащить и, не отпуская левую кнопку, ведут указатель мыши к тому месту, куда перетаскивается элемент, а затем кнопка мыши отпускается. Все элементы диалога размещаются в пределах шаблона окна диалога. Также можно поместить элемент и вне шаблона, но тогда при работе с диалогом этот элемент будет невиден и недоступен. Сначала отодвинем вниз нижнюю границу диалога. Щелкните мышью в пустое серое пространство диалога (в любое место). При этом граница формы будет выделена пунктирной линией, на которой будут размещены маркеры. Эта линия показывает тот элемент диалога, над которым будут выполняться какие-либо действия. Для изменения вертикального размера диалога нужно перетащить мышью маркер на пунктирной линии обозначающей нижнюю границу диалога. При этом в нижней части диалога образуется пустое место. Теперь нужно перетащить ближе к нижней границе две кнопки: «ОК» и «Закрыть». Кнопки можно перетащить по одной, а можно выделить их обе и перетащить две одновременно. Для выделения кнопок щелкните мышью од-ну кнопку, затем нажмите клавишу Shift и, не отпуская ее, щелкните мышью другую кнопку. Вокруг каждой кнопки будет нарисована синяя пунктирная линия с маркерами. Перетащить такую группу элементов можно, перетаскивая любой элемент. Выделять элементы диалога можно также, просто «обводя» их мышью - границу выделяемой области будет показывать тонкая пунктирная линия. Но таким образом можно выделять только элементы, расположенные рядом. Выделенные элементы можно отформатировать по шаблону. Для выбора



VIl. Справочники______________________________________________________________ 71

шаблона, нажав клавишу Ctrl, щелкните левой кнопкой мыши нужный элемент формы диалога.



В форме элемента желательно увидеть, к какой группе справочника принадлежит данный элемент. Причем, элемент может находиться на верхнем (первом) уровне справочника и не иметь родительской группы. Создадим в форме реквизит с соответствующим текстом. Выберем в меню «Вставить» или в панели инструментов инструмент «Текст» и наметим курсором место в форме, куда мы поместим реквизит формы. Для этого нужно поместить курсор в левый верхний угол предполагаемой области формы диалога, в которую предполагается их поместить, нажать левую кнопку мыши, не отпуская ее, переместить курсор к правому нижнему углу предполагаемой области размещения реквизита, и отпустить кнопку мыши. Так как текст в реквизите мы будем выводить с помощью выражения на встроенном языке в поле «Формула» на закладке «Дополнительные», то текст заголовка реквизита надо удалить.



72_______________________ 1С:Предприятие. Практика программирования на платформе V7

Запишем выражение в поле «Формула» свойств текста, используя, оператор конкатенации строк:



Метод ?(<Логич_выраж>,<Выраж1>,<Выраж2>) возвращает значение первого выражения, если условие истинно, иначе - значение второго выражения.

Метод Выбран( ) возвращает флаг выбора элемента справочника; 1 - если элемент справочника выбран, О - если не выбран.

Шрифт отредактирован на закладке «Шрифт» текстового реквизита.



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

Метод Уровень() возвращает номер уровня записанного в базу данных текущего элемента справочника.

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



VII. Справочники_____________________________________________________________ 73_

Процедура ВводНового()

Если Родитель.Выбран()=1 Тогда

Цена=Родитель.ГрЦена; КонецЕсли;

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

Предопределенная процедура при интерактивном вводе нового элемента справочника

ВводНового(<ПризнКопирования>,<ОбъектКопирования>).

Параметры:<ПризнКопирования> - признак того, что объект введен копированием. Число: 1 - объект

введен копированием, 0 - просто новый объект. Данный признак может быть использован для анализа

необходимости инициализации реквизитов нового объекта.<ОбъектКопирования> - объект, который

был скопирован.

При копировании записей справочника копируются все реквизиты, кроме кода записи справочника. Отредактируем принудительно атрибут элемента «Наименование», используя параметры предопределенной процедуры ВводНового() и метод ВвестиСтроку().

Метод ВвестиСтроку(<Строка>,<Подсказка>,<ДлинаСтроки>,<Признак>,<Таймаут>) Вызывает окно

интерактивного диалога для ввода строки. Возвращает:

1 - если в диалоге нажата кнопка ОК;

О - если нажата кнопка Отмена;

-1 - если закончилось время ожидания ответа.

Параметры: <Строка> - имя переменной, объявленной в модуле для приема вводимого значения;

<Подсказка> - текст заголовка окна диалога ввода; <ДлинаСтроки> - длина вводимой строки;

<Признак> - если 0 или опущен - ввод одной строки, если 1 - ввод многострочного текста с

разделителями строк; <Таймаут> - число секунд времени ожидания ответа (если опущен или 0, то без

ограничения).

Процедура ВводНового(признак,копируемый)

Если признак=1 Тогда

ВвестиСтроку(Наименование,”Введите наименование”,25);

КонецЕсли;

Если Родитель.Выбран()=1 Тогда Цена=Родитель.ГрЦена;

КонецЕсли; КонецПроцедуры

Запишем аналогичный алгоритм в форме списка справочника. В этом контексте свой список предопределенных процедур. Для ввода цены по Умолчанию используем предопределенную процедуру ПриРедактированииНовойСтроки(). Проверить операцию копирования в форме списка мы не можем.



Процедура ПриРедактированииНовойСтроки () Если Родитель.Выбран()=1 Тогда

Цена=Родитель.ГрЦена; КонецЕсли;

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

74_______________________ 1С:Предприятив. Практика программирования на платформе V7

Упражнение 8. Создайте справочник «Единицы». В окне редактирования справочника «Единицы» установите подчинение (в поле ввода «Подчинен») справочнику «Оборудование» и создайте реквизит «Коэффициент», в который будут записываться значения коэффициентов пересчета соответствующие единицам измерений. В форме элемента и в форме списка справочника в текстовом реквизите формы покажите владельца элемента справочника.

Для вставки в табличную часть формы списка текстового реквизита щелкнем мышью кнопку с синей буквой «Т» в панели элементов диалога или соответствующую строку в меню «Вставить», установим его на табличную часть, курсор мыши при этом примет специальный вид, и ещё раз щелкнем левой кнопкой мыши. Появится дополнительная колонка без названия в самой правой позиции табличной части формы, чтобы её увидеть, как правило, надо прокрутить табличную часть стрелкой вправо. Для ввода формулы нужно активизировать свойства колонки. Сначала щелчком мыши в табличную часть мы должны активизировать табличную часть, а затем двойным щелчком в заголовок колонки активизировать свойства этой колонки. При этом появляется палитра свойств колонки. Зададим колонке название в поле «Заголовок», а в поле «Формула» напишем — Владелец.


Содержание раздела