Студия/Редактор типов данных

From SunFlurry wiki
Jump to: navigation, search

Редактор типов данных используется в Студии для задания типа данных реквизитам объектов, полям или столбцам таблиц в редакторе форм и в других местах проекта, где требуется указание на тип данных. На рис 1. показана обычная конфигурация редактора при изменении типа данных визуального поля для редактирования. Редактор оперирует следующими данными:


  • Любое значение -- задает тип данных любого из объектов базы данных (простые типы данных "число", "строка", "дата и время" не включаются в понятие любое значение).
  • Число -- задает тип данных число. Объекты, привязанные к базе данных, имеющие этот тип данных, не могут также иметь другие типы данных (т.е., реквизит или ссылка на реквизит не может иметь тип данных одновременно число и строка или число и какой-либо справочник). Если объект не привязан к базе данных (к примеру, поле редактирования, не привязанное к реквизиту объекта), он может совмещать числовой тип данных с другими типами, однако, в этом случае, до начала редактирования, визуальный клиент предложит оператору выбрать тип данных.
    • Числа имеют дополнительные свойства правой панели редактора (закладка "число", см. рис. 1). Для чисел может быть задано ограничение по количеству знаков ("длина"), по количеству знаком после десятичной точки ("точность"), если число должно быть целым, это количество устанавливается как ноль. Можно указать, что число может иметь произвольную запись (к примеру, 1.23E+34), в этом случае, для числа будет использована максимально возможная точность представления. Также имеется возможность запретить отрицательные числа.
    • При редактировании типа данных полей или столбцов таблиц в редакторе форм, для удобства разработчика при выборе этого типа данных, поле или столбец автоматически изменяют выравнивание на правое (числа прижимаются к правому краю поля или ячейки) и в связанные элементы поля или ячейки добавляется кнопка калькулятора, чтобы пользователь смог провести простые вычисления при вводе числа. Кроме того, автоматически изменяется маска редактирования (если это единственный выбранный тип), с тем чтобы упростить работу разработчику, создающему форму.
  • Дата, время -- задает тип данных дата и время. Дата и время это не отдельные типы, дата всегда содержит время и хранится в системе в виде длинного числа, при этом, время может игнорироваться и не выводится на экран, если это необходимо. Объекты, привязанные к базе данных, имеющие этот тип данных, не могут также иметь другие типы данных (т.е., реквизит или ссылка на реквизит не может иметь тип данных одновременно дата и строка или дата и какой-либо справочник). Если объект не привязан к базе данных (к примеру, поле редактирования, не привязанное к реквизиту объекта), он может совмещать тип данных дата и время с другими типами, однако, в этом случае, до начала редактирования, визуальный клиент предложит оператору выбрать тип данных.
    • Дата и время имеет дополнительные свойства правой панели редактора (закладка "дата"). Данные свойства влияют на вывод даты и времени на экран в визуальном клиенте. Свойства делятся на две независимых установки:
      • Тип даты -- Задает способ вывода даты: короткая (XX.XX.XX, по умолчанию), длинная (XX.XX.XXXX) и не выводить (в случае, когда нужно вывести только время)
      • Тип времени -- Задает способ вывода времени совместно с датой: короткое (XX:XX), длинное (XX:XX:XX) и не выводить (в случае, когда нужно вывести только дату -- это режим по умолчанию).
    • При редактировании типа данных полей или столбцов таблиц в редакторе форм, для удобства разработчика при выборе этого типа данных, поле или столбец автоматически изменяют выравнивание на левое и в связанные элементы поля или ячейки добавляется кнопка календаря, чтобы пользователь выбрать дату визуальным способом в календаре. Кроме того, автоматически изменяется маска редактирования (если это единственный выбранный тип) учитывая способ отображения даты и времени, описанный в предыдущем пункте, с тем чтобы упростить работу разработчику, создающему форму.
  • Строка -- задает тип данных строки. Объекты, привязанные к базе данных, имеющие этот тип данных, не могут также иметь другие типы данных (т.е., реквизит или ссылка на реквизит не может иметь тип данных одновременно строка и число или строка и какой-либо справочник). Если объект не привязан к базе данных (к примеру, поле редактирования, не привязанное к реквизиту объекта), он может совмещать тип данных строка с другими типами, однако, в этом случае, до начала редактирования, визуальный клиент предложит оператору выбрать тип данных. При редактировании в визуальном клиенте, строки всегда имеют формат UTF-16 (unicode), однако, при сохранении в базу данных, не все реквизиты с типов "строка" могу содержать международные символы (это зависит от установок реквизита), поэтому введенные строки могут быть переведены в ANSI при сохранении в базу данных.
    • Строка имеет дополнительное свойство правой панели редактора (закладка "строка"). Данное свойство задает максимальную длину строки при вводе. При редактировании реквизитов базы данных это свойство очень важно, так как слишком короткая строка не позволит ввести нужные данные, тогда как слишком длинная строка будет увеличивать объем базы данных за счет расхода места, выделенного под нее. Существует также опция строк неограниченной длины (требуется указать ноль), такие строки для реквизитом базы данных могут накладывать некоторые несущественные ограничения при запросах к базе данных. При редактировании типа данных визуальных полей или ячеек, свойство длины строки менее важно, но также удобно в использовании.
    • При редактировании типа данных полей или столбцов таблиц в редакторе форм, для удобства разработчика при выборе этого типа данных, поле или столбец автоматически изменяют выравнивание на левое и в связанные элементы поля или ячейки может добавляться кнопка выбора для длинных строк, включающих переносы. Кроме того, автоматически удаляется маска редактирования.
  • Ссылки на справочники -- Папка содержит доступные типы базы данных, связанные со справочниками. При редактировании типа данных реквизита объекта базы данных, система позволяет устанавливать галки выбора на нескольких объектах (тип, который содержит заданные типы данных). При редактировании типов данных визуальных элементов формы, необходимо сначала установить галку "Разрешить использование нескольких типов данных" для множественного выбора. В общем случае, содержимое папки следующее:
    • Ссылка на любой справочник -- задает тип данных "произвольный справочник". Для реквизита это означает, что он может содержать элемент любого справочника. Для поля редактирования или ячейки визуальной таблицы система сначала попросит оператора выбрать тип справочника, а потом уже элемент справочника.
    • Папки справочников -- структура папок справочников представлена таким же образом, как она задана в проекте, для удобства разработчика
    • Справочники -- позволяет выбирать необходимый справочник из структуры справочников и папок.
    • Журналы справочников -- ветка доступна при выборе типа данных табличных элементов (см. ниже Диалог выбора типа данных), когда в проекте создан по крайней мере один журнал справочников.
      • Папки журналов справочников -- структура папок журналов справочников представлена таким же образом, как она задана в проекте, для удобства разработчика
      • Журналы справочников -- позволяет выбирать необходимый журнал справочников из структуры журналов и папок.
    • При выборе объекта при редактировании типа данных полей или столбцов таблиц в редакторе форм, для удобства разработчика, поле или столбец автоматически изменяют выравнивание на левое и в связанные элементы поля или ячейки будет добавлена кнопка выбора и кнопка очистки поля редактирования. Кроме того, автоматически удаляется маска редактирования.
  • Ссылки на документы -- Папка содержит доступные типы базы данных, связанные со документами. При редактировании типа данных реквизита объекта базы данных, система позволяет устанавливать галки выбора на нескольких объектах (тип, который содержит заданные типы данных). При редактировании типов данных визуальных элементов формы, необходимо сначала установить галку "Разрешить использование нескольких типов данных" для множественного выбора. В общем случае, содержимое папки следующее:
    • Ссылка на любой документ -- задает тип данных "произвольный документ". Для реквизита это означает, что он может содержать любой тип документа. Для поля редактирования или ячейки визуальной таблицы система сначала попросит оператора выбрать тип документа, а потом уже сам документ.
    • Папки документов -- структура папок документов представлена таким же образом, как она задана в проекте, для удобства разработчика
    • Документы -- позволяет выбирать необходимый документ из структуры документов и папок.
    • Журналы документов -- ветка доступна при выборе типа данных табличных элементов (см. ниже Диалог выбора типа данных), когда в проекте создан по крайней мере один журнал документов.
      • Папки журналов документов -- структура папок журналов документов представлена таким же образом, как она задана в проекте, для удобства разработчика
      • Журналы документов -- позволяет выбирать необходимый журнал документов из структуры журналов и папок.
    • При выборе объекта при редактировании типа данных полей или столбцов таблиц в редакторе форм, для удобства разработчика, поле или столбец автоматически изменяют выравнивание на левое и в связанные элементы поля или ячейки будет добавлена кнопка выбора и кнопка очистки поля редактирования. Кроме того, автоматически удаляется маска редактирования.
  • Ссылки на перечисления -- Папка содержит доступные типы базы данных, связанные со перечислениями, она не будет доступа при выборе типа данных (источника данных) табличного визуального элемента и дерева. При редактировании типа данных реквизита объекта базы данных, система позволяет устанавливать галки выбора на нескольких объектах (тип, который содержит заданные типы данных). При редактировании типов данных визуальных элементов формы, необходимо сначала установить галку "Разрешить использование нескольких типов данных" для множественного выбора. В общем случае, содержимое папки следующее:
    • Ссылка на любое перечисление -- задает тип данных "произвольное перечисление". Для реквизита это означает, что он может содержать элемент любого перечисления. Для поля редактирования или ячейки визуальной таблицы система сначала попросит оператора выбрать тип перечисления, а потом уже элемент выбранного перечисления.
    • Папки перечислений -- структура папок перечислений представлена таким же образом, как она задана в проекте, для удобства разработчика
    • Перечисления -- позволяет выбирать необходимое перечисление из структуры перечислений и папок.
    • При выборе объекта при редактировании типа данных полей или столбцов таблиц в редакторе форм, для удобства разработчика, поле или столбец автоматически изменяют выравнивание на левое и в связанные элементы поля или ячейки будет добавлена кнопка выбора и кнопка очистки поля редактирования. Кроме того, автоматически удаляется маска редактирования.
  • Ветка реквизитов и строчных частей текущего объекта -- Папка доступна при редактировании типа данных визуального элемента, находящегося на форме, которая принадлежит визуальному объекту. К примеру, при редактировании форм, принадлежащих справочнику, при выборе типа данных поля редактирования, можно привязать это поле редактирования к реквизиту текущего справочника. В этом случае, при изменении поля при редактировании, система автоматически изменит реквизит редактируемого объекта. Пример такой ветки показан на рис 1. Все использованные (привязанные) к другим визуальным элементам формы реквизиты имеют серый цвет, чтобы облегчить работу разработчика. Привязывать несколько реквизитов к одному элементу запрещено, галка "Разрешить использование нескольких типов данных" при этом работать не будет. При задании типа данных (источника данных) табличных элементов или деревьев, вместо реквизитов объекта данная ветка будет содержать строчные части объекта (если они заданы). При редактировании типа данных столбцов таблицы, если таблица привязана к определенному объекту, данная ветка будет содержать доступные реквизиты объекта для представления в столбцах ячеек. Если же таблица привязана к строчной части объекта, данный диалог позволит выбирать реквизиты этой строчной части.
    • При выборе реквизита объекта при редактировании типа данных полей или столбцов таблиц в редакторе форм, для удобства разработчика, поле или столбец автоматически изменяют выравнивание на обычно используемое для типа данных этого реквизита и в связанные элементы поля или ячейки может добавляться кнопка выбора (обычная, калькулятор или календарь в зависимости от типа данных реквизита) и кнопка очистки поля редактирования. Кроме того, автоматически изменяется маска редактирования в соответствии с новым типом поля. Для табличных элементов будут заполнены столбцы типа Code и Name с автоматической привязкой к соответствующим реквизитам. Если таблица уже содержала столбцы с определенными типами данных, Студия попытается подобрать реквизиты по их наименованиям или/и типам данных.

