Изменение настроек колонок
Не рекомендуется использовать описанные ниже обходные решения. При неправильном применении, они могут нарушить работу бизнес-правил и стать причиной ошибок в работе системы.
Изменение типа колонки
По умолчанию, тип колонки можно указать только при ее создании. После того как колонка создана, поле Тип колонки доступно только для чтения.
Тем не менее существует обходное решение для изменения типа созданной колонки. Исходный тип колонки и новый тип не всегда совместимы без использования скрипта.
Без использования скрипта могут быть преобразованы следующие типы колонок:
- String → URL
- String → Text
- Text → Translated text
- String → Translated text
- Date/Time → Date/Time Specific
- Field Name → Reference
- Reference → List
- Reference → Field Name
- Reference → Choice
Используйте следующие примеры скриптов для распространенных преобразований типов колонок:
const record = new SimpleRecord('table_name');
record.addQuery('date_field', 'isnotempty');
record.query();
record.silentMode(true);
while (record.next()) {
record.datetime_field = record.date_field + ' 00:00:00';
record.update();
}
const record = new SimpleRecord('table_name');
record.addQuery('date_field', 'isnotempty');
record.query();
record.silentMode(true);
while (record.next()) {
record.datetime_field = record.date_field + ' 00:00:00';
record.update();
}
Чтобы изменить тип колонки для большого количества записей, используйте быстрый импорт JSON-файла. Например, если нужно изменить тип колонки Дата начала [start_date] с Date на Date/Time, выполните следующие действия:
- Экспортируйте записи из таблицы, содержащей колонку start_date, в формате JSON.
- Создайте копию полученного JSON-файла.
- В копии файла, измените строчные значения свойства start_date. Новые значения должны включать временную часть { 00:00:00}. Для этого рекомендуется использовать функцию множественных курсоров, если она доступна в используемом текстовом редакторе.
- Сохраните изменения в JSON-файле.
- Удалите колонку start_date из таблицы.
- Создайте новую колонку start_date типа Date/Time.
- Выполните быстрый импорт JSON-файла, созданного после шагов 1–4.
Изменения наименования колонки
По умолчанию, наименование колонки можно указать только при ее создании. После создания колонки, поле Наименование колонки доступно только для чтения. Это предотвращает конфликты в работе бизнес-логики, заложенной в скриптах и полях типа Conditions, которые ссылаются на атрибут Наименование колонки (column_name).
Тем не менее, существует обходное решение для изменения наименования колонки, после того, как она создана.
Данное обходное решение применимо только к колонкам неверсионируемых таблиц (атрибут Контроль версий имеет значение Нет).
Для начала найдите все записи бизнес-логики, использующие атрибут column_name колонки, которую вы хотите переименовать. Для этого выполните следующие действия:
- Перейдите в Конфигурация → Записи VCS.
- Укажите следующие условия в конструкторе условий:
- Актуально равно Да
- Копия записи (JSON) содержит column_name (замените column_name наименованием колонки, которую вам нужно переименовать).
Затем измените все вхождения текущего наименования колонки во всех записях, указанных в поле Запись документа найденных записей VCS.
Крайне важно найти и заменить все записи бизнес-логики, использующие текущее наименование колонки перед тем, как переходить к следующему шагу.
После этого, создайте новую колонку с нужным именем и импортируйте в нее содержимое переименовываемой колонки. Например, если нужно изменить наименование колонки Дата начала с [start_date] на [start_date_time], выполните следующие действия:
- Экспортируйте записи из таблицы, содержащей колонку start_date, в формате JSON.
- Создайте копию полученного JSON-файла.
- В копии файла, найдите все вхождения значения start_date и замените их на start_date_time. Для этого рекомендуется использовать функцию множественных курсоров, если она доступна в используемом текстовом редакторе.
- Сохраните изменения в JSON-файле.
- Удалите колонку start_date из таблицы.
- Создайте новую колонку start_date_time типа Date/Time.
- Выполните быстрый импорт JSON-файла, созданного после шагов 1–4.