По сути не имеет значения на клиенте или на сервере.

Нравится

2 комментария
Лучший ответ

this.entitySchema.columns  это?(js код)

this.entitySchema.columns  это?(js код)

Dima Avdoshin, Как оказывается просто... Премного благодарен!

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

Здравствуйте.

Есть ли свойство в diff которое позволяет смещать Caption полей, к примеру текстовых? По умолчанию Caption стоит слева, нужно сделать сверху.

Нравится

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

А что вам мешает в первой строке вывести свои заголовки а во второе вывести значение полей без заголовка (Чтото близкое к гриду)

Григорий Чех,

ничего, интересовало есть ли такое свойство. А так обычный костыль.

Может, получится как-то на уровне страницы через CSS, но это ещё  больший костыль. В мастере раздела такого выбора нет.

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

Подскажите, не получается для showConfirmationDialog сделать LocalizableString.

Кнопка попросту не отображается, до тех пор пока в caption не введу конкретную строку.

var ButtonDoItCfg= {
"className": "Terrasoft.Button",
"returnCode": "ButtonDoIt",
"style": "green",
"caption": { "bindTo": "Resources.Strings.ButtonDoItCaption" }
};
var cfg = {
style: Terrasoft.MessageBoxStyles.BLUE
};
this.showConfirmationDialog( cs1 + " " + cs2,
function getSelectedButton(returnCode) {
if (returnCode === Terrasoft.MessageBoxButtons.YES.returnCode) {
var args = {
sysProcessName: "ButtonDoItProcessCode",
parameters: {
BPcs1: csID1,
BPcs2: csID2
}
};
ProcessModuleUtilities.executeProcess(args);
}
}, ["yes", "no", ButtonDoItCfg], cfg);

 

Нравится

1 комментарий

1) Возможно вы зыбыли в самой схеме пробросить объект Resources для зависимости

 

define("LeadPageV2", ["LeadPageV2Resources"], function(resources) {
...

т.е. в зависимостях необходимо добавить {Имя схемы}Resources

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

в Вашем коде соответственно используйте не текстовую мнемонику 

"Resources.Strings.ButtonDoItCaption"

а прямо передавайте необходимое свойство объекта.

PS: я сомневаюсь что в жизненном цикле карточки у Вас происходит изменение локализуемых строк...

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

Доброго времени суток.
При выборе значений из справочников во всех разделах к названию приписывается “undefined”, к примеру:
!
В чем может быть проблема?

Нравится

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

Здравствуйте!

Предоставьте, пожалуйста, результат выполнения запроса:

select ModuleHeader from SysModuleEntity
join SysSchema
on SysSchema.Uid = SysModuleEntity.SysEntitySchemaUId
join SysModule
on SysModule.SysModuleEntityId = SysModuleEntity.Id
where SysSchema.Name = 'Contact'
Список: Контакты

Здравствуйте!

Данное поведение актуально для версии приложения 7.9.1.
В ближайших релизах оно будет устранено, а для указанной версии будет выпущен пакет исправлений.

Эта же ошибка проявляется в 7.11.1.

ВСЕ лукапы отображаются с "undefined" http://prntscr.com/hd8fxz.

Подскажите, как бороться?

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

В клиенте поля имеют название тоже что и значение Name в админке. Например: edtName, edtContactID) и выскакивает ошибка приложения "error loading from stream". Кеш чиститься каждое утро. Заметил что ошибка появляется в карточке "Задача". Картка была переделана, появились вкладки, много новых полей.

Нравится

1 комментарий

Здравствуйте, Виталий!

По описанию трудно понять в чем суть проблемы. Рекомендую Вам не только очистить кэш приложения, но и перерегистрировать библиотеки. Также желательно активировать отладчик и посмотреть где именно происходит ошибка.

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

Перекопал все скрипты в террасофте, и Grep Search использовал, но так толком ничего и не нашел, с обычными полями понятно xxxControl.Caption = 'yyyy'; или xxxControl.DataField.Caption = 'yyyy';
А как можно обратиться подобным образом к пользовательскому полю и изменить его заголовок?

(P.S. Заменить пользовательские поля на фиксированные не предлагать, в моем случае нужно изменить именно пользовательское поле, и изменять динамически в зависимости от условий)

Нравится

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

Навскидку такой скрипт.

//пробежим по всем элементам окна
for(var i=0;i<Self.ComponentCount; ++i) {
    if (Self.Components(i).DataFieldName == 'INN') { //находим, нужное поле/поля (например по названию поля датасета, который привязан)
        Self.Components(i).Caption = 'Что-то другое';//ставим caption 
    }
}

Не проверял, не уверен, но быть может поможет.

"Сазанов Александр Владимирович" написал:

Навскидку такой скрипт.

//пробежим по всем элементам окна

for(var i=0;i<Self.ComponentCount; ++i) {

    if (Self.Components(i).DataFieldName == 'INN') { //находим, нужное поле/поля (например по названию поля датасета, который привязан)

        Self.Components(i).Caption = 'Что-то другое';//ставим caption

    }

}

Не проверял, не уверен, но быть может поможет.


Большое спасибо! Действительно работает, даже не догадался что можно просто перебрать все элементы окна)

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

Доброго времени суток.

Столкнулся с такой проблемой.
Задача: мониторить пропущенные звонки. На таймере раз в 5 минут шлю запрос на выборку пропущенных звонков и меняю caption закладке:

pgMissedCalls.BeginUpdate();
pgMissedCalls.Caption = "Пропущеные (" + Dataset.RecordsCount + ")";
pgMissedCalls.EndUpdate();

пробовал по-разному, но проблема остается.
Прорисовка caption происходит только, если мышкой по нему повозить или поставить фокус... Может есть что-то типа Repaint() как у грида или можно как-то без установки фукуса "передернуть" вкладку?

Версия 3.2.

Нравится

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

Юрий, а зачем BeginUpdate/EndUpdate делаете? В случае одной строки между ними никакого выигрыша скорее всего не получите. Э это может решить проблему.

BeginUpdate/EndUpdate - это одна из попыток заставить работать. Без этого тоже самое, что и с этим...
Проблему решил "миганием" появляющегося lable. Как ни странно, но с периодичной сменой цвета у lable все ок.

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

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

Предлагаю рассмотреть пример изменения 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.

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

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

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

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

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

Для того, чтобы изменить динамически Caption формы отчета, Вам необходимо внести изменения в обработчик события OnPreview формы отчета.

А именно,

ReportPreviewer.ParentComponent.ParentWindow.WindowCaption = "Test";

Вместо "Test" нужно внести требующееся название формы отчета.
Сохраните внесенные изменения, протестируйте работоспособность системы.

Данный функционал можно использовать, например в том случае когда возникает необходимость реализовать зависимость названия генерируемого отчета от пользователя в системе. Например, "Отчет по контрагентам Мельниковой Екатерины" или "Отчет по контрагентым Иванова Ивана"...

Желаю удачи!

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

Нравится

Поделиться

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

немного усовершенствованя утилита Калишенка Станислава
оригинал тут
Наш ответ Passolo или изменение заголовков сервисов

теперь утилита сохраняет только измененные сервисы
+
добавлено изменение кепшена окна

Нравится

Поделиться

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