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

Глава 7. СПРАВОЧНИКИ

Форматирование наименований в справочниках, системная таблица OBJECT_NAMES

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

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

Системная таблица OBJECT_NAMES


ID INTEGER CLASS_ID INTEGER SHORT_NAME VARCHAR(64) FULL_NAME VARCHAR(256)
25 1000 Кожа Кожа
27 1000 Пластик Пластик
28 1000 Резина Резина
38 1001 Сапоги Сапоги
39 1001 Кроссовки Кроссовки
…. …. …. ….
118 1005 M3 x 20 (латунь) Винты M3 x 20 (латунь)
300 1006 Скоба “такая-то” Скоба “такая-то” (сталь)
487 1001 Сапоги муж. 43 (черн.) Сапоги муж. 43 (черн., кожа)

Поддержка наименований происходит автоматически при помощи взаимосвязанной системы автоматически создаваемых хранимых процедур, срабатывающих при добавлении, удалении или изменении любого объекта. Способ форматирования наименований для каждого справочника пользователь задает в простом интерфейсе. При этом он может указать , какие поля справочника следует использовать для сборки каждого наименования и снабдить их префиксами и суффиксами. Сокращенное наименование ( short_name) существует по умолчанию и ограничено длиной в 64 символа. В конфигурацию можно добавлять новые виды наименований, например, в данном случае добавлено полное наименование (full_name) длиной 256 символов. Способы форматирования наименований хранятся в таблице CLASS_NAME_DEF .

Пример способа форматирования:

Форматирование кратких наименований, справочник «Винты»


Позиция Префикс Поле Суффикс
1 Винты Диаметр X
2   Размер  
3 ( Металл )

В любой момент можно изменить способ форматирования наименований объектов. Программа сама внесет необходимые изменения в тексты хранимых процедур и переформатирует все объекты в соответствии с новыми правилами. Хранимая процедура, ответственная за форматирование наименований справочника создается вместе со справочником и имеет название <имя_таблицы_справочника >_SET_NAMES.

Пример текста такой процедуры:

CREATE PROCEDURE CUSTOMER_SET_NAMES(OBJECT_ID INTEGER)
AS
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE ID2 INTEGER;
DECLARE VARIABLE NAME2 VARCHAR(4096);
DECLARE VARIABLE SHORT_NAME VARCHAR(4096);
DECLARE VARIABLE V1 VARCHAR(35);
DECLARE VARIABLE V2 VARCHAR(50);
BEGIN
/*Текст данной процедуры создан системой Allegro автоматически.*/
/*Не меняйте этот текст. Ваши изменения могут быть утеряны*/
  FOR SELECT
    CUSTOMER.ID,
    CUSTOMER.NAME1,
    CUSTOMER.NAME
  FROM
    OBJECT_NAMES O, CUSTOMER
  WHERE
    (O.OBJECT_ID = CUSTOMER.ID) AND (O.CLASS_ID = 2) AND
    ((:OBJECT_ID IS NULL) OR (CUSTOMER.ID = :OBJECT_ID))
  INTO :ID,:V1,:V2
  DO
  IF (ID <> 0) THEN
  BEGIN
    IF (V1 IS NULL) THEN V1 = '';
    IF (V2 IS NULL) THEN V2 = '';
    NAME2 = :V1;
    SHORT_NAME = :V2;
    IF (strlen(NAME2)>64) THEN NAME2 = substr(NAME2, 1, 64);
    IF (strlen(SHORT_NAME)>64) THEN SHORT_NAME = substr(SHORT_NAME, 1, 64);
    UPDATE OBJECT_NAMES
    SET
        NAME2 = :NAME2,
        SHORT_NAME = :SHORT_NAME
    WHERE OBJECT_ID = :ID;
  END
END

Аналогичное форматирование имеют наименования документов (см. далее), с той лишь разницей, что наименования объектов справочной системы хранятся в системной таблице OBJECT_NAMES, а наименования документов хранятся в системной таблице DOC_JOURNAL.



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