Переименование полей БД

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

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

Информация о будущем имени поля помещается между открывающей скобкой "{{" и закрывающей скобкой "}}". За закрывающей скобкой может следовать произвольный текст, он игнорируется. Для массивовых полей поддерживается как переименование поля целиком, так и расщепление массива на отдельные поля. В первом случае в скобках должен быть только одно будущее имя поля.

CreateFIELD(MDocList, Cir, NUMERIC[14, 2][3], "", "", "", "Оборот", "{{Cir2}}");

Во втором случае в скобках должно присутствовать несколько будущих имен полей через запятую; их общее число не должно превышать ранг массивового поля. Некоторые элементы массива могут быть пропущены.

CreateFIELD(MDocList, Cir, NUMERIC[14, 2][3], "", "", "", "Оборот", "{{Sum, , Count}}");

Синтаксис специального комментария, содержащего будущее имя поля, контролируется в момент перестройки структуры БД утилитой Reb. В частности проверяются перечисленные ниже условия.

  1. Будущее имя поля должно быть идентификатором.

  2. Будущее имя поля не может совпадать с с именем уже существующего поля.

  3. Одинаковое будущее имя не может быть задано для двух разных полей.

  4. Количество будущих имен при расщеплении массивового поля не должно превышает размерности поля.

Будущее имя поля допустимо в следующих применениях.

  1. Всюду в программах, окнах и меню, где поле задается составным идентификатором (с префиксом имени таблицы БД).

  2. В параметре LinkPath (путь к полю) метода FORM_ZONE.LinkedFieldValue.

  3. В параметре fileField (имя поля без префикса файла) процедур CONCURRENTADD, CONCURRENTADDONLY, CONCURRENTGET, CONCURRENTRESET.

  4. В параметре compositeIdent (имя поля, переменной или константы) методов IASLEngine.Const и IASLEngine.Var сервера автоматизации ASB.

Будущие имена полей преднамеренно не поддерживаются в параметре fieldName функций DBD.FieldComment, DBD.FieldDefault, DBD.FieldDescription, DBD.FieldExist, DBD.FieldMax, DBD.FieldMin, DBD.FieldNameToId.