деталь с редактируемым реестром
фильтр справочного поля
Деталь
выбор из справочного поля
Studio_Creatio
7.15
добавить
как
фильтр
фильтрация Lookup

Пробывал разные варианты и filterMethod и lookupListConfig с указанием нужного поля, но для редактируемого реестра не заводится, каким еще способом можно отфильтровать записи справочного поля в детали с редактируемым реестром при создании или же изменении записи на детали?

Нравится

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

Добрый вечер.

Опишите подробнее, что именно не получается. Приведите пример Вашего кода.

Проблема решена при помощи переопредления метода:

getGridRowViewModelConfig: function(config) {

                var result = this.callParent(arguments);

                if (result && result.rowConfig && result.rowConfig.Contact) {

                    result.rowConfig.Contact.lookupListConfig = {

                        "filters": [

                            function() {

                                var vendor = this.get("Vendor");

                                var filterGroup = Ext.create("Terrasoft.FilterGroup");

                                if (vendor && vendor.value) {

                                    filterGroup.add("Account",

                                        Terrasoft.createColumnFilterWithParameter(

                                            Terrasoft.ComparisonType.EQUAL, "[AccountInVendor:Account:Account].Vendor", vendor.value));

                                } else {

                                    filterGroup.add("Empty", Terrasoft.createColumnIsNullFilter("Id"));

                                }

                                

                

                                return filterGroup;

                            }

                        ]

                    };

                }

                return result;

            },

Показать все комментарии
выбор из справочника
выбор из справочного поля
7.14_()
sales_enterprise

Добрый день!

Возможно ли сделать поле Мобильный телефон стандартным условием поиска Контакта (при выборе из справочника) в одном разделе.

Изображение удалено.

Нравится

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

Доброе утро!

Смотрите обсуждения в этом посте и в этом.

Ещё можно попробовать добавить в карточку выбора из справочника отдельное поле, как обсуждают здесь.

Забыл упомянуть, справочник не обычный а multilookup (Выбор из контактов и аккаунтов).

Решил пойти сложным путем, добавил схему CustomLookupPage (расширил MultiLookupModule) и в нем переопределил 

onTabChanged и 
generateViewModel

 для поиска по мобильному телефону у контакта. Код: 

define("CustomLookupPage", ["LookupPage", "LookupPageViewGenerator", "LookupPageViewModelGenerator", "LookupUtilities", "css!LookupPageCSS"],
   function(LookupPage, LookupPageViewGenerator, LookupPageViewModelGenerator) {

      return Ext.define("Terrasoft.configuration.CustomLookupPage", {
         alternateClassName: "Terrasoft.CustomLookupPage",
         extend: "Terrasoft.MultiLookupModule",

         gridWrapClasses: ["multi-lookup-control"],


         onTabChanged: function(activeTab) {
            var lookupsInfo = this.get("LookupsInfo");
            Terrasoft.each(lookupsInfo, function(lookupInfo) {
               if (activeTab.get("Name") !== lookupInfo.entitySchemaName) {
                  return true;
               }
               this.lookupInfo = lookupInfo;

               this.getSchemaAndProfile(lookupInfo.lookupPostfix, function(entitySchema, profile) {
                  this.isClearGridData = true;
                  this.set("gridProfile", profile);
                  this.entitySchema = entitySchema;
                  this.initLoadedColumns();
                  var searchColumn = this.get("searchColumn");
                  if (!entitySchema.columns[searchColumn.value]) {
                     this.set("searchColumn", {
                        value: this.entitySchema.primaryDisplayColumn.name,
                        displayValue: this.entitySchema.primaryDisplayColumn.caption
                     });
                     this.set("searchData", "");
                  }
                  this.set("LookupInfo", this.lookupInfo);
                  this.load(profile, function() {
                     var lookupInfo = this.lookupInfo;
                     var entitySchema = this.entitySchema;

                     //у контакта поиск по мобильному телефону
                     if (this.entitySchema.name == "Contact") {
                        this.set("searchColumn", {
                           value: "MobilePhone",
                           displayValue: "Мобильный телефон"
                        });
                     } else {
                        this.set("searchColumn", {
                           value: entitySchema.primaryDisplayColumn.name,
                           displayValue: entitySchema.primaryDisplayColumn.caption
                        });
                     }

                     var captionLookup = this.getLookupCaption(entitySchema, lookupInfo);
                     this.set("captionLookup", captionLookup);
                     this.set("lookupSchemaName", entitySchema.name);
                     this.setSearchEditFocused();
                  }.bind(this));
               });
            }, this);
         },

         generateViewModel: function() {

            var viewModelConfig = LookupPageViewModelGenerator.generate(this.lookupInfo);

            //у контакта поиск по мобильному телефону
            viewModelConfig.values.searchColumn = {
               value: "MobilePhone",
               displayValue: "Мобильный телефон"
            };

            if (!this.lookupInfo.columnValue && this.lookupInfo.searchValue) {
               viewModelConfig.values.searchData = this.lookupInfo.searchValue;
               viewModelConfig.values.previousSearchData = this.lookupInfo.searchValue;
            }
            var viewModel = this.Ext.create("Terrasoft.BaseViewModel", viewModelConfig);
            viewModel.Ext = this.Ext;
            viewModel.sandbox = this.sandbox;
            viewModel.Terrasoft = this.Terrasoft;
            if (this.lookupInfo.updateViewModel) {
               this.lookupInfo.updateViewModel.call(viewModel);
            }
            viewModel.initCaptionLookup();
            viewModel.initHasActions();
            viewModel.initLoadedColumns();
            if (!this.Ext.isEmpty(this.lookupInfo.filterObjectPath)) {
               viewModel.updateFilterByFilterObjectPath(this.lookupInfo.filters, this.lookupInfo.filterObjectPath);
            }
            if (this.lookupInfo.hideActions) {
               viewModel.set("hasActions", false);
            }
            return viewModel;
         },
      });
   });

