Всем привет!

Есть задача - на определенном этапе БП из лида создаю продажу (предварительно квалифицируя данного лида в контакт). В фоновом режиме в процессе выполняются подпроцессы обновления стадии лида, квалификация лида, создания продажи.

Задача: необходимо после того как создается продажа - открыть ее старницу редактирования. Но не просто открыть (как это делает базовый элемент "Открыть старницу редактирования", который при сохранении продажи закроет ее), а как бы перейти из раздела Лиды на страницу новосозданной продажи. Дело в том, что по продаже запускается процесс и мне нужно что бы пользователь продолжил работать по процессу продажи.

Заранее спасибо!

Нравится

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

Вот пример:

                        var recordId = collection.getByIndex(0).get("Id");

                        var defaultValues = [

                            {

                                name: "DefaultStatus",

                                value: status

                            },

                            {

                                name: "DefaultVolume",

                                value: this.get("SampleIDVolume")

                            }

                        ];

                        this.openCardInChain({

                            "id": recordId,

                            "schemaName": "BTSampInShipment1PageV2",

                            "moduleId": this.sandbox.id + "BTSampInShipment1PageV2",

                            "isSeparateMode": false,

                            "operation": Enums.CardStateV2.EDIT,

                            "defaultValues": defaultValues,

                        });

Открывай карточку продажи программно из скрипта страницы редактирования лида после выполнения всех нужных процессов.

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

Рад тебя слышать )

Не подскажешь примеры где посмотреть? потому что на форуме вот так сходу не нашел.

Вот пример:

                        var recordId = collection.getByIndex(0).get("Id");

                        var defaultValues = [

                            {

                                name: "DefaultStatus",

                                value: status

                            },

                            {

                                name: "DefaultVolume",

                                value: this.get("SampleIDVolume")

                            }

                        ];

                        this.openCardInChain({

                            "id": recordId,

                            "schemaName": "BTSampInShipment1PageV2",

                            "moduleId": this.sandbox.id + "BTSampInShipment1PageV2",

                            "isSeparateMode": false,

                            "operation": Enums.CardStateV2.EDIT,

                            "defaultValues": defaultValues,

                        });

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

День добрый. 

Требуется добавить Notes из продукта в печатную форму предложения (Содержит описание продукта и процедуру предоставления услуги).

Нигде не могу найти данный параметр для отображения в печатной форме. Подскажите логику? 

 

Нравится

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

У меня когда-то была подобная проблема - поле 'Notes' не отображалось в списке полей в форме настройки печатной формы.

Возникала из-за того, что у колонки Notes в схеме таблицы был установлен режим использования 'Никогда'.

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

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

В ходе анализа не удалось выявить проблем выведением данного поля.

Пробовали по родительскому объекту и из табличной части по связанному объекту (см. скриншоты ниже).

 

 

Перепроверьте наличие колонки в объекте.

Также рекомендуем ознакомиться с функционалом печатных форм - https://academy.terrasoft.ru/documents/administration/7-13/registraciya…

Если проблема актуальна, то просьба предоставить скриншот с настройками печатной формы и где Вы пытаетесь найти данную колонку.

У меня когда-то была подобная проблема - поле 'Notes' не отображалось в списке полей в форме настройки печатной формы.

Возникала из-за того, что у колонки Notes в схеме таблицы был установлен режим использования 'Никогда'.

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

Показать все комментарии
Excel Импорт
импорт Excel
импорт данных из Exсel
7.13_()
sales_team

Здравствуйте, уважаемые члены сообщества!

Подскажите, пожалуйста, как в таблице Excel перед импортом сослаться на Контакт, с которым хотелось бы связать импортируемую сделку?

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

 

Заранее благодарен за помощь! Спасибо!

 

Нравится

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

Павел, в вашей таблице с Продажами из другой CRM должен быть столбец с этими контактами. При импорте если значение Контакта в таблице Продажи совпадет со значением Контакта из bpm, то тогда они будут связаны. Если не совпадет, то тогда будет создан новый контакт в bpm

Павел, в вашей таблице с Продажами из другой CRM должен быть столбец с этими контактами. При импорте если значение Контакта в таблице Продажи совпадет со значением Контакта из bpm, то тогда они будут связаны. Если не совпадет, то тогда будет создан новый контакт в bpm

Если в таблице сделок (вероятно, Opportunity), куда загружаете данные, есть справочная колонка «Контакт» и хотите привязать по ней, то можно и в XLSX-файле с данными сделать такую колонку и наполнить её значениями, совпадающими с первичным поле (ФИО) контакта. При загрузке в справочное поле добавится Id подходящей записи.

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

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

Добрый день.

 