Дополнительные установки редактора типов данных

Дополнительные установки редактора типов данных содержатся на закладке общее и доступны только при выборе типов данных визуальных элементов форм, для реквизитов объектов базы данных дополнительные установки доступны не будут. Редактор имеет следующие дополнительные установки:

  • Разрешить использование нескольких типов данных -- установка позволяет выбрать несколько типов данных одновременно. К примеру, для поля редактирования можно выбрать два или более разных справочника или такие несовместимые типы данных, как строка и число. При работе тип данных поля может быть зафиксирован программно, если он не зафиксирован, программа предложит пользователю сначала выбрать тип данных из списка и уже после этого разрешит редактирование поля. Таким же образом программа действует и для неопределенных типов данных "любое значение", "ссылка на любой справочник", "ссылка на любой документ" или "ссылка на любое перечисление".
  • Элемент содержит списки значений (более одного значения) -- Установка доступна только для полей редактирования и позволяет закрепить за полем редактирования список или списки значений, каждое из которых будет иметь выбранный для этого поля тип. Это удобно, к примеру, при выборе фильтров в отчетах, когда в фильтр входит множество значений. Редактор позволяет выбрать количество списков, закрепленных за полем, обычно используется один или два списка. Первый список используется как фильтр включения, если задано более одного списка, второй список используется, как фильтр исключения (подразумевает отбор всех элементов, не входящих в список). Все списки хранятся в основном списке, который уже в свою очередь привязан к полю редактирования. К примеру, для получения доступа к списку по его номеру, необходимо использовать фрагмент кода, подобный следующему Form.<Имя поля>.Value.Get(<Номер списка>). Третий и последующий списки можно использовать для хранения дополнительных данных, они будут проигнорированы. Система автоматически подбирает заголовок поля, оперирующего списками по следующему алгоритму:
    • Если первые два списка пустые (либо один список, если он единственный), поле имеет пустой заголовок
    • Если первый список содержит одно значение, а второй пустой или не существует, заголовок списка совпадает с представлением этого значения (к примеру, элемент справочника или цифра).
    • Если второй список содержит одно значение, а первый пустой, заголовок списка создается в виде "Кроме: <представление значения>".
    • Если первый список содержит более одного значения, а второй пустой или не существует, заголовок списка создается в виде "Выбрано: <количество значений в первом списке>".
    • Если второй список содержит более одного значения, а первый пустой, заголовок списка создается в виде "Кроме: <количество значений во втором списке>".
    • Если и первый и второй списки содержат значения, заголовок списка создается в виде "Выбрано: <количество значений в первом списке>, кроме: <количество значений во втором списке>".
  • Количество списков --- Установка доступна только для полей редактирования со списками и задает количество списков, закрепленных за полем. См. предыдущий пункт для объяснения.
  • Не использовать стандартный заголовок для элемента со списками --- Установка доступна только для полей редактирования со списками и запрещает системе менять заголовок поля. Программа сможет сама использовать такой заголовок поля редактирования, который необходим для данной задачи. Для изменения заголовка поля можно использовать атрибут Caption: Form.<Имя поля>.Caption:=<Требуемый заголовок>.

