Добрый день, 

 

Подскажите, есть ли в Creatio контрол для загрузки изображения в колонку типа Image? 

 

Есть реализации, которые позволяют загружать изображение в колонку с типом Image link, когда картинка в итоге загружается в таблицу SysImage, но это решение не подходит. 

Нравится

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

Добрый день, можете более детально описать, что вам необходимо сделать?

У меня есть карточка раздела, в которой пользователю нужно загрузить 3 картинки. Раздел привязан к сущности, у которой есть соответственно 3 колонки с типом Image. Эти изображения потом обрабатываются в событийном процессе сущности и их удобно хранить именно в самой сущности, а не в SysImage. Поэтому хотелось бы узнать существует ли способ загрузить изображение с помощью какого либо клиентского контрола прямо в сущность.

 

 

Рекомендую ознакомиться со статьей https://academy.terrasoft.ua/docs/developer/elements_and_components/bas…. Возможно она вам поможет

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

Коллеги, прошу вас совета:

Идея такая: в карточке контрагента вводить поле "основной контакт" без открытия карточки создания контакта. При большом колличестве холодных звонков удобнее ввести только имя в карточку контрагента, а остальное заполнить позже.

Делаю я это так - в карточке контрагента обрабатываю сообщение OnKeyUp, пока код клавиши не равен Enter (13), и тогда, если нажат "Enter", из содержимого в поле создаю новый контакт, добавляю его в базу и подвязываю его к контрагенту.

Проблема: При нажатии клавиши "Enter" открывается окно поиска контактов и обработчик не запускается. Возможно ли перехватить это событие и открывать справочник только по определенному условию?

Нравится

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

Здравствуйте Дмитрий,
Можете, пожалуйста уточнить пару моментов:
1) Вы поменяли контрол для поля PrimaryContactID с LookUpDataControl на TextDataControl в карточке контрагента?
2) Уточните версию Terrasoft пожалуйста.

1)Прошу прощения. Действительно на PrimaryContactID установлен контрол LookUpDataControl.
Я не обратил на это внимание.
2) Версия 3.3.2.251

Именно для LookUpDataControl нужна такая функциональность, при которой он, если поле пустое, работал, как TextDataControl (при нажатии Enter выполнял скрипт), если же нет, то как LookUpDataControl (открывал справочник)

Дмитрий, скорее всего, запретить показ выбора в LookUpDataControl, предлагаю вам использовать TextDataControl, и рядом с ним разместить Button, для вызова окна выбора

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

Коллеги, многие из вас знают о моем увлечении пользовательскими интерфейсами.

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

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

Давайте рассмотрим на примере.
Вот пример доработанной карточки Инцидента:
Карточка Инцидента

Как видим на скриншоте, одна из вкладок карточки и несколько полей ввода выделены для привлечения внимания пользователя.
Как это реализовано:

/* Сделаем поле "Признаки (Симптомы)" cо светло-зеленым фоном (свойство Color) и темно-зеленым цветом (свойство TextColor) текста */
  edtSynopsis.Color = clMoneyGreen;
  edtSynopsis.TextColor = clGreen;

/* Светло-голубой фон для поля "Контакт" */
  edtContact.Color = clSkyBlue;

/* Выделим поле "Продажа" */
  edtOpportunityID.Color = clYellow;
  edtOpportunityID.TextColor = clTeal;

/* Выделим вкладку "Разрешение и оценка" ActiveCaptionColor - цвет текста вкладки, когда она активна;
ActiveFont - шрифт вкладки, когда она активна */

  pgResolution.ActiveCaptionColor = clYellow;
  pgResolution.ActiveFont.Bold = true; 

/* HotCaptionColor - цвет текста вкладки, при наведении указателя мыши;
HotFont - шрифт вкладки, при наведении указателя мыши */
 
  pgResolution.HotCaptionColor = clWhite;      
  pgResolution.HotFont.Bold = true;
  pgResolution.HotFont.Underline = true;       

/* RegularCaptionColor - цвет текста вкладки в обычном режиме - она не активная в данный момент;
HotFont - шрифт вкладки в обычном режиме */

  pgResolution.RegularCaptionColor = clBlue;
  pgResolution.RegularFont.Bold = true;

Свойства по изменению фона поля ввода и цвета текста в поле ввода применимы ко всем элементам управления, которые содержат поле текстового ввода (Edit, ComboBox, EnumControl, Memo, LookupControl и др., а также соответствующие им Data-контролы).

Теперь вы ознакомлены с новыми возможностями контролов и вам решать как их можно использовать.

Приведу несколько возможных применений:
1. Выделение важных элементов карточки
2. Контроль ввода значений в обязательные поля. В примере ниже пользователю будет сразу видно какие из обязательных полей не заполнены (например выделить их красным) а какие заполнены неправильно (темно-оранжевым)
Выделение ошибок заполнения контролов

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

Думаю многим будут полезны новые возможности.
Приятной разработки! :wink:

Нравится

Поделиться

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

Один вопрос - когда же выйдет версия 3.4? :smile:

"Валерий Андрусик" написал:Один вопрос - когда же выйдет версия 3.4?

Вопрос Валерия весьма актуален.

Коллеги, версия 3.4 выйдет в 1-й половине июля

А можно поменять цвет поля и шрифта(серый) для поля, недоступного для редактирования?

Для поля, у которого в датасете установлено свойство Read Only можно переопределить цвет шрифта (начиная с версии 3.4.1 в окне свойств компонента окна, в версиях ниже - скриптом). Для контрола, у которого установлено свойство IsEnabled = false - переопределить цвет нет возможности.

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

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

function CreateServiceInDynamic(ServiceCode, TemplateName, USI) {
    var Win = Services.CreateItem(ServiceCode);
    Win.TemplateWindowUSI = TemplateName;
    Win.USI = USI;
    var Code = ExtractUSICodeEx(USI);
    Services.SaveItem(Win,1);        
    var Win2 = Services.GetNewItemByUSI(Code);
    Win2.IsDesigning = false;
    Win2.Show();    
}

function Main() {
    var ServiceCode = 'Window';
    var TemplateName = 'wnd_BaseDBEdit';
    var USI =
'Common\\Workspaces\\Custom\\Structure\\Details\\TestDir\\wnd_Test';
    CreateServiceInDynamic(ServiceCode, TemplateName, USI); }

Для создания сервиса окна Вам необходимо использовать функцию Services.CreateItem и для сохранения данного сервиса Services.SaveItem.
Необходимо указать сервис родительского окна и USI.

Вы можете создать свой контрол, например Lookup, указав для него уникальное имя в рамках данной карточки (окна):

var Component = Window.CreateComponent('LookupControl', 'edtTestLookupControl');

Вы можете создать FrameGroup-и, а далее в них создавать и размещать контролы:

scr_SurveyUtils: function CreateFrame.
     var Component = Window.CreateComponent(ComponentType,
          FrameName + '_1');
     Frame.Add(Component);
     Component.AlignHorizontal = alhClient;

Нравится

Поделиться

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

Спасибо за пример!

--
www.it-sfera.com.ua
Terrasoft Solution Partner

Тогда уже не CreateServiceInDynamic, а CreateWindowInDynamicи параметр ServiceCode убрать. Потому что если туда передать не 'WIndow',  то получим свал.
Вообще если хочется разобраться с созданием окон на лету, можно посмотреть создание окна Интервью.

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