Определить как открыта карточка редактирования

Добрый день!

Есть деталь к разделу. В этой детали есть поле, связанное с этой деталью. В детали можно нажать кнопку изменить и откроется карточка редактирования. Можно нажать на подчеркнутое поле, ссылающееся на эту же таблицу, и откроется та же карточка редактирования, но для другой записи. Вопрос: как в скрипте этой карточки определить что карточка редактирования открыта для записи из реестра или для ссылки? Необходимо для того, чтобы некоторые поля в карточке разрешить/запретить для редактирования.

Нравится

4 комментария

При открытии по кнопке или двойному клику по строке вызывается функция EditGridAreaData в scr_BaseGridAreaUtils. Если по ссылке, то DoLookupColumnClick в scr_WindowUtils, а из неё функция ShowDatasetEditWindow.

Далее в обоих случаях вызывается непосредственно функция показа карточки ShowEditWindowEx с одним из параметров Attributes, где хранятся атрибуты окна. Можно модифицировать вышеупомянутые функции, чтобы в атрибуты добавлялся свой, разный для открытия из реестра или по ссылке. А в карточке при открытии проверять его значение.

При изменении функций стоит учесть, что они используются во всех разделах, и не поломать существующую логику.

Александр, не хотелось бы править системные функции, потому что не зная тонкостей поломать логику очень легко. Поэтому и спросил, может есть готовые атрибуты окна при разных вызовах. А возможно ли в карточке при открытии сравнить ID активной записи реестра детали и ID переданного через атрибут в окно? Возможно ли установить между ними связь?

Александр, спасибо за подсказку. Немного проанализировав код я нашел у окна, вызываемого по ссылке, атрибут LookupColumnClick, который я и буду использовать.

Действительно, спасибо за уточнение, не заметил присвоение атрибута. Но ход мысли авторов угадал...

Показать все комментарии