Доброго времени суток.
Вопрос у меня такой.
Как сделать добавление записи в DataGrid с несколькими полями, одна из которых берется из справочника.
Справочник уже создан.
DataGrid с 2 записями 1 название, 2 тип(берется из справочника).
DataGrid тоже создан. Под ним 2-а соответствующих поля для ввода. При изменении поля название, автоматически добавляется запись.
Но при попытке выбрать тип из выпадающего списка происходит зависание системы.
Дебагер ругается на Nulll в поле типа.
В чем может быть причина?
Нравится
Илья, если я правильно поняла, при заполнении карточки редактирования (создание записи), а именно при попытке выбора значения из поля [Тип] приложение зависает.
Вам необходимо проверить:
- Корректно ли указали свойства поля в датасет (поле для поиска и поле для отображения)
- Заполнено ли первичное поле для отображения в таблице и датасете справочника:
Спасибо, уже разобрался. :smile:
Есть другой вопрос касательно
RefreshCommonDetail(BaseWorkspace, wndSolutionsDetail, 'IncidentID', 'IncidentID', '', '', '', AlwaysRefresh);
Можете в общем виде описать принцип обновления детали, и атрибуты вызываемой функции RefreshCommonDetail();
Функция RefreshCommonDetail предназначена для обновления детали раздела.
Параметры функции:
BaseWorkspace – рабочее пространство раздела, деталь которого будет обновляться.
WindowContainer – окно детали (например, wndAnniversariesDetail).
ParentItemFieldName – название поля, являющего родительским со стороны раздела по отношению к детали (например, в случае детали «Знаменательные события» раздела [Контрагенты] – это поле 'AccountID').
ChildFilterName – название фильтра, по которому будут фильтроваться записи детали.
DatasetUSI – USI датасета детали.
EditWindowUSI – USI карточки редактирования детали.
AdditionalAttributes – дополнительные атрибуты.
AlwaysRefresh – признак, указывающий на то, всегда ли будет обновляться деталь (независимо от внесения изменений в родительскую запись).
SimpleRefresh – признак, указывающий на то, что нужно выполнять простое обновление (посредством закрытия-открытия датасета детали).
ParentItemID – идентификатор родительской записи.
DoNotDisableAllFilters – признак, указывающий следует или нет отключать все фильтры запроса детали перед фильтрацией по ParentItemID.
DatasetAdditionalAttributes – дополнительные атрибуты датасета детали.
Принцип работы функции:
1. Выполняется проверка проинициализирована ли деталь. Если деталь не была проинициализирована, тогда в атрибуты окна детали записываются значения: USI карточки редактирования детали (EditWindowUSI), USI датасета детали (DatasetUSI), название поля, являющего родительским со стороны раздела по отношению к детали (ParentItemFieldName), дополнительные атрибуты.
2. Считывается значение идентификатора родительской записи (ParentID). Если рабочее пространства (BaseWorkspace) определено, ParentID устанавливается равным идентификатору выделенной записи реестра, в обратном случае – берется из параметра функции.
3. Если ParentID не изменялся (не менялся фокус записи в реестре) и параметр AlwaysRefresh равен false, происходит выход из функции без обновления датасета детали. В обратном случае считывается датасет детали и выполняется его обновление.
В стандартном случае при вызове функции достаточно определить 4 параметра, например:
RefreshCommonDetail(BaseWorkspace, wndProjectDetail, 'ClientID', 'ClientID');
Пример вызова функции с 6 определенными параметрами:
RefreshCommonDetail(BaseWorkspace, wndAnniversariesDetail,
'AccountID', 'AccountID', 'ds_AccountAnniversary', 'wnd_AnniversaryEdit');