<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://docs.altec.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B5_altAwin%3A%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D0%BE%D0%BB%D1%8F</id>
	<title>Руководство по настройке altAwin:Дополнительные поля - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://docs.altec.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B5_altAwin%3A%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D0%BE%D0%BB%D1%8F"/>
	<link rel="alternate" type="text/html" href="http://docs.altec.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B5_altAwin:%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D0%BE%D0%BB%D1%8F&amp;action=history"/>
	<updated>2026-04-25T21:22:08Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>http://docs.altec.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B5_altAwin:%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D0%BE%D0%BB%D1%8F&amp;diff=1693&amp;oldid=prev</id>
		<title>imported&gt;Kirillche: save from wiki docs editor</title>
		<link rel="alternate" type="text/html" href="http://docs.altec.ru/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B5_altAwin:%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D0%BE%D0%BB%D1%8F&amp;diff=1693&amp;oldid=prev"/>
		<updated>2022-08-03T07:05:51Z</updated>

		<summary type="html">&lt;p&gt;save from wiki docs editor&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Справочник {{ClsMnu|Дополнительные поля|index=дополнительные поля}} содержит перечень дополнительных полей, определяемых для некоторых классов документов. Дополнительные поля могут определяться как для конечных типов документов, так и для абстрактных типов, от которых наследуются конечные. При определении дополнительных полей в базовом типе, они будут доступны также и во всех типах, которые от него наследуются. &lt;br /&gt;
&lt;br /&gt;
В дереве навигации в левой части представления отображается иерархическая система наследования типов документов, для которых возможно создание дополнительных полей.&lt;br /&gt;
&lt;br /&gt;
Возможность создания дополнительных полей как для конечных типов, так и для их родительских типов создаёт условия для потенциального конфликта при совпадениии идентификаторов дополнительных полей родительского и конечного типов. Если это происходит, приоритет отдаётся дополнительному полю, определённому для родительского типа.&lt;br /&gt;
&lt;br /&gt;
В таблице представления отображаются записи дополнительных полей, соответствующие выбранному типу документа в дереве. Порядок следования записей дополнительных полей в таблице учитывается при построении форм, содержащих эти доп. поля документов, а также при упорядочивании колонок таблиц их представлений.&lt;br /&gt;
&lt;br /&gt;
{{Tblcap|1=Панель инструментов представления {{ClsMnu|Дополнительные поля}} }}&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;wikitable&amp;quot; 10:25:65-long&lt;br /&gt;
!Кнопка!!Команда!!Действие&lt;br /&gt;
|-&lt;br /&gt;
|{{Icon|AWButtonMoveUp.png}}|| Вверх || Перемещение выбранного элемента вверх в таблице &lt;br /&gt;
|-&lt;br /&gt;
|{{Icon|AWButtonMoveDown.png}}|| Вниз || Перемещение выбранного элемента вниз в таблице&lt;br /&gt;
|-&lt;br /&gt;
| || Исправление значений || Исправление значений перечислений&lt;br /&gt;
|-&lt;br /&gt;
| || Обновление заголовков || Обновление заголовков документов&lt;br /&gt;
|-&lt;br /&gt;
| || Перезагрузать || Перезагрузка кеша дополнительных полей (см. ниже)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Для создания нового элемента справочника выберете требуемый тип документа в дереве навигации и воспользуйтесь командой {{ClsMnu|Создать}} панели инструментов или контекстного меню. В отобразившемся окне {{ClsMnu|Дополнительное поле}} на вкладке {{ClsMnu|Общие данные}} задайте требуемые параметры создаваемого дополнительного поля:&lt;br /&gt;
&lt;br /&gt;
{{DlgField|Идентификатор|идентификатор поля, обязательное значение;}}&lt;br /&gt;
{{DlgField|Наименование|обязательное поле, определяющее название создаваемого поля, отражающее его смысл; наименование отображается на форме документов и в таблице представления;}}&lt;br /&gt;
{{DlgField|Класс документа|автоматически заполняемое поле в зависимости от выбранного раздела в дереве навигации; класс документа определяет, для каких документов создаётся дополнительное поле;}}&lt;br /&gt;
{{DlgField|Тип поля|обязательное поле, определяющее тип создаваемого поля; может принимать одно из следующих значений:}}&lt;br /&gt;
{{DlgField1|Строка}}&lt;br /&gt;
{{DlgField1|Целое число}}&lt;br /&gt;
{{DlgField1|Вещественное число}}&lt;br /&gt;
{{DlgField1|Булево| флаговый переключатель; в поле {{ClsMnu|метка}} задаётся текстовая метка для флага. }}&lt;br /&gt;
{{DlgField1|Дата}}&lt;br /&gt;
{{DlgField1|Дата/время}}&lt;br /&gt;
{{DlgField1|Документ|произвольный документ altAwin, тип документа выбирается из числа типов, зарегистрированных в приложении.}}&lt;br /&gt;
{{DlgField1|Текст}}&lt;br /&gt;
{{DlgField1|Перечисление|значение доп. поля может принимать один из вариантов, указанных на вкладке {{ClsMnu|Значения}}; в формах документов поля данного типа отображаются в виде выпадающего списка.}}&lt;br /&gt;
{{DlgField1|Множество|значение доп. поля может принимать один или несколько из вариантов, указанных на вкладке {{ClsMnu|Значения}}; в формах документов поля данного типа отображаются в виде группы чекбоксов.}}&lt;br /&gt;
{{DlgField|Вычисляемое: Значение вычисляемо|флаговый переключатель, определяющий, что значение дополнительного поля недоступно для модификации посредством пользовательского ввода и вычисляется при помощи скрипта вычисления; вычисляемые поля существуют в режиме «только для чтения» и не предназначены для непосредственной модификации;}}&lt;br /&gt;
{{DlgField|Обязательный: Значение обязательно для заполнения|флаговый переключатель, определяющий обязательность заполнения этого поля при создании соответствующего документа;}}&lt;br /&gt;
{{DlgField|Дублируется: Значение будет скопировано при дублировании|переключатель, определяющий поведение значения поля при дублировании содержащих его документов. Если флаг {{ClsMnu|Дублируется}} снят, при дублировании документа с данным полем, его значение будет инициализировано значением по умолчанию.}}&lt;br /&gt;
{{DlgField|Значение по умолчанию|значене дополнительного поля, устанавливаемое автоматически в момент создания содержащего его документа}};&lt;br /&gt;
{{DlgField|Скрипт проверки|скрипт, срабатывающий перед применением нового значения к данному дополнительному полю при изменении содержащего его документа}};&lt;br /&gt;
{{DlgField|Скрипт изменения|скрипт, срабатывающий после применением нового значения к данному дополнительному полю при изменении содержащего его документа}};&lt;br /&gt;
{{DlgField|Видимость|переключатель, определяющий, где следует показывать поле: в форме редактирования документа ({{ClsMnu|Форма}}), в таблице документов соответствующего представления ({{ClsMnu|Таблица}}); используется для организации фильтрации и сортировки записей в таблице;}}&lt;br /&gt;
{{DlgField|Экспорт: Разрешён экспорт дилеру|флаговый переключатель, определяющий, будет ли данное дополнительное поле передаваться в удалённый офис и дилерам с настройкам;}}&lt;br /&gt;
{{DlgField|Комментарий|текстовый комментарий}}&lt;br /&gt;
{{DlgField|Скрипт вычисления|скрипт для вычисления значения вычисляемого поля, срабатывающий при изменении полей содержащего его документа; поле доступно при установке флага {{ClsMnu|Значение вычисляемо}}}};&lt;br /&gt;
&lt;br /&gt;
{{Picture|newadditionalfield.png|title=Окно документа {{ClsMnu|Дополнительное поле}}|num=4.174|id=910}}&lt;br /&gt;
&lt;br /&gt;
Для дополнительных полей существует возможность управления разграничением доступа для различных пользователей и подразделений. Разграничение доступа к дополнительным полям реализуется путём заполнения списков, расположенных на вкладках {{ClsMnu|Доступ для чтения}} и {{ClsMnu|Доступ для записи}}. При определении параметров доступа к дополнительным полям применяются следующие правила:&lt;br /&gt;
* Поле доступно для записи пользователю, если оба списка пусты или пользователь (его подразделение) добавлен в список {{ClsMnu|Доступ для записи}}.&lt;br /&gt;
* Поле доступно для чтения пользователю, если оба списка пусты или пользователь (его подразделение) определён в одном из них.&lt;br /&gt;
* Поле не доступно, если пользователь (его подразделение) не определён ни в одном из списков, а хотя бы один список не пуст.&lt;br /&gt;
&lt;br /&gt;
Определённые дополнительные поля, доступные для текущего пользователя, отображаются на главной закладке формы документа ниже всех прочих стандартных полей.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Обратите внимание, что оптимальное количество дополнительных полей для одного документа не должно превышать 20-25. Определение более 30 дополнительных полей может резко замедлить работу программы и существенно увеличить риск потери или повреждения данных.}}&lt;br /&gt;
&lt;br /&gt;
=== Перезагрузка дополнительных полей ===&lt;br /&gt;
Для обновления кеша дополнительных полей после внесения изменений следует воспользоваться кнопкой {{ClsMnu|Перезагрузить}}, расположенной на панели инструментов представления. Перезагрузка дополнительных полей предназначена для применения изменений без необходимости перезапуска приложения.&lt;br /&gt;
&lt;br /&gt;
=== Доступ к значениям дополнительных полей в скриптах ===&lt;br /&gt;
Для многих документов имеется возможность доступа к дополнительным полям из скриптов. Например, создавая доп. поле с идентификатором {{ClsKbrd|Test}} к документу типа {{ifn|IdocExecutor}}, доступ к нему в скрипте обеспечивается через свойство с таким же именем:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pascal&amp;quot;&amp;gt;var&lt;br /&gt;
  D: IdocExecutor;&lt;br /&gt;
begin&lt;br /&gt;
  D := OpenDocument(IdocExecutor, 1);&lt;br /&gt;
  D.Test := &amp;quot;123&amp;quot; ;&lt;br /&gt;
  D.PropertyByName['Test'] := &amp;quot;321&amp;quot;;&lt;br /&gt;
end;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения дополнительных полей типа {{ClsMnu|Множество}} хранятся в виде текстовой строки, представленной элементами множества, разделёнными запятой.&lt;br /&gt;
&lt;br /&gt;
Для разделения значений дополнительного поля типа {{ClsMnu|Множество}} можно поступать следующим образом:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pascal&amp;quot;&amp;gt;var&lt;br /&gt;
  Strings: TStrings;&lt;br /&gt;
begin&lt;br /&gt;
  Strings := TStringList.Create;&lt;br /&gt;
  try&lt;br /&gt;
    Strings.Delimiter := ',';&lt;br /&gt;
    Strings.DelimitedText := AValue; //значение доп. поля&lt;br /&gt;
 &lt;br /&gt;
    for I := 0 to Strings.Count — 1 do&lt;br /&gt;
    begin&lt;br /&gt;
      // тут чего-то делаем&lt;br /&gt;
    end;&lt;br /&gt;
  finally&lt;br /&gt;
    Strings.Free;&lt;br /&gt;
  end;&lt;br /&gt;
end;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Проверка значений при изменении ===&lt;br /&gt;
{{ClsMnu|Скрипт проверки}} срабатывает до применения нового значения, в контексте доступны переменные:&lt;br /&gt;
{{DlgField|''Instance''|экземпляр сущности, в которой происходят изменения, должна находиться в режиме «только для чтения»}};&lt;br /&gt;
{{DlgField|''OldValue''|предыдущее значение}};&lt;br /&gt;
{{DlgField|''NewValue''|применяемое значение}};&lt;br /&gt;
{{DlgField|''Result''|результирующее значение, которое на старте равно ''NewValue''}}.&lt;br /&gt;
&lt;br /&gt;
В результате отработки скрипта в поле запишется значение из переменной {{ClsKbrd|Result}}.&lt;br /&gt;
&lt;br /&gt;
{{ClsMnu|Скрипт изменения}} срабатывает после применения нового значения, в контексте доступны переменные:&lt;br /&gt;
{{DlgField|''Instance''|экземпляр сущности, в которой происходят изменения}};&lt;br /&gt;
{{DlgField|''OldValue''|предыдущее значение}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Использование дополнительных полей в калькуляции ===&lt;br /&gt;
&amp;lt;span class=&amp;quot;Index&amp;quot;&amp;gt;Калькуляция: дополнительные поля&amp;lt;/span&amp;gt;Существует возможность использования дополнительных полей заказчика и продавца в калькуляции трудоёмкостей и стоимостей. Эти возможности реализуются посредством следующих функций:&lt;br /&gt;
* &amp;lt;source lang = &amp;quot;pascal&amp;quot;&amp;gt;GetCustomerParameter(Name: string): Variant&amp;lt;/source&amp;gt; — возвращает дополнительное поле заказчика. Тип возвращаемого значения зависит от типа поля. Для перечислимых типов возвращается строка.&lt;br /&gt;
* &amp;lt;source lang = &amp;quot;pascal&amp;quot;&amp;gt;GetSellerParameter(Name: string): Variant&amp;lt;/source&amp;gt; — возвращает дополнительное поле продавца. Тип возвращаемого значения зависит от типа поля. Для перечислимых типов возвращается строка.&lt;br /&gt;
* &amp;lt;source lang = &amp;quot;pascal&amp;quot;&amp;gt;GetCustomerParameterUnit(Name: string): string&amp;lt;/source&amp;gt; — возвращает имя единицы измерения для дополнительного поля заказчика.&lt;br /&gt;
* &amp;lt;source lang = &amp;quot;pascal&amp;quot;&amp;gt;GetSellerParameterUnit(Name: string): string&amp;lt;/source&amp;gt; — возвращает имя единицы измерения для дополнительного поля продавца.&lt;br /&gt;
&lt;br /&gt;
Например, у заказчика создано доп. поле типа &amp;quot;цвет&amp;quot; с идентификатором &amp;quot;Color&amp;quot;, тогда в калькуляции можно использовать, такую конструкцию:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pascal&amp;quot;&amp;gt;if TypeID(GetCustomerParameter('Color')) &amp;lt;&amp;gt; 'Null' then&lt;br /&gt;
  Trace(GetCustomerParameter('Color').Title);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Навигация|Пользовательские действия|Раздел «Расширения»|Пользовательские документы}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>imported&gt;Kirillche</name></author>
	</entry>
</feed>