Если не использую фильтр, то все работает, но без фильтрации

Если использую, то null на выходе

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

var esq = Ext.create("Terrasoft.EntitySchemaQuery", {

        rootSchemaName: "GeneralForm"

    });

    

    esq.addColumn("Id");

    esq.addColumn("UsrCode");

    esq.addColumn("UsrInfoId.Name");

    esq.filters.addItem(Terrasoft.createColumnFilterWithParameter(

    Terrasoft.ComparisonType.EQUAL, "UsrInfoId.Name", "Инфо"));

    

    var rowsCount = 0;

    var rowsCount1 = "";

    esq.getEntityCollection(function(result) {

        if (result.success) {

            

            

            result.collection.each(function (item) {

                rowsCount = rowsCount + 1;

                rowsCount1 += item.get("UsrCode") + "#" + item.get("UsrInfoId.Name") + 

                    "(" + rowsCount + ")" + "\n";

            });

            this.set("UsrCount", rowsCount1);

        }

    }, this);

Нравится

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

Посмотрите профилировщиком какой sql запрос отправляется в БД, это поможет определить проблему

Посмотрите профилировщиком какой sql запрос отправляется в БД, это поможет определить проблему

Ошибка в том, что Вы неправильно построили связи - нужно писать UsrInfo.Name, а у Вас UsrInfoId.Name.

Вот корректный код:

var esq = Ext.create("Terrasoft.EntitySchemaQuery", {

        rootSchemaName: "GeneralForm"

    });

    

    esq.addColumn("Id");

    esq.addColumn("UsrCode");

    esq.addColumn("UsrInfo.Name");

    esq.filters.addItem(Terrasoft.createColumnFilterWithParameter(

    Terrasoft.ComparisonType.EQUAL, "UsrInfo.Name", "Инфо"));

    

    var rowsCount = 0;

    var rowsCount1 = "";

    esq.getEntityCollection(function(result) {

        if (result.success) {

            

            

            result.collection.each(function (item) {

                rowsCount = rowsCount + 1;

                rowsCount1 += item.get("UsrCode") + "#" + item.get("UsrInfo.Name") + 

                    "(" + rowsCount + ")" + "\n";

            });

            this.set("UsrCount", rowsCount1);

        }

    }, this);

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

Алла Савельева,

пытаюсь реализовать запрос:



select 

    q1.UsrCode

    , q2.Name

from 

    GeneralForm q1 

    join UsrInfoList q2 

on 

    q1.UsrInfoId = q2.Id

При моей текущей реализации этот кусок работает:

esq.addColumn("UsrInfoId.Name");

Проблема с фильтром. 

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

Ок. Разбираюсь с тем как его использовать.

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

а как корректно этот механизм объявить в коде?

добавил:

//перед esq

var performanceManagerLabel = "";

performanceManager.start(performanceManagerLabel + "_Init");

//сразу после фильтрации

performanceManager.stop(performanceManagerLabel + "_Init");

пишет:

'performanceManager' is not defined

 

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

Нашел. 

performanceManager указать надо было.

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

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

Алла Савельева,

Верно понимаю, что для такого запроса реализация ниже верна?

На практике без фильтра логика выдает правильное число строк, а с фильтром null.

select 

    q1.Id

    q1.UsrCode

    , q2.Name

from 

    GeneralForm q1 

    join UsrInfoList q2 

on 

    q1.UsrInfoId = q2.Id



