В общем во вкладке Файлы в Менеджере деталей есть кнопка "Добавить" с ниспадающим меню с различными пунктами "Добавить ...". По умолчанию кнопка называется "Добавить файл" и выполняет соответствующую функцию.
Вопрос в следующем:
Как изменить данное значение по умолчанию на любое другое, конкретно нужно установить "Добавить ссылку на файл".

Спасибо

______________
www.abs.com.kz
Агентство недвижимости АБС Royal Estate

Нравится

6 комментариев

Просто пропишите вызов другого метода в OnClick кнопки. Сейчас там AddFiles(). Замените на

AddFileLink();
UpdateButtons();

Лучше в сервисе окна wnd_FilesDetailGridArea заменить событие OnClick для кнопки btnAddFile на amiAddLinkOnExecute + заменить Caption кнопки.
При этом, перед запуском приложения, желательно очистить кэш.

Спасибо, получилось.
______________
www.abs.com.kz
Агентство недвижимости АБС Royal Estate

"Агутин Алексей" написал:Лучше

Простите, чем лучше? Тем что на событии OnClick кнопки btnAddFile будет висеть amiAddLinkOnExecute?
Возможно кто-то скажет что это мелочь, но как по мне это студентческий подход и сопровождение системы с такими "доработками" со временем превращается в сплошной геморрой.

Уважаемый Underscore a.k.a., если делать так как вы предлагали, то надо переписать функцию amiAddFileOnExecute. Она используется не только для кнопки, но и для пункта выпадающего меню. А вы сами понимаете, что пользователю не понравится, когда выбираешь меню Добавить файлы, а вместо добавления файлов в систему будут добавляются ссылки.

Да, был не прав, уже в коробочной версии сделано криво. Там на btnAddFile.OnClick висит amiAddFileOnExecute.

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

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

Предлагаю рассмотреть пример изменения Caption закладки "Адрес" раздела "Контрагенты" при наличии в ней записей на "Адрес*" (здесь можно придумать какие угодно варианты).
Итак, необходимо выполнить следующие действия:
1. Открываем сервис wnd_AccountsWorkspace, выделяем элемент деталей и переходим в обработчик события OnChangeActivePage.
2. В обработчике прописываем следующий код:

RefreshDetails();
 if (pcDetails.ActivePage.Name == pgAddressesDetail.Name) {   // вместо pgAddressesDetail нужно вставить название //Вашей закладки
  if (!IsDatasetEmpty(wndAddressesDetail.Window.ComponentsByName('dlData').Dataset)) { // вместо wndAddressesDetail нужно вставить название окна //закладки
   pgAddressesDetail.Caption = 'Адреса';
  } else {
   pgAddressesDetail.Caption = 'Адреса*'
  }
 }

Вышеприведенный код реализует смену Caption закладки при смене активной закладки в менеджере деталей.
3. Затем откройте закладку "Невизуальные", выделите датасет dlAccounts и перейдите в обработчик события OnDatasetAfterPositionChange.
4. Вставьте в обработчик события следующий код:
if (Dataset.Attributes('IsNew') != true) {
  RefreshDetails();
 }
 Dataset.Attributes('IsNew') = false;
 var AccountID = Dataset.Values('ID');
 var AddressDataset = Services.GetNewItemByUSI('ds_AccountAddress'); // вместо //ds_AccountsAddress нужно указать датасет соответсвующей //закладки
 ApplyDatasetFilter(AddressDataset, 'AccountID', AccountID, true);
 AddressDataset.Open();
 var AddressDatasetIsEmpty = IsDatasetEmpty(AddressDataset);
 AddressDataset.Close();
 if (!AddressDatasetIsEmpty) {
  pgAddressesDetail.Caption = 'Адреса';
 } else {
  pgAddressesDetail.Caption = 'Адреса*'
 }

Вышеприведенный код реализует смену Caption закладки при переходе по записям в основном реестре.
5. Сохраните все внесенные изменения. Перезапустите рабочее приложение Terrasoft CRM и протестируйте работоспособность системы.

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

Желаю удачи!

С уважением,
Мельникова Екатерина

Нравится

Поделиться

10 комментариев

А зачем код в OnChangeActivePage?

Код в OnChangeActivePage реализует смену Caption закладки при смене активной закладки в менеджере деталей. Конкретный пример: у пользователя активна одна запись в реестре и какая-то закладка в менеджере деталей. В этот момент другой пользователь может добавить записи на закладку, которая сейчас у первого не активна. Таким образом, при переходе на эту закладку первым пользователем - Caption меняется.

Так основной смысл был знать наличие записей до перехода на закладку. После перехода и так понятно есть они там или нет.

"Underscore a.k.a. _" написал:Так основной смысл был знать наличие записей до перехода на закладку

До перехода и будем знать, если перейдем не в Адреса, а в любую другую. В любом случае необходимы события, не вешать же для этого таймер.

"Ключник Алексей" написал:До перехода и будем знать

Я так понимаю, OnChangeActivePage вызывается непосредственно в момент перехода.

В данном случае не важно когда. Если мы переходим с детали Средства Связи на деталь Группы, то все равно увидим актуальную информацию по детали Адреса относительно наличия данных в ней.

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

Я бы убрал проверку на название активной закладки. Такой вариант представляется мне более логичным.

Я думаю логичнее убрать вообще этот усок. При переходе на запись раздела заголовок уже правильный.
Кроме того если просто убрать проверку, то датасет адресов не будет переоткрываться при переходе со Средств связи на Группы.

Вообще предложенный функционал не говорит нам однозначно есть ли на данный момент записи в детали или нет. Он говорит, что они там были когда-то (или их там не было). Получается такое полурешение.

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

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