Как задаётся атрибут детализирующего окна с перекрестной таблицей что бы при нажатие Добавить окно редактирования знало на какую запись надо ссылаться? В каждом реестре есть детализация, связанная с перекрестными таблицами. Например: инцидент и его задачи. Окно которое отображает задачи инцидента при вызове "Добавить ссылку на задачу" передает текущий id инцидента в окно выбора задачи. У меня окно детализации отображается в другом месте и при нажатие добавить->ok говорит, что поле инцидент обязательно.
Решение: заполнить ParentItemID и ParentItemFieldName у окна с перекрестной таблицей перед нажатием добавить или воспользоваться RefreshCommonDetail, если стандартный реестр.
В странице раздела при смене выделенной записи происходит RefreshDetails и, как правило, в нем RefreshCommonDetail.
RefreshCommonDetail передает название и значение основной колонки в WindowContainer детали, в атрибуты окна реестра.
Если окно реестра детали наследовано от wnd_BaseGridArea, то при инициализации в методе ReadParentAttributes будут вычитаны название и значение выделенной в разделе записи и записаны в глобальный объект окна реестра.
В wnd_BaseGridArea при нажатии на Добавить копируются атрибуты и передаются в окно карточки.
В окне карточки при нажатии на ОК, если окно унаследовано от wnd_BaseDBEdit, будет установлено значение выделенной в разделе записи в колонку датасета по названию из атрибутов.
В общем, суть в том, что достаточно указать корректное название колонки родителя в датасете детали при использовании RefreshCommonDetail.
В wnd_BaseGridArea при нажатии на Добавить копируются атрибуты и передаются в окно карточки.
В окне карточки при нажатии на ОК, если окно унаследовано от wnd_BaseDBEdit, будет установлено значение выделенной в разделе записи в колонку датасета по названию из атрибутов.
Вот я и хотел узнать какие атрибуты оно туда передает. Дефолтных их там 13, один из которых был ParentItemID. То что есть RefreshCommonDetail, которое знает о этих атрибутах я понимаю. Не работает у меня RefreshCommonDetail (пишет отсутствует объект):
SetDatasetAttributesForCall(Window.ComponentsByName('dlData').Dataset);
-не нашло или 'dlData'.