Автоматические изменения других параметров при изменении типов данных

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

  • При изменении типа данных реквизита журналов, система может удалить связи этого реквизита с реквизитами объектов, входящих в журнал, если эти реквизиты не совместимы по типу данных.
  • При изменении типа данных реквизита, который использовался, как реквизит даты в нумераторе, зависящем от даты, на тип данных не соответствующий дате, система выдаст предупреждение о том, что текущая настройка нумератора неверна.
  • При изменении типа данных реквизита, который имел галку IsParentLink, на тип данных не соответствующий документу, система автоматически снимет указанную галку.
  • При изменении типа данных реквизита, который имел галку IsWorkingDateLinked, на тип данных не соответствующий дате, система автоматически снимет указанную галку.
  • При изменении типа данных реквизита, который имел галку IsMainFilterProp, на тип данных не соответствующий строке, система автоматически снимет указанную галку.
  • При изменении типа данных реквизита, который имел галку IsSortProp, на тип данных не являющийся простым (не ссылка на другой объект базы данных), система автоматически снимет указанную галку.
  • При изменении типа данных визуальных объектов поле и поле со списком, автоматически меняется их маска, выравнивание и набор связанных элементов в соответствии с выбранным типов данных.
  • При изменении типа данных визуальных объектов таблица, Студия может автоматически привязать существующие столбцы таблицы к реквизитам объекта, выбранного, как тип данных таблицы по их наименованиям и заменить весь набор связанных элементов на стандартные, либо заполнить таблицу столбцами по умолчанию по желанию разработчика. Также автоматически могут изменяться начальные фильтры и такие установки как IsEditable, IsDefaultControl, IsDisableNoParent и пр.
  • При изменении типа данных визуальных объектов дерево автоматически меняются начальные фильтры и набор связанных элементов.
  • При изменении типа данных столбца таблицы автоматически обновляется максимальная ширина столбца, меняется его выравнивание, изменяется набор его связанных элементов и маска редактирования.

Диалог выбора типа данных

Простой формой редактора является диалог выбора типа данных, он позволяет выбрать один или более тип данных из набора типов, но не имеет возможности изменить какие-либо дополнительные свойства данных. Общий вид диалога показан на рис 2. Диалог такого же вида используется в визуальном клиенте при вызове функции SelectDataType. В Студии диалог позволяет выбрать тип данных таблиц, списков или деревьев. В отличии от общего диалога-редактора, пункт "любое значение" данного диалога изменен на "Таблица или список не связаны с базой данных", пункт используется, чтобы удалить привязку к базе данных для табличных элементов.