Отображается поле на странице следующим образом:

"SxShipper": {
   "caption": { "bindTo": "Resources.Strings.SxShipper" },
   "dataValueType": this.Terrasoft.DataValueType.LOOKUP,
   //"multiLookupColumns": ["SxShipperContact", "SxShipperAccount"],
   "lookupListConfig": function() {
      return this.getLookupListConfig();
   },
   "isRequired": true
},

...

getLookupListConfig: function() {
   var multiLookupColumns = ["Contact", "Account"];
   var multiLookupConfig = multiLookupColumns.map(function(column) {
      return {
         entitySchemaName: column,
         columnName: "SxShipper",
         multiLookupColumnName: "SxShipper" + column,
         multiSelect: false,
         hideActions: true
      };
   }, this);
   var config = {
      lookupModuleId: this.Terrasoft.generateGUID(),
      lookupPageName: "CustomLookupPage",
      multiLookupConfig: multiLookupConfig
   };

   return config;
},

Поиск по телефону рабоает хорошо, но в поле не подтягивается значение, и при выборе из справочника в поле тоже ничего не проставляется

В чем может быть дело и в каком направлении копать?

Попробуйте для начала добиться нормальной работы лукапа по обычному ФИО, а затем модифицируйте под поиск по телефону.

Показать все комментарии
выбор из справочного поля
подбор продуктов
выбор из раздела
7.13_()

Может кто-то сталкивался с функционалом выбора справочного поля из реестра с группами (то есть из раздела), на подобии подбора продуктов в заказе?

Нравится

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

Вы хотите такой же функционал повторить?

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

Зверев Александр,

спасибо! Надеюсь, эта идея перерастет в реализацию на продуктиве.

Показать все комментарии
выбор из справочника
выбор из справочного поля
Контрагент
реквизиты
Технические вопросы
7.x

Добрый день.

В карточке договора расположено поле "Реквизиты контрагента". При клике на поле появляется список, который отображает значения, которые указаны в определенном поле в платежном реквизите контрагента. Мне нужно отображать значение другого поля, указанного в платежном реквизите. Подскажите, как это сделать? Может кто-то сталкивался и реализовывал подобное.

Нравится

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

Добрый день Елена!!!

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

"Власов Михаил Викторович" написал:

Добрый день Елена!!!

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


Михаил, у меня в платежных реквизитах создано поле "Юр.лицо" (тестовое поле). Мне вот нужно, чтобы при нажатии на "Реквизиты контрагента" в договоре, отображался список именно того, что занесено в данное поле (юр.лицо).

Добрый день.

Вам необходимо изменить значение свойства "Отображаемое значение" на уровне объекта справочника.

Показать все комментарии
выбор из справочного поля
запись в таблицу
Справочное поле
Технические вопросы
7.x

Уважаемые форумчане!
На странице продажи OpportunityPageV2 создал справочное поле "Статус оплаты" со значениями "Не выставлен" и "Ожидание оплаты". В объекте Opportunity создал колонку "WaitForPay" типа дата/время.
Как мне сделать так, чтобы после сохранения продажи в WaitForPay заносилось значение даты и времени только, если выбрано значения "Ожидание оплаты"?

Заранее благодарен

Нравится

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

Добрый день!
Можно добавить проверку на моименте сохранения, каким значением заполнено справочное поле "Статус оплаты". В случае, если указано состояние "Ожидание оплаты", записывать дату в поле "WaitForPay". Для проверки соответствующих значений, лучше использовать константы, чтобы не сравнивать два значения типа GUID, потому что через некторое время Вы сами забудете, что Вы тут сравниваете и код станет не читаемым и не сопросождаемым.
Можно переопределить метод onSaved: function() {...} на странице OpportunityPageV2 и написать что-нибудь подобное:

onSaved: function() {
this.callParent(arguments);
this.checkIfWaitForPayStatus();
if (!this.isNewMode() && !this.get("IsProcessMode")) {
this.calculateCompleteness();
}
this.updateDetail({detail: "OpportunityTacticHistory"});
//... продолжение тела метода onSaved ... //
}

checkIfWaitForPayStatus: function () {
var payStatus = this.get("PayStatusLookup");
var waitForPayStatus = UserConstants.WaitForPayStatus.value;
var currentDate = this.getSysDefaultValue(Terrasoft.SystemValueType.CURRENT_DATE_TIME);
if (payStatus && payStatus.value === "waitForPayStatus") {
this.set("WaitForPay", currentDate);
}
}

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

Вы можете создать бизнес-процесс, который будет запускаться по событию изменения записи в объекте "Продажа", должна быть изменено значение в поле "Статус оплаты", фильтр "Статус оплаты" = "Ожидание оплаты".

Далее элементом "Изменить данные" Вы можете установить нужное значение в поле WaitForPay.

Спасибо, помогло

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