При автоматическом создании контакта, через настроенный через лендинг Лид, не запускается бизнес-процесс “Идентификация лида”. 

Как настроить автоматический запуск бизнес-процесса?

Т.е Клиент зарегистрировался на форме сайта, в разделе [Лиды] создался Лид, в разделе [Контакты] создался контакт. Но процесс  “Идентификация лида” не стартовал. 

Вроде это стандартный функционал...

Спасибо.

Нравится

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

Марина Федоровна день добрый

вам требуется заместить схему Таблицы "Lead" из пакета "WebLeadForm", и далее в Замещенной схеме таблицы Переопределить метод "LeadInserted" и там в зависимости от ваших Кейсов и логики реализовать Новые правила для запуска бизнес процесса "LeadManagementIdentification" ("Идентификация лида") именно отсюда идет вызов данного Бизнес-процесса

Марина Федоровна день добрый

вам требуется заместить схему Таблицы "Lead" из пакета "WebLeadForm", и далее в Замещенной схеме таблицы Переопределить метод "LeadInserted" и там в зависимости от ваших Кейсов и логики реализовать Новые правила для запуска бизнес процесса "LeadManagementIdentification" ("Идентификация лида") именно отсюда идет вызов данного Бизнес-процесса

Власов Михаил Викторович,

Михаил, день добрый. Спасибо.

Вообщем-то для клиента - это получается доработка.

Показать все комментарии
заголовок станицы
MainHeader
config
7.13_()
sales_team

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

this.openCardInChain({
   "id": recordId,
   "schemaName": "BTSampInShipment1PageV2",
   "moduleId": this.sandbox.id + "BTSampInShipment1PageV2",
   "isSeparateMode": false,
   "operation": Enums.CardStateV2.EDIT,
   "defaultValues": defaultValues,
});

Но при открытии карточки редактирования вместо заголовка отображается 'New record'.

Если открывать эту же карточку редактирования через стандартный пункт меню 'Edit' заголовок карточки отображается корректно.

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

Нравится

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

Здравствуйте! если ничего не путаю, то в самой карточке Вам необходимо переопределить метод 

getHeader: function() {
				return Resources.localizableStrings.PageSettingsCaption;
			}

Я так делал. Но у меня значение было статическим. А Вам просто передать в метод свое значение

 

Здравствуйте! если ничего не путаю, то в самой карточке Вам необходимо переопределить метод 

getHeader: function() {
				return Resources.localizableStrings.PageSettingsCaption;
			}

Я так делал. Но у меня значение было статическим. А Вам просто передать в метод свое значение

 

Нигрескул Алексей,

Решила данную проблему немного другим способом.

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

var defaultValues = [
	{
		name: "BTSampleCIN",
		displayValue: sampleID
	}
];

 

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

Пытаюсь в коде сбросить справочник

this.set("UsrDealerAccount", {value: null, displayValue: null});

но тогда не срабатывает правило REQUIRED, т.е. звездочка * рядом с полем есть, поле пустое, но страница может быть сохранена (в поле в базе сохраняется NULL). 

Если поставить на нее курсор и нажать BackSpace, то тогда всё правильно - не дает сохранить.

Что я делаю не так?

Нравится

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

Вы в справочное поле вставляет "Пустой объект", поэтому в вашем случае с точки зрения валидатора поле заполнено.

Делайте так: 

this.set("UsrDealerAccount", null);

Литвинко Павел,Там потом ошибки в консоли валятся

Алексей-Карягин пишет:

Литвинко Павел,Там потом ошибки в консоли валятся

В каком случае и какие ошибки? 

Литвинко Павел,

у меня фильтрация этого поля правилом, когда туда плюхаешь нул, он ругается на этот нул.

Алексей-Карягин пишет:

Попробуйте тогда, вместо null использовать  Terrasoft.GUID_EMPTY может поможет

Литвинко Павел,

к сожалению, нет

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

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

После компиляции вывалилось сообщение о неуспешном завершении, после этого в колонке текст последней ошибки объекта всплыло сообщение The statement terminated. The maximum recursion 100 has been exhausted before statement completion. что это значит и как ее исправить? объект не открывается, метаданные тоже

Нравится

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

Очень похоже на зацикливание в иерархии наследования, если сгенерировать исходные коды и компилировать все не помогает, то попытайтесь экспортировать последние измененные схемы в файл, удалить их и перекомпилировать (Режим компилировать все)

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

Уточните, какие изменения вносились с Вашей стороны в конфигурацию?

У Вас on-site или on-demand?

Очень похоже на зацикливание в иерархии наследования, если сгенерировать исходные коды и компилировать все не помогает, то попытайтесь экспортировать последние измененные схемы в файл, удалить их и перекомпилировать (Режим компилировать все)

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

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

Спасибо, разобрались! Каким-то образом в созданном нами объекте вместо "базового" родительским был указан сам новосозданный объект. Т.е. он ссылался сам на себя.

Геннадий Кутуков,

Ну чтото такое я и подозревал в общем хорошо что все наладилось :)

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

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

Подскажите пожалуйста, как удалить последние изменения в схемах?

Алла Савельева пишет:

Уточните, какие изменения вносились с Вашей стороны в конфигурацию?

У Вас on-site или on-demand?

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

Подскажите пожалуйста, как удалить последние изменения в схемах?

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

В конфигурации нет механизма, который сможет (как Ctrl+Z) отменить или удалить последние изменения в схемах. 

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

Коллеги, возможно ли как-то переименовать пакет?

Нравится

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

таблица SysPackage

Я делал запросом в БД

таблица SysPackage

Дмитрий Степанов пишет:

таблица SysPackage

Благодарю, всё получилось. 

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

Добрый день!

Хочу запускать бизнес-процесс, результатом которого будет отправка письма пользователю.

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

Подскажите, как наименее затратно это можно реализовать?

Спасибо!

Нравится

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

Письмо - это активности с типом Email

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

Письмо - это активности с типом Email

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

Григорий, спасибо за комментарий.

1. Рекомендованное расширение будет работать в Sales.Team?

2. Т.е. самый незатратный способ - js (выборка, фильтрация, подготовка текста) с последующей передачей результата в тело письма?

Курятов,

То что вы описали можно сделать и через js  или комбинацию js + вєб сервис. На первый взгляд БП там не нужны, если вам конечно  не нужно перехватывать события типа изменения/создания/удаления записи. А так как всегда все зависит от деталей тз.

Насчет расширения если ві ведете разработку то нужно создать тестовый стенд, вот на нем и протестируете расширение перед переносом в продакшен. У меня под рукой нет Sales но по описанию вроде должно работать.

 

 

 

 

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

var esqOpportunity = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Opportunity");

esqOpportunity.AddColumn("Id");

var opportunityCollection = esqOpportunity.GetEntityCollection(userConnection);

Guid opportunityId = Guid.Empty;

if (opportunityCollection.Count > 0) {

    opportunityId = opportunityCollection[0].GetTypedColumnValue("Id");

}

Почему при попытке получить значение opportunityCollection[0].GetTypedColumnValue("Id") выдается ошибка: Value "Id" was not found?

В профайлере в запросе Id записи выбирается.

Если написать такой код:

var esqOpportunity = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Opportunity");

esqOpportunity.AddAllSchemaColumns();

var opportunityCollection = esqOpportunity.GetEntityCollection(userConnection);

Guid opportunityId = Guid.Empty;

if (opportunityCollection.Count > 0) {

    opportunityId = opportunityCollection[0].GetTypedColumnValue("Id");

}

В этом случае ошибки не возникает.

Можно ли получить Id записи каким-то другим образом, но чтобы был первый вариант с выбором одной колонки?

Нравится

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

А если так 

var esqOpportunity = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Opportunity");
var colidName = esqOpportunity.AddColumn("Id");
var opportunityCollection = esqOpportunity.GetEntityCollection(userConnection);
Guid opportunityId = Guid.Empty;
if (opportunityCollection.Count > 0) {
    opportunityId = opportunityCollection[0].GetTypedColumnValue<Guid>(colidName.Name);
}

 

А если так 

var esqOpportunity = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Opportunity");
var colidName = esqOpportunity.AddColumn("Id");
var opportunityCollection = esqOpportunity.GetEntityCollection(userConnection);
Guid opportunityId = Guid.Empty;
if (opportunityCollection.Count > 0) {
    opportunityId = opportunityCollection[0].GetTypedColumnValue<Guid>(colidName.Name);
}

 

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

Спасибо за вариант решения. Так, конечно, работает.

Интересно, что работает еще и так:

opportunityCollection[0].GetTypedColumnValue<Guid>("Id1").

Но почему "Id1" (в запросе же колонка называется "Id")???

 

Видимо, так создаётся вторая колонка Id в запросе вроде «select id, id as id1».

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

Но в профайлере ж запрос создается в таком виде:

SELECT

    [Opportunity].[Id] [Id]

FROM

    [dbo].[Opportunity] [Opportunity] WITH(NOLOCK)

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

ESQ использует Id для внутрених целей

esqOpportunity.PrimaryQueryColumn.IsAlwaysSelect = true; Вот так пишите и сможете получать Id, чтобы не писать Id1

Можно еще так: 

                opportunityId = opportunityCollection.First().PrimaryColumnValue;

           

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