/** * Описание одной колонки списка SharePoint — единый источник правды. * Из этих описаний провижинер создаёт колонки в списке (см. provisioning/), * а позже те же описания будут питать чтение/запись данных формы. * * ВАЖНО про имена: internalName — латиница без пробелов, ≤32 символов * (иначе SharePoint закодирует пробелы в "_x0020_" и обращения к полю сломаются). * title — отображаемое имя, может быть на русском и с пробелами. */ export type SpFieldType = | 'Text' // однострочный текст | 'Note' // многострочный текст | 'Number' // число | 'Choice' // выбор из вариантов | 'DateTime' // дата/время | 'Boolean' // да/нет | 'User' // пользователь | 'Lookup'; // подстановка (связь с другим списком) export interface IColumnDef { /** Внутреннее имя в SharePoint: латиница, без пробелов, ≤32 символов. */ internalName: string; /** Отображаемое имя колонки (можно рус., с пробелами). */ title: string; /** Тип колонки. */ type: SpFieldType; /** Обязательная ли колонка. По умолчанию — нет. */ required?: boolean; /** Варианты для type === 'Choice'. */ choices?: string[]; /** Знаков после запятой для type === 'Number'. По умолчанию — авто. */ decimals?: number; /** Для type === 'DateTime': только дата, без времени. */ dateOnly?: boolean; /** Заголовок списка-источника для type === 'Lookup'. */ lookupList?: string; /** Какое поле источника показывать в подстановке. По умолчанию — 'Title'. */ lookupShowField?: string; /** Для type === 'User': кого можно выбирать. По умолчанию — как в SharePoint. */ userSelectionMode?: 'PeopleOnly' | 'PeopleAndGroups'; /** Для type === 'User': разрешить выбор нескольких (создаётся колонка UserMulti). */ allowMultiple?: boolean; } /** Манифест провижининга формы: список данных + его колонки. */ export interface IFormProvisioning { /** Отображаемое имя списка данных формы. */ dataListTitle: string; /** Переименовать стандартную колонку Title (если задано). */ titleColumnName?: string; /** Колонки списка данных. */ columns: IColumnDef[]; }