Глава 8. ТИПЫ ДОКУМЕНТОВ
Форматирование наименований документов
Для отображения документов разных типов в общих списках, например
, в «Проводнике по документам» используются форматированные наименования
, которые хранятся в таблице DOC_JOURNAL. Форматированные
наименования для каждого типа документов создаются при помощи хранимой процедуры
с именем <имя_главной_таблицы>_GET
_NAMES. Способ форматирования наименований для каждого типа документов
разработчик конфигурации задает в простом интерфейсе. При этом он
может указать, какие поля документа следует использовать для сборки
наименования и снабдить их префиксами и суффиксами. Наименование документа
ограничено длиной 128 символов. Способы форматирования наименований хранятся в
таблице DOC_NAME_DEF.
Пример способа форматирования:
Форматирование наименований, тип документа «Продажа товара»
Позиция |
Префикс |
Поле |
Суффикс |
1 |
|
Покупатель |
, |
2 |
Продажи, |
№ счета-фактуры |
|
3 |
( |
Металл |
) |
В любой момент можно изменить способ форматирования наименований документов.
Программа сама внесет необходимые изменения в текст хранимой процедуры в
соответствии с новыми правилами. Хранимая процедура, ответственная за
форматирование наименований документа создается вместе с главной таблицей документа автоматически
и имеет название <имя_главной_таблицы>_
GET_NAMES.
Пример процедуры форматирования:
CREATE PROCEDURE SALE_GET_NAMES(ID INTEGER, DIR_ID INTEGER)
RETURNS(DOC_ID INTEGER, DOC_NAME VARCHAR(128) CHARACTER SET WIN1251)
AS
DECLARE VARIABLE NAME VARCHAR(94);
DECLARE VARIABLE V1 VARCHAR(64);
DECLARE VARIABLE V2 VARCHAR(12);
BEGIN
/*Текст данной процедуры создан системой Allegro автоматически.*/
/*Не меняйте этот текст. Ваши изменения могут быть утеряны*/
FOR SELECT
SALE.ID,
O1.SHORT_NAME,
SALE.FACTURE_NO
FROM
SALE,
OBJECT_NAMES O1
WHERE
((:ID IS NULL) OR (SALE.ID = :ID)) AND
((:DIR_ID IS NULL) OR (SALE.DIR_ID = :DIR_ID)) AND
O1.OBJECT_ID = SALE.CUSTOMER
INTO :DOC_ID,:V1,:V2
DO
BEGIN
IF (V1 IS NULL) THEN V1 = '';
IF (V2 IS NULL) THEN V2 = '';
NAME = :V1||', '||'Продажи, СФ № '||:V2;
DOC_NAME = NAME;
SUSPEND;
END
END
Возвращаемый процедурой набор зависит от входных параметров, переданных в
процедуру при вызове:
Входные параметры |
Возвращаемый набор |
ID |
DIR_ID |
DOC_NAME |
NULL |
NULL |
Все наименования документов этого типа |
NULL |
13 |
Все наименования документов в папке DIR_ID=13 |
11820 |
NULL |
Наименование одного документа с ID=11820 |
Например, мы можем запросить наименования всех документов «Продажи
товара», которые находятся в папке DIR_ID =
13:
select * from sale_get_names(NULL, 13);
|