Список реквизитов всех уровней всех типов документов хранится в справочнике «Реквизиты документов и их свойства» (файл R165.ADT – запускается из окна «Уровни документов» путем нажатия клавиши F7).
Для удобства редактирования реквизитов можно перейти в режим отображения документов в виде карточки (по клавише F2).
Каждый реквизит имеет перечень свойств, которые влияют на вид и характер информации, определяющей значения этих реквизитов, взаимозависимость значений реквизитов при вводе или изменении одного из них и прочее.
Существуют следующие свойства реквизитов:
«Идентификатор реквизита» – латинская аббревиатура реквизита. Используется при описании свойств других реквизитов и при создании представлений документов.
«Тип реквизита» – выбирается из списка (если редактирование ведется в режиме карточки). Может принимать значения: реальное поле, вычисляемое поле, дополнительное (Memо) поле, выбираемое из справочника, выбираемое из массива. Реальное поле, дополнительное (Memo) поле, выбираемое из справочника и выбираемое из массива сохраняются в базе. Вычисляемое поле в базе не сохраняется, если не указана процедура записи в базу.
тип «реальное поле» – указывается для существующих полей (которые описаны в файле dt_field.adt в базе DOCS).
тип «дополнительное (Memo) поле» – указывается для полей, которые ранее не были описаны в dt_field.adt. Для таких полей следует указывать маску ввода. Кроме того, если имя реквизита указано как дополнительное (Memo) поле, а имя реквизита совпадает с именем поля, которое есть в базе данных, то часть значения реквизита будет содержаться в поле базы, с которым совпало имя, а оставшаяся часть будет помещена в Memo– поле. В результате, такие поля могут быть отсортированы по той части значения, которая уместилась в реальной части.
тип «выбираемое из справочника» – устанавливается для полей, значения которых могут быть выбраны из справочника. В случае установки этого типа должны быть также установлены значения полей «Имя справочника» и «Поле справочника (имя массива)».
тип «выбираемое из массива» – устанавливается, если значение поля принимает какие-то фиксированные значения. Все используемые массивы, должны содержаться в справочнике R201 – Описания массивов.
тип «вычисляемое поле» – устанавливается, если значение этого поля не следует сохранять в базе.
тип «ссылка» указывается для реквизитов, чьи описания находятся в другом документе, а сами реквизиты объявлены там как общие. Такие реквизиты добавляются в другие документы из списка общих реквизитов, который вызывается по сочетанию клавиш CTRL+F6. После выбора общих реквизитов, в свойстве реквизитов «Выражение чтения из базы» будет находиться ссылка в формате KindDoc+Номер уровня на документ, в котором находится полное описание реквизита. Изменения описания общего реквизита приведет к тому, что этот реквизит во всех документах, где есть на него ссылка, будет рассчитываться по-новому (одно и то же описание используется во многих документах).
«Наименование» – название реквизита, которое будет фигурировать на экранной форме документа, если оно не переопределено в представлении.
«Выражение чтения из базы» – выражение, преобразующее значение реквизита перед его высветкой на экранной форме. Для вычисляемых полей, значение, которое будет в них выводиться, должно быть описано в данном свойстве.
«Выражение для расчета» – подпрограмма, по которой производится перерасчет значения реквизита, после изменения другого реквизита, у которого данный перечислен в свойстве «Перечень зависимых реквизитов». При написании подпрограмм можно использовать предопределенные переменные, которые служат для определения различных вариантов отработки взаимозависимостей реквизитов:
INFLUENSE – Имя рассчитываемого реквизита
BASEFLDNAME – Имя базового (предыдущего) реквизита
INPUTFLDNAME – Имя исходного реквизита
VALUE – Значение базового реквизита
OLDVALUE – Предыдущее значение базового реквизита
FLADD – Флаг добавления новой записи (в противовес отработке при изменении реквизитов у старой записи)
FLDEF – Флаг режима установки умалчиваемого значения (устанавливается на время прописывания умалчиваемых значений при добавлении)
«Выражение для записи в базу» – выражение, преобразующее введенное значение реквизита к тому виду, в котором он хранится в базе данных.
«Умалчиваемое значение (выражение)» – константа или вычисляемое выражение, используемое в качестве исходного значения реквизита при добавлении нового документа.
«Маска ввода» – устанавливает формат значений, которые могут быть присвоены реквизиту. В принципе маска редактирования реквизита документа описывается в формате Delphi (см. описание свойства EDITMASK):
> Если символ > встретился в маске, все последующие символы переводятся в верхний регистр (заглавные буквы) до конца маски или до появления символа < .
< Если символ < встретился в маске, все последующие символы переводятся в нижний регистр (строчные буквы) до конца маски или до появления символа > .
<> Если такая пара встретится в маске, то для последующего ввода отменяется проверка на регистр вводимых символов, и данные запоминаются в том регистре, в каком были введены.
\ Символ, следующий за \, становится обязательным в данной позиции.
L (заглавная латинская) требует в данной позиции только алфавитный символ: A-Z, a-z, А-Я, а-я.
l (строчная латинская л) позволяет ввод только алфавитных символов в данной позиции, но не требует, чтобы символ непременно был введен.
A (заглавная латинская) требует в данной позиции только алфавитный или числовой символ: A-Z, a-z, 0-9, А-Я, а-я.
a (строчная латинская) позволяет ввод только алфавитных символов или цифр в данной позиции, но не требует, чтобы символ (цифра) непременно были введены.
C (заглавная латинская) требует ввода произвольного символа в данной позиции.
c (строчная латинская) позволяет ввести в данной позиции произвольный символ, но не требует, чтобы символ непременно был введен.
0 требует ввода только цифр в данной позиции.
9 позволяет ввести в данной позиции только цифры, но требует их непременного ввода.
# позволяет ввести цифру, плюс или минус в данной позиции, но не требует их непременного ввода.
: используется для разделения часов, минут, секунд при вводе времени. (На самом деле берется настройка разделителя из Панели управления.)
/ используется для разделения месяцев, дней и лет при вводе дат. (На самом деле берется одноименная настройка из Панели управления.)
; используется для отделения 3-х полей маски.
_ автоматически вставляет в текст пробелы. Когда пользователь вводит символы, курсор проскакивает символы _ .
Исключения из формата EditMask:
- десятичная точка в маске для числовых полей указывается запятой или точкой, например, 9999,99
- второе и третье поля маски можно не указывать, в этом случае они принимаются за ';1; '
- при описании числовых реквизитов третье поле маски отвечает за отображение нуля. Для отображения вместо 0 пустой строки третье поле маски *: 999.99;;* означает заменять 0 пустой строкой
- при описании числовых реквизитов, хранящихся в символьных полях в начале маски следует указывать символ ! , например, !9999,99
- при описании числовых реквизитов, которые могут быть отрицательными, следует использовать вместо девятки 9 шаблон # в позиции возможного ввода минуса, например, ##9.99;;* означает возможен ввод отрицательных чисел, вместо 0 – пустое значение
- при описании символьных реквизитов может быть использована специальная маска, определяющая количество символов на экране и максимальное количество символов, например, (c|10|50) – реквизит занимает на экране 10 символов с максимальным вводом 50-ти символов; (c|10) – реквизит занимает на экране 10 символов с максимальным вводом 10-ти символов.
- при описании «датных» реквизитов, хранящихся в символьных или Memo-полях, маска ##/##/## или ##/##/#### (на случай, если не хватает реальных полей типа «Дата»)
- при описании логических реквизитов маска (B) – если в описании реквизита «Поле справочника (имя массива)» ArYesNo: (Да, Нет). При описании логических реквизитов, хранящихся в символьных или Memo-полях наряду с маской (B) может быть использована маска (L). По умолчанию используется массив ArPlus («+»,« »), вид внутреннего хранения зависит от массива, для ArPlus или ArYesNo информация хранится в символьном виде
- может быть использована специальная маска, в которой доступны возможности повтора символов в формате (повторяемые символы|число повторов): например, (9|3) → 999, (9|3),(9|2) → 999,99
- при описании Memo-реквизитов, занимающих на экране несколько строк, используется формат (повторяемые символы|число повторов|кол-во строк в TMemo-элементе|кол-во символов на одной строке). Кол-во строк в TMemo-элементе должно быть обязательно указано или заменено |, даже если строка одна, то есть количество разделителей | должно быть не меньше 2-х! Любые разделы в спец маске могут быть пропущены, при отсутствии любого начального раздела он должен быть заменен разделителем | , например, (||5) – 5 строк , кол-во символов в строке – умалчиваемое. Пример 2: (c|45|5|10) максимальное кол-во символов 45, 5 строк по 10 символов в строке. Если дополнительное (Memo) поле должно иметь две строки шириной по 60 символов, то маска ввода должна выглядеть как (c|120|2|60).
- в конце маски может быть указан постфикс:
~N~ - запрет разделения на триады
~T~ - разделение на триады
~W~ - полный доступ к реквизиту
~R~ - только чтение
Для описания связанных с шаблонами Word документов введены еще два типа реквизитов, принадлежность к которым определяется характерной маской. Если задать маску ввода как (L), то поле будет логическим, и содержать либо знак «+», либо пробел. Если маску поля установить равную [P], то в шаблоне Word такое поле будет иметь кнопку, нажатие на которую вызовет выполнение программы, записанной в пост блоке реквизита.
«Имя справочника» – свойство указывается в случае, если выбор значений реквизита производится из какого-либо справочника, и содержит имя этого справочника. Если значение поля выбирается из массива, то содержит значение «Массив».
«Поле справочника (имя массива)» – свойство связано с предыдущим и указывает, значение какого поля справочника становится значением реквизита. Если тип поля установлен как «выбираемый из массива», то содержит имя массива.
«Номер отображения справочника» – в случае выбора значения реквизита из справочника, это свойство может указывать номер отображения на высветку справочника.
«Фильтр связи справочников» – определяет, какой фильтр поставить на связанный справочник.
«Поля связанного справочника» – определяет, какое поле выбрать из справочника, указанного в реквизите «Фильтр связи справочников». При выборе из справочника, в таблице будут представлены только те поля этого справочника, которые перечислены в данном поле. Если у какого-либо поля есть связанный справочник, то перечисление этого поля в поле «Поля связанного справочника» приведет к отображению всех связанных полей связанного справочника.
«Номер или имя индекса связи справочника» – определяет, какой установить индекс связи из справочника, указанного в реквизите «Фильтр связи справочников».
«Изменяемый при выборе из справочника реквизит» – идентификатор реквизита, которому присваивается значение поля справочника, указанного в свойстве «Поле справочника» после выбора из справочника.
«Пре-блок» – выражение, выполняемое перед редактированием реквизита, либо условие, от выполнения которого зависит возможность редактирования реквизита.
«Пост-блок» – выражение, выполняемое после редактирования реквизита, либо условие, от выполнения которого зависит возможность присвоения реквизиту введенного значения. В связанных с Word документах данное поле может содержать подпрограмму, которая будет выполняться при нажатии кнопки около текста поля.
«Перечень зависимых реквизитов» – перечень реквизитов, чьи значения пересчитываются после изменения данного реквизита. Причем надо иметь в виду, что по умолчанию пересчет этих реквизитов вызывает отработку их зависимых реквизитов (указанных в одноименном перечне для этих реквизитов). Отработку этих вложенных зависимостей можно отменить с помощью спецсимволов:
! (воскл. знак) в начале списка зависимостей отменяет выполнение вложенных зависимостей для всех реквизитов
+ (плюс) перед реквизитом – включает его вложенные зависимости
– (минус) перед реквизитом – отключает его вложенные зависимости
«Суммирование на другой этаж» – содержит номер вышестоящего этажа, на который будет перенесена сумма, рассчитанная на текущем этаже.
«Отслеживание изменений по этажам» – содержит номер нижестоящего этажа, на котором будут сделаны изменения, после того, как будет произведено изменение реквизита на текущем этаже.
«Специальное поле» – содержит служебную информацию. Изменения в данное поле следует вносить только разработчикам комплекса. Например, в документе значение NSIT - означает отсутствие регистрации изменения данного поля, значение SPACE - означает изменение значение данного реквизита по клавише ПРОБЕЛ
«Тип» – С помощью данного поля можно задать тип компонента для ввода-вывода реквизита в представлении (окно ввода с кнопкой, выпадающий список и т.п.), а в следующем реквизите «Событие» переопределить стандартные события этого выбранного компонента. Возможные варианты компонентов: TLabel, TButton, TRadioButton, TEdit, TNewRxDbGrid, TSpeedButtonM, TRxDbComboEditDU, TRxComboEditDU, TAdsExtendedDataSet, TDBEdit, TDbText, TComboEdit, TdBComboBox, TBevel, TPanel, TMemo, TMaskEdit, TNewDbMemo, TNewDbComboBox.
«Событие» – Данное поле позволяет переопределить событие для компонента, выбранного в поле «Тип». Например, OnButtonClick=ChoiceDogv. Также, для того же компонента можно задать свойства, например DirectInput=false.
«Пор. №» – содержит порядковый номер реквизита, при отображении справочника реквизитов документов в виде таблицы, если требуется упорядочить записи. Используется для удобства редактирования и создания реквизитов документа.
«Общий» – установка этого свойства добавит реквизит в список общих реквизитов (добавляемых по CTRL+F6 как реквизиты типа «Ссылка»).
Добавление нового реквизита производится нажатием клавиши F6.
После создания списка всех реквизитов следует перейти к процессу создания Представления первичных документов.