var esq = Ext.create("Terrasoft.EntitySchemaQuery", {

    rootSchemaName: "GeneralForm"

esq.addColumn("Id");

esq.addColumn("UsrCode");

esq.addColumn("UsrInfoId.Name");

esq.filters.addItem(Terrasoft.createColumnFilterWithParameter(

Terrasoft.ComparisonType.EQUAL, "UsrInfoId.Name", "Инфо"));

Посмотрите в профайлере, что за SQL-запрос идёт в базу при выполнении последнего кода и потом запустите в Management Studio  его отдельно, чтобы выяснить, почему у него пустой результат.

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

система в yазвании таблицы, которую пробую подцепить добавляет в начале и конце названия еще символы

SysUsrInfoListLcz. А нужна таблица была UsrInfoList. Это фича такая?

Хотя нет. Не в ней дело. Тут все хорошо.

SysUsrInfoListLcz — это автоматически сгенерированная таблица переводов названий для UsrInfoList.

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

В академии есть ряд разделов по данной теме. Например, ссылка:

https://academy.terrasoft.ua/documents/technic-sdk/7-13/clientmessagebr…

Если прошел последовательно по пунктам, но механизм не отработал как ожидалось, то где можно концы искать?

Нравится

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

Выполните отладку клиентского кода. Как это сделать смотрите в статье на Академии.

Выполните отладку клиентского кода. Как это сделать смотрите в статье на Академии.

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

Добрый день!

Пробую реализовывать запрос к данных через ESQ таким образом:

var esq = Ext.create("Terrasoft.EntitySchemaQuery", {

                    rootSchemaName: "UsrTbl1"

                });

                esq.addColumn("Id");

                esq.addColumn("UsrPar1");esq.addColumn("UsrInfoId");

                esq.addColumn("UsrValueList.Name");//вот с такими строками уже начинается проблема

esq.filters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "UsrValueList.Name", "значение1"));//и с такими фильтрами

 

Если нужно получить значение колонок с таблицы - rootSchemaName, то не вопрос.

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

GUID  видимо со String плохо понимают друг друга. Если ли примеры их нормального совместного использования в рамках ESQ?

Можно ли как-то понять причины неработоспособности прямых ссылок? Или хотя бы понять как с GUID быть? Даже если я значение GUID пытаюсь вставлять так, то не работает:

esq.filters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "UsrInfoId", "337ED96B-B658-48B0-BBB6-7FACF918C735"));

Нравится

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

Eсли нужно получить справочную колонку, то её название нужно указывать без приставки "Id", как в схеме таблицы:

esq.addColumn("UsrInfo")

Аналогично и с фильтрами:

esq.filters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "UsrInfo", "337ED96B-B658-48B0-BBB6-7FACF918C735"));

Но обратите внимание, что, если у Вас фильтр построен по обратным связям, то можно писать 2 способами.

1. Через Id и тогда в качестве значения фильтра указываем Id:

var shipment = this.get("BTShipment");

sampleESQ.filters.addItem(sampleESQ.createColumnFilterWithParameter(

                    this.Terrasoft.ComparisonType.EQUAL, "[BTSampInShipment:BTSampleID].BTShipment.Id", shipment.value));

2. Через справочное поле и тогда в качестве значения указывать значение справочного поля:

var shipment = this.get("BTShipment");

sampleESQ.filters.addItem(sampleESQ.createColumnFilterWithParameter(

                    this.Terrasoft.ComparisonType.EQUAL, "[BTSampInShipment:BTSampleID].BTShipment", shipment));

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

 

В js все Guid преобразуйте к нижнему регистру

те в вашем случае напишите что то типа esq.filters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "UsrInfoId", "337ed.....

Eсли нужно получить справочную колонку, то её название нужно указывать без приставки "Id", как в схеме таблицы:

esq.addColumn("UsrInfo")

Аналогично и с фильтрами:

esq.filters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "UsrInfo", "337ED96B-B658-48B0-BBB6-7FACF918C735"));

Но обратите внимание, что, если у Вас фильтр построен по обратным связям, то можно писать 2 способами.

1. Через Id и тогда в качестве значения фильтра указываем Id:

var shipment = this.get("BTShipment");

sampleESQ.filters.addItem(sampleESQ.createColumnFilterWithParameter(

                    this.Terrasoft.ComparisonType.EQUAL, "[BTSampInShipment:BTSampleID].BTShipment.Id", shipment.value));

2. Через справочное поле и тогда в качестве значения указывать значение справочного поля:

var shipment = this.get("BTShipment");

