Это диалоги для изменения и добавления данных. Изменения могут вноситься в несколько записей одновременно.
TRootCustomEditor - базовый предок для карточек. Он содержит компонент TssPageControl для расположения контролов и панель TssTaskPanel для отображения выбранных для редактирования элементов. Здесь реализовано управление активным контролом при открытии формы, локальная проверка заполнения обязательных полей, базовый функционал для формирования вкладок (см. Расположение контролов в карточках), заполнения данных значениями по умолчанию, работы нумератора документов, проверки допустимости значений, сохранения данных и удаления из карточки.
Основные виртуальные методы:
InitAppendDataStorage - инициализация. Параметр _DS – добавляемый набор, в котором назначаются данные по умолчанию.
PrepareDataForEdit – подготовка данных для редактирования. Здесь возможно изменение данных при открытии формы для каких-либо целей.
PreparePostData – изменение данных перед сохранением.
ValidateData – проверка допустимости значений. Здесь генерируется исключение когда значения не удовлетворяют критериям проверки.
InitSubForms – здесь собрано создание встроенных форм.
– карточка с запросом к серверу. Здесь находится датасет EditDataSet, в котором задаются свойства запроса. Форма передаёт в запрос табличный параметр %Selection для фильтрации запроса выбранными для редактирования данными. В параметре по умолчанию одно ключевое поле. Эта карточка сохраняет данные на сервер.
TRootMDIClipboardEditor – здесь выделен функционал для использования карточки при вставке из буфера и плавающего справочника.
TRootMDINotesEditor – предок для корневых карточек с заметками. То есть, это карточка, которая управляет заметками в семействе данных. Здесь формируется запрос к серверу для получения данных заметок, контролы для них и сохранение на сервер.
TRootMDINotesWithSecretLevelsEditor – базовый класс для карточек объектов базы с грифом доступа.
TRootEditor – базовый предок для карточек использующих данные датасета мастер-формы (списка). Изменения сохраняются на сервер с помощью того же мастер-датасета.
TRootChildEditor – карточка для встроенных списков.
Чтобы добавить карточку для формы-списка надо пронаследовать форму от соответствующего класса и вернуть этот класс в методе GetEditorClass формы-списка, откуда она открывается. На форме-карточке нужно расположить контролы и задать свойства запроса к серверу, если это карточка со своим запросом. В свойстве Streams нужно указать ключевое поле в скобках для всех потоков, иначе изменение данных не заработает. Например:
MoveDocuments(mdoc_ID);MoveDocumentItems(mdit_ID)
Также нужно создать прототипы специфичных эдит-форматов. Подробнее об этом рассказано в главе Филд-форматы.