Руководство по настройке altAwin:Дополнительные поля

Материал из AltecDocs
Перейти к:навигация, поиск

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

В дереве навигации в левой части представления отображается иерархическая система наследования типов документов, для которых возможно создание дополнительных полей.

Возможность создания дополнительных полей как для конечных типов, так и для их родительских типов создаёт условия для потенциального конфликта при совпадениии идентификаторов дополнительных полей родительского и конечного типов. Если это происходит, приоритет отдаётся дополнительному полю, определённому для родительского типа.

В таблице представления отображаются записи дополнительных полей, соответствующие выбранному типу документа в дереве. Порядок следования записей дополнительных полей в таблице учитывается при построении форм, содержащих эти доп. поля документов, а также при упорядочивании колонок таблиц их представлений.

Таблица 0.0. Панель инструментов представления Дополнительные поля

Кнопка Команда Действие
AWButtonMoveUp.png Вверх Перемещение выбранного элемента вверх в таблице
AWButtonMoveDown.png Вниз Перемещение выбранного элемента вниз в таблице
Исправление значений Исправление значений перечислений
Обновление заголовков Обновление заголовков документов
Перезагрузать Перезагрузка кеша дополнительных полей (см. ниже)

Для создания нового элемента справочника выберете требуемый тип документа в дереве навигации и воспользуйтесь командой Создать панели инструментов или контекстного меню. В отобразившемся окне Дополнительное поле на вкладке Общие данные задайте требуемые параметры создаваемого дополнительного поля:

  • Идентификатор — идентификатор поля, обязательное значение;
  • Наименование — обязательное поле, определяющее название создаваемого поля, отражающее его смысл; наименование отображается на форме документов и в таблице представления;
  • Класс документа — автоматически заполняемое поле в зависимости от выбранного раздела в дереве навигации; класс документа определяет, для каких документов создаётся дополнительное поле;
  • Тип поля — обязательное поле, определяющее тип создаваемого поля; может принимать одно из следующих значений:
    • Строка
    • Целое число
    • Вещественное число
    • Булево — флаговый переключатель; в поле метка задаётся текстовая метка для флага.
    • Дата
    • Дата/время
    • Документ — произвольный документ altAwin, тип документа выбирается из числа типов, зарегистрированных в приложении.
    • Текст
    • Перечисление — значение доп. поля может принимать один из вариантов, указанных на вкладке Значения; в формах документов поля данного типа отображаются в виде выпадающего списка.
    • Множество — значение доп. поля может принимать один или несколько из вариантов, указанных на вкладке Значения; в формах документов поля данного типа отображаются в виде группы чекбоксов.
  • Вычисляемое: Значение вычисляемо — флаговый переключатель, определяющий, что значение дополнительного поля недоступно для модификации посредством пользовательского ввода и вычисляется при помощи скрипта вычисления; вычисляемые поля существуют в режиме «только для чтения» и не предназначены для непосредственной модификации;
  • Обязательный: Значение обязательно для заполнения — флаговый переключатель, определяющий обязательность заполнения этого поля при создании соответствующего документа;
  • Дублируется: Значение будет скопировано при дублировании — переключатель, определяющий поведение значения поля при дублировании содержащих его документов. Если флаг Дублируется снят, при дублировании документа с данным полем, его значение будет инициализировано значением по умолчанию.
  • Значение по умолчанию — значене дополнительного поля, устанавливаемое автоматически в момент создания содержащего его документа;
  • Скрипт проверки — скрипт, срабатывающий перед применением нового значения к данному дополнительному полю при изменении содержащего его документа;
  • Скрипт изменения — скрипт, срабатывающий после применением нового значения к данному дополнительному полю при изменении содержащего его документа;
  • Видимость — переключатель, определяющий, где следует показывать поле: в форме редактирования документа (Форма), в таблице документов соответствующего представления (Таблица); используется для организации фильтрации и сортировки записей в таблице;
  • Экспорт: Разрешён экспорт дилеру — флаговый переключатель, определяющий, будет ли данное дополнительное поле передаваться в удалённый офис и дилерам с настройкам;
  • Комментарий — текстовый комментарий
  • Скрипт вычисления — скрипт для вычисления значения вычисляемого поля, срабатывающий при изменении полей содержащего его документа; поле доступно при установке флага Значение вычисляемо;
Рис. 4.174. Окно документа Дополнительное поле


Для дополнительных полей существует возможность управления разграничением доступа для различных пользователей и подразделений. Разграничение доступа к дополнительным полям реализуется путём заполнения списков, расположенных на вкладках Доступ для чтения и Доступ для записи. При определении параметров доступа к дополнительным полям применяются следующие правила:

  • Поле доступно для записи пользователю, если оба списка пусты или пользователь (его подразделение) добавлен в список Доступ для записи.
  • Поле доступно для чтения пользователю, если оба списка пусты или пользователь (его подразделение) определён в одном из них.
  • Поле не доступно, если пользователь (его подразделение) не определён ни в одном из списков, а хотя бы один список не пуст.

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

IconWarning.png Обратите внимание, что оптимальное количество дополнительных полей для одного документа не должно превышать 20-25. Определение более 30 дополнительных полей может резко замедлить работу программы и существенно увеличить риск потери или повреждения данных.

Перезагрузка дополнительных полей

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

Доступ к значениям дополнительных полей в скриптах

Для многих документов имеется возможность доступа к дополнительным полям из скриптов. Например, создавая доп. поле с идентификатором Test к документу типа IdocExecutor, доступ к нему в скрипте обеспечивается через свойство с таким же именем:

var
  D: IdocExecutor;
begin
  D := OpenDocument(IdocExecutor, 1);
  D.Test := "123" ;
  D.PropertyByName['Test'] := "321";
end;

Значения дополнительных полей типа Множество хранятся в виде текстовой строки, представленной элементами множества, разделёнными запятой.

Для разделения значений дополнительного поля типа Множество можно поступать следующим образом:

var
  Strings: TStrings;
begin
  Strings := TStringList.Create;
  try
    Strings.Delimiter := ',';
    Strings.DelimitedText := AValue; //значение доп. поля
 
    for I := 0 to Strings.Count  1 do
    begin
      // тут чего-то делаем
    end;
  finally
    Strings.Free;
  end;
end;

Проверка значений при изменении

Скрипт проверки срабатывает до применения нового значения, в контексте доступны переменные:

  • Instance — экземпляр сущности, в которой происходят изменения, должна находиться в режиме «только для чтения»;
  • OldValue — предыдущее значение;
  • NewValue — применяемое значение;
  • Result — результирующее значение, которое на старте равно NewValue.

В результате отработки скрипта в поле запишется значение из переменной Result.

Скрипт изменения срабатывает после применения нового значения, в контексте доступны переменные:

  • Instance — экземпляр сущности, в которой происходят изменения;
  • OldValue — предыдущее значение.


Использование дополнительных полей в калькуляции

Калькуляция: дополнительные поляСуществует возможность использования дополнительных полей заказчика и продавца в калькуляции трудоёмкостей и стоимостей. Эти возможности реализуются посредством следующих функций:

  • GetCustomerParameter(Name: string): Variant
    
     — возвращает дополнительное поле заказчика. Тип возвращаемого значения зависит от типа поля. Для перечислимых типов возвращается строка.
  • GetSellerParameter(Name: string): Variant
    
     — возвращает дополнительное поле продавца. Тип возвращаемого значения зависит от типа поля. Для перечислимых типов возвращается строка.
  • GetCustomerParameterUnit(Name: string): string
    
     — возвращает имя единицы измерения для дополнительного поля заказчика.
  • GetSellerParameterUnit(Name: string): string
    
     — возвращает имя единицы измерения для дополнительного поля продавца.

Например, у заказчика создано доп. поле типа "цвет" с идентификатором "Color", тогда в калькуляции можно использовать, такую конструкцию:

if TypeID(GetCustomerParameter('Color')) <> 'Null' then
  Trace(GetCustomerParameter('Color').Title);