sampleESQ.filters.addItem(sampleESQ.createColumnFilterWithParameter(

                    this.Terrasoft.ComparisonType.EQUAL, "[BTSampInShipment:BTSampleID].BTShipment", shipment));

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

 

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

Добрый день!

Подскажите, пожалуйста, как можно ограничить права на редактирование и удаление по только контакта с типом сотрудник для всех кроме администратора. Контакты с типом не "сотрудник" могут редактировать все. Автор таких контактов "системный администратор"

Пробовал следующий БП:

старт по созданию нового контакта с типом сотрудник и блок настроек прав доступа отнимает права Р/У у роли "торговый агент" (это функциональная роль, взял для тренировки)

Проблема в том, что права остаются у стандартно присваиваемой роли "all employees" и это позволяет торговым агентам редактировать т.к. они по умолчанию входят в эту группу. Складывается впечатление что мне нужно строить БП с десятком блоков ограничивающих права для каждой роли отдельно. А если добавится роль, снова редактировать БП?

 

Нравится

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

А отнимайте в БП для "сотрудников" все права у всех ролей. А затем добавляйте права read - для всех, а edit/delete - для System administrators

И заодно, этот БП запускайте при смене типа контакта.

А отнимайте в БП для "сотрудников" все права у всех ролей. А затем добавляйте права read - для всех, а edit/delete - для System administrators

И заодно, этот БП запускайте при смене типа контакта.

Владимир Соколов,

Благодарю. Дополнительно родилась потребность запретить вообще создание контактов с типом "сотрудник" для всех кроме админа, но хотелось бы без лишнего БП реализовать, а чтобы для конкретных пользователей в принципе невозможно было выбрать тип "сотрудник" еще до сохранения записи. Так возможно без сложного программирования?

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

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

 

что-то я не понимаю логики как нужно правильно раздать права поскольку в моем случае у записей справочника "тип контакта" нету автора (на скрине видно) а права присваиваются на записи создаваемые кем-то.

Я добавил запись в справочник и настроил правило (сначала правило, потом - запись тоже пробовал):

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

Даже для чистоты эксперимента делал правило (правда не добавлял записи): созданные мной доступны для всех.

И всегда выбор типа контакта был вообще пустой для всех, кроме меня.

Подскажите, в чем может быть моя ошибка. 

Спасибо

 

 

Права на записи определяются не по полю «Создал», а по записям в отдельной системной таблице базы. Когда Вы сверху поставили галочку, в базе создалась таблица вроде SysContactTypeRight, и в неё нужно добавить записи для каждого типа. Такой-то видит группа «Все пользователи», а такой-то — другая группа. Если у какого-то из типов никаких прав не будет, как у Вас для всех типов сейчас, то этот тип увидит только админ, что Вам и нужно.

Доступ по умолчанию тут не при делах, это для случаев, когда пользователь создал новую запись в таблице «Тип контакта». А типы уже существуют, их создаёт только админ.

А можно немного подробнее как мне это сделать?

Если есть доступ, то через базу.

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

хорошо, это я понял. Есть выход создать новый тип "сотрудники" (благо их не много сейчас) и дать чтение только админам, вот я не понимаю почему другие записи тоже скрываются, т.е. как мне настроить доступ, пускай, для новых записей, но чтобы системные не скрылись. Или только через базу?

Когда Вы включили администрирование справочника по записям, то пользователи-неадмины  будут видеть только те записи, которые им разрешены на чтение, то есть существуют записи в таблице прав. Изначально в таблице прав этого справочника пусто, то есть неадмины не будут видеть ничего. Нужно добавить по каждой записи, кроме «сотрудники» право на чтение для роли «все пользователи».

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

спасибо, хорошо получилось. Раздал права на справочник, создал новые записи кроме "сотрудник" и в существующих контактах через БП заменил старые типы на новые. 

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

Нужно сделать следующий запрос на стороне клиента:

select id, Name, (select top(1) pp.Price from ProductPrice pp where pp.ProductId = Product.Id and pp.TypeId = 'xxxxxxx') from Product

На стороне сервера нашел как: https://academy.terrasoft.ua/documents/technic-sdk/7-13/dobavlenie-kolonok-v-zapros-metod-addcolumn

Как сделать этот запрос на клиенте?

Нравится

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

Здравствуйте, вам нужно смотреть в сторону Terrasoft.SubQueryExpression

https://academy.terrasoft.ua/jscoresdk/?partner=sibis#!/api/Terrasoft.d…

Поищите в конфигурации примеры по "SubQueryExpression"

Сортировку можно применить как к обычной колонке. И добавить необходимые фильтры.

Простите, описание съезжает в приложение кода)

/**
 * Добавляет в запрос колонку имени схемы.
 * @protected
 * @virtual
 * @param {Terrasoft.EntitySchemaQuery} esq Объект запроса.
 * @param {String} columnPath Путь к колонке.
 * @param {String} columnAlias Псевдоним колонки.
 */
 
addSchemaNameColumn: function(esq, columnPath, columnAlias) {
	var expressionConfig = {
		columnPath: columnPath,
		parentCollection: this,
		aggregationType: Terrasoft.AggregationType.NONE
	};
	var column = Ext.create("Terrasoft.SubQueryExpression", expressionConfig);
	var filter = Terrasoft.createColumnFilterWithParameter(
		Terrasoft.ComparisonType.EQUAL,
		"SysWorkspace",
		Terrasoft.SysValue.CURRENT_WORKSPACE.value
	);
	column.subFilters.addItem(filter);
	var esqColumn = esq.addColumn(columnAlias);
	esqColumn.expression = column;
}

 

Можно реализовать запрос в запросе, то есть сначала получить select id, Name from Product, а потом в функции обработки результата выборки для каждой записи вызывать select top(1) pp.Price from ProductPrice pp where pp.ProductId = Product.Id and pp.TypeId = 'xxxxxxx'.

С точки зрения нагрузки на базу данных будет тоже, что и select id, Name, (select top(1) pp.Price from ProductPrice pp where pp.ProductId = Product.Id and pp.TypeId = 'xxxxxxx') from Product

Алла Савельева,

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

Для клиента это выглядит так

Получилось сделать так:

esq.addAggregationSchemaColumn("[WisPriceInRegion:WisProduct].WisCostDelivery",
          Terrasoft.AggregationType.MIN, "Price", Terrasoft.AggregationEvalType.ALL);
var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,
        "[WisPriceInRegion:WisProduct].WisDistrict", this.get("WisDistrict").value);
esq.filters.add("esqFirstFilter", esqFirstFilter);

Но все же нужно сделать сортировку по дате создания и выбирать топ(1)

Здравствуйте, вам нужно смотреть в сторону Terrasoft.SubQueryExpression

https://academy.terrasoft.ua/jscoresdk/?partner=sibis#!/api/Terrasoft.d…

Поищите в конфигурации примеры по "SubQueryExpression"

Сортировку можно применить как к обычной колонке. И добавить необходимые фильтры.

Простите, описание съезжает в приложение кода)

/**
 * Добавляет в запрос колонку имени схемы.
 * @protected
 * @virtual
 * @param {Terrasoft.EntitySchemaQuery} esq Объект запроса.
 * @param {String} columnPath Путь к колонке.
 * @param {String} columnAlias Псевдоним колонки.
 */
 
addSchemaNameColumn: function(esq, columnPath, columnAlias) {
	var expressionConfig = {
		columnPath: columnPath,
		parentCollection: this,
		aggregationType: Terrasoft.AggregationType.NONE
	};
	var column = Ext.create("Terrasoft.SubQueryExpression", expressionConfig);
	var filter = Terrasoft.createColumnFilterWithParameter(
		Terrasoft.ComparisonType.EQUAL,
		"SysWorkspace",
		Terrasoft.SysValue.CURRENT_WORKSPACE.value
	);
	column.subFilters.addItem(filter);
	var esqColumn = esq.addColumn(columnAlias);
	esqColumn.expression = column;
}

 

Пащенко Александр Сергеевич,

Вот это было круто, спс

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

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

О компании

Компания EQUIP GROUP специализируется на обслуживании оптовых покупателей. Она предлагает профессиональное оборудование для оснащения предприятий общественного питания, столовых, кафе, баров, ресторанов, объектов fast-food, объектов торговли, прачечных и химчисток.

Дилерская сеть насчитывает более 600 компаний-дилеров. География сети охватывает всю территорию Европейского союза. Ежегодно дилерская сеть EQUIP GROUP увеличивается, что говорит о серьезном интересе клиентов к продукции компании.

 

Предпосылки внедрения bpm’online:

1. Предыдущая CRM-система не покрывала в должном качестве задачи компании.

2. Необходимость консолидации информации в единой системе. Ранее сотрудники отдела продаж работали в удобном для себя формате без четко построенных процессов, поэтому данные хранилась в разрозненном виде.

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

 

Для достижения этих целей были выбраны вертикальные продукты bpm’online — sales и marketing.  

 

Основные задачи внедрения bpm’onlineуправление процессами взаимодействия с клиентами и автоматизация процессов оформления заказов с возможностью резервации продукции на складах в разных странах, а также управление маркетинговыми мероприятиями.

 

Выполненные настройки

В рамках отдельного проекта реализована синхронизация разделов bpm’online «Продукты», «Заказы», «Счета», «Контакты» и «Контрагенты» с сайтом клиента, благодаря чему информация с сайта автоматически попадает в систему. Это позволяет дилерам самостоятельно формировать заказы и счета на сайте, которые затем автоматически формируются в CRM-системе. Такой подход существенно сокращает трудовые затраты клиента, развивает клиентоориентированность, а также увеличивает лояльность.

На следующем этапе настройки системы команда внедрения добавила в карточку раздела «Продукты» поля «подкатегория», «производитель», «марка» и «описание» для более удобной работы при подборе продуктов в заказе. В разделах «Заказы» и «Счета» добавлены поля, в которых с помощью бизнес-процесса система подсчитывает и заполняет поле «Сумма без налога» и «Сумма налога».

 

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

 

Далее по процессу обработки лида bpm’online автоматически создает активности. После подтверждения потребности клиента в нашей продукции bpm’online автоматически создает Контакт.

 

Когда контакт готов к совершению покупки, в системе оформляется заказ. В зависимости от выбранной страны Европейского союза в заказе система подсчитывает актуальную сумму налога. Чтобы оптимизировать сроки доставки продукции для клиента, при оформлении заказа необходимо выбрать склад, с которого будет выполняться доставка товара. В связи с этим есть необходимость отслеживать остатки товаров на складах. Для решения этой задачи команда внедрения воспользовалась готовым решением с площадки marketplace Актуализация остатков по продуктам. Данный темплейт был дополнен необходимой логикой. Реализована возможность расчёта остатков продуктов в зависимости от того, на каком складе они находятся.

 

Для управления маркетинговыми активностями настроен и успешно используется базовый функционал bpm’online marketing. Все контакты сгруппированы по определённым признакам и сегментированы в динамические группы. При появлении контакта, который соответствует условиям определённой группы, он автоматически в неё попадает. Это позволяет запускать целевые рассылки клиентам в интерфейсе bpm’online marketing, в которых клиенты уведомляются о новинках и потенциально интересных товарах.

 

Результат

В результате внедрения bpm’online EQUIP GROUP получила возможность использовать инструменты продаж и маркетинга в единой IT-экосистеме, что решает проблему объединения результатов работы из разных систем. Работа в единой системе улучшила коммуникацию между сотрудниками компании.

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

Нравится

Поделиться

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

При настройке раздела "Активности" основного рабочего места в мобильном приложении получаю ошибку при попытке открыть активность на просмотр в мобильном приложении. Когда там было 27 полей тогда выдавало ошибку что в сегменте не может быть больше 21 поля, после изменения до 21 поля пишет что не больше 13. так все же сколько можно использовать молей для активности (при этом в других разделах указывает ограничение 15 полей и с 15 полями все работает без ошибок). При этом в рабочем месте "Полевый продажи" мобильного приложения такого ограничения нет и там без ошибок отображается 27 полей.

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

 

Нравится

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

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

Данное сообщение означает что на карточку выведено 13 и более справочных полей.

К сожалению, протокол ODATA который используется для обмена данными между мобильным приложением и bpm'online накладывает такое ограничение.

Необходимо уменьшить количество справочных полей на карточке до 12. 

 

Гриценко Игорь,

А как реализовано это в полевых продажах? Если зайти на рабочее место полевых продаж в мобильном приложении - там все поля (больше 15) отображаются без ошибки.

Уменьшил до 12 полей - ошибка та же, при этом только в разделе "Активности" такая ошибка

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

Нужно создать миникарточку для отправки sms. 

Тоесть небольшое окно где нужно ввести номер и текст сообщения.

Вызывать окно по кнопке. Кто знает как создать такое окно?

Нравится

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

Такой вопрос:

Нужно что бы 

відреагуй, замість айпішніка напиши 

http://firma-bpm/0/rest/TestService/TestMethod/qq

работало с любого компа мира, это возможно?

Сейчас это работает если мы в системе и на другой вкладке это выполняем - возвращает результат, после выхода из бпм - возвращает ошибку, как написать запрос что бы оно в любом случае возвращало результат?

Нравится

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

Уважаемое сообщество.

Столкнулся со следующей потребностью:

В Лиде у меня должно быть 2 контакта и не должно быть контрагента (потом при переводе в продажу БП будет вызывать диалоговое окно с возможностью выбора/добавления контрагента, участвующего в продаже). Есть пара идей по возможной реализации, но каждая из них удовлетворят потребность лишь частично, и часть идей возможно не, реализуемы без хардкорного программирования. Хотелось бы реализовать задачу средствами дизайнера или с минимальным кодингом.

  1. Создать кастомный раздел лиды и там настроить страницу с нужными полями и убрать поле контрагента. Тут вопрос: можно ли как-то “в несколько движений” перенести все схемы и перенастроить все БП из нынешнего раздела Лиды на новый раздел. Или может быть есть какой-то способ, позволяющий найти все связанные с лидами элементы (схемы, БП, настройки) и через импорт/экспорт перенести их из раздела Лиды в новый раздел?

  2. В текущем разделе Лиды убрать совсем детали AccountProfile и ContactProfile путем добавления кода {"operation": "remove", "name": "AccountProfile"} в дизайнере во вкладке “Исходный код”. А в основной области добавить  просто 2 объекта из справочника Контакты. Так выходит не очень красиво, потому что слева останется пустота, съедающая место, а людям на планшете в браузере нужно работать.

Что посоветуете?

Благодарю

Нравится

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

Несколько идей.



1. У нас есть правило - один или несколько. То есть, обычно, где есть 2 контакта, могут быть и 3. А это значит, что целесообразно подумать о детали

2. Слева находится не только AccountProfile и ContactProfile, но и поля в Header. Пока они там есть, левый контейнер LeftModulesContainer будет оставаться и "съедать место"

3. Визуально для 2 полей выглядит логичным вместо AccountProfile добавить Contact2Profile, например.

4. Я бы оставил стандартный раздел Lead, чтобы не ломать логику landing page, lead pipeline, не переписывать все бизнес-процессы с лидами и оставить возможность получать улучшения функциональности в новых версиях

Несколько идей.



1. У нас есть правило - один или несколько. То есть, обычно, где есть 2 контакта, могут быть и 3. А это значит, что целесообразно подумать о детали

2. Слева находится не только AccountProfile и ContactProfile, но и поля в Header. Пока они там есть, левый контейнер LeftModulesContainer будет оставаться и "съедать место"

3. Визуально для 2 полей выглядит логичным вместо AccountProfile добавить Contact2Profile, например.

4. Я бы оставил стандартный раздел Lead, чтобы не ломать логику landing page, lead pipeline, не переписывать все бизнес-процессы с лидами и оставить возможность получать улучшения функциональности в новых версиях

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