Как добавить новые типы документов, атрибуты, классификаторы без программирования.
Часто к документам какого-нибудь класса нужно добавить еще поле или поля. Например, к товару срочно нужно добавить новое поле - количество в коробке. Эта операция оказывает влияние на документооборот, поэтому такие ответственные действия выполняет администратор системы.
Выберите в папке Классы нужный класс (в данном случае «Товар») и вызовите свойство Создать расширение (см. рис. 1).

Рис. 1. Создание расширения
Обязательно укажите идентификатор расширения и спецификацию. Задание спецификаций описано в главе "Форматы отображения" руководства разработчика. Например, в нашем примере указывается тип значения Целое и спецификация следующего вида:
iВ коробке^post=штук^min=1
После создания расширения его значение оказывается равным нулю, пустой строке или текущей дате для всех документов, где это расширение появляется (даже если такое значение некорректно по спецификации).
При просмотре и редактировании поля расширений классов появляются в конце. Некоторые классы блокируют это, и в таких случаях их можно увидеть через свойства.
Используя идентификатор расширения, соответствующие расширения к классам можно редактировать (свойство Изменить расширение) и удалять (свойство Удалить расширение). Найти требуемый идентификатор расширения (если Вы его забыли или хотите еще раз удостовериться в правильности его использования) можно вызвав свойство класса Список расширений. Данное свойство не появляется, если класс не имеет ни одного расширения. В этом списке также можно исправить спецификацию расширения.
В поле "работа как списка" указываются три варианта работы расширений:
Несмотря на то, что система позволяет изменять характеристики существующих классов, не рекомендуется это делать без консультации с разработчиками, так как это может нарушить функционирование системы. Значительно проще выполнить следующую задачу – создать новый класс.
Пусть мы хотим создать расширение Срок хранения для класса «Продукт». Но не все Товары – продукты, хотя Продукт обладает всеми свойствами класса «Товар». Значит, класс «Продукт» есть класс производный от класса «Товар», и расширение Срок хранения относится к Продукту, а не к Товару.
Создадим класс «Продукт», производный от класса «Товар» (см. рис.2). Для этого для класса «Товар» вызовите свойство Создать производный класс. Далее обязательно укажите его короткое имя (до 10-12 латинских букв без пробелов), например, Food, название для человека (Продукт питания). Остальные параметры лучше оставить по умолчанию.

Рис. 2. Создание производного класса
Когда класс создан, для него можно создать и расширение. После создания класса любой товар можно через свойства Усложнить до продукта питания, а продукт питания Упростить до товара. Обратим внимание на существующее в системе ограничение. Если Вы создали два производных класса от одного исходного, то для них свойство Усложнить ... не появится.
Не забудьте дать возможность пользователям создавать новый класс «Продукты питания» (см. работу с папкой Может создавать). После создания класса рекомендуется выйти из системы и снова зарегистрироваться (список классов, которые можно создавать, считывается при регистрации)
Созданный класс можно удалить (свойство Удалить класс), тогда все экземпляры класса «Продукт питания» деградируют до экземпляров класса «Товары». Обратите внимание на следующую особенность. Для классов, созданных с помощью интерфейса системы, свойство удаления класса присутствует. Для классов, созданных программным путем («разработчиками»), это свойство не появляется, например, для классов Сотрудники и Пользователи.
Иногда при создании расширения требуется не значение, а поле, куда вставляется клиент, товар или иной документ системы. Для этого при создании расширения указывается поле целого типа, а в спецификации указывается формат d. Важное значение играют параметры cl, def и home (см. описание форматов в Главе 5 Настоящего руководства):
если указано def=0, поле можно оставлять незаполненным, а иначе нельзя;
с помощью параметра cl задаются id классов документов, которые могут быть выбраны. Id классов документов видны в списке классов во второй колонке. Можно указать несколько классов через запятую – cl=Good,client. Можно указать только документ класса «Товар» или «Клиент» (или производного от них) – cl=Food. Можно указать «Продукт питания» (но не любой товар!)
Параметр home задает папку (или папки через запятую), от которой происходит выбор. Параметр обязателен. Укажите UDN (Unique Document Number) нужной папки (его можно увидеть, выполнив свойство папки System info).
В качестве классификатора может указываться и картинка. Например, удобно иметь изображение товара, как его расширение. Для этого при создании расширения указывается поле целого типа, а в спецификации указывается формат b. В качестве параметров класса cl используется файл с картинкой (Классы/Файл/Файл с картинкой). В качестве файлов с картинками могут использоваться .BMP, .GIF и .JPG файлы. Файлы хранятся в базе данных в упакованном виде.
Следует обратить внимание на возможную проблему с передачей файлов с картинками большого объема по обычным телефонным или выделенным линиям с одним модемом или пулом модемом. Задержки в работе могут вызвать нарекания пользователей, хотя эти проблемы никоим образом нельзя связывать с работой самой системы.
При первом появлении картинки она масштабируется по месту, которое отводилось под картинку при отображении документа. Если вставляется новая картинка или если размер новой картинки не совпадает с размером старой, то картинка будет видна искаженно (масштабируется). При последующем отображении она примет правильный вид.
Как поступить, когда значение расширения должно выбираться из пополняемого списка ? Таких случаев много: филиалы, статьи бюджета, отделы, должности и пр. Пусть, например, мы хотим расширить товар полем цвет, которое выбирается из списка.