На главную   На главную   Форумы Новости Документация Скачать Купить  
Регистрация  
Система Allegro
Oб Allegro Характеристики Пример конфигурации Документация База ошибок Развитие
Версия для печати К списку книг Вернуться к оглавлению Предыдущий параграф Следующий параграф
Поиск по книге

Глава 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);


Система Allegro. Руководство разработчика Наверх