Добрый день!
В sales enterprice 7.8 нужно в шаблоне email выводить список продуктов с детали Продукты. Как это можно сделать? На данный момент получается выводить только отдельные колонки из карточки раздела, а нужно выводить записи с деталей.

Нравится

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

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

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

Уважаемые коллеги!

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

Нравится

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

Добрый день, Юрий!

Сбросить персональные настройки Вы можете:
1) В Профиле пользователя -> Восстановить настройки по умолчанию

Полностью сбросить настройки:
2) Для системы, развёрнутой в облаке - выполнить скрипт, сделав сброс всех настроек. Либо выполнить откат базы до необходимого времени

3) Для системы, развёрнутой локально - подменить базу на чистую

Если речь идёт о возврате к коробочной версии с сохранением данных, то удалить созданные вами замещающие объекты/схемы -> Компелировать всё ->перезапустить сайт -> Очистка redis

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

Добрый день!
Можете ли подсказать, как настроить правило связывания писем с новым кастомным разделом? Добавляю такое правило, но в справочнике объектов, с которым связывается письмо, нет нового раздела https://yadi.sk/i/iPk-ef86wkGxt

Нравится

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

Здравствуйте, Анастасия!

Список объектов формируется методом setDestinationSchemaList (схема RuleRelationLookupEditPageV2). Видимо не хватает записей в таблице RuleRelationSections.

"Демьяник Алексей" написал:Видимо не хватает записей в таблице RuleRelationSections.

Нужно вручную добавить запись в таблицу RuleRelationSections?

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

Скриптом. Обязательные для заполнения поля:
Name, SectionSchemaUId.

Вручную (через справочник) Вы не сможете заполнить поле SectionSchemaUId.

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

Добрый вечер!
В продукте sales enterprice 7.8 настраивал бизнес-процесс для раздела продажи, но столкнулся с трудностью. Необходимо создать задачу по назначению даты проведения презентации и проведению презентации. Необходимо, что бы по задаче провести презентацию пользователь получал уведомление за один день до указанной даты проведения презентации, заполненной ранее. Пробовал написать следующую формулу, где брал разницу между назначенной датой проведения презентации и системной переменной текущее значение даты. Однако не работает. Как можно в бизнес-процессе реализовать подобный отсчёт по проставленной дате и вызвать напоминание задачи за день до указанной даты? Возможно как то по другому написать условие формулы?

Нравится

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

Коллеги, также уточните, пожалуйста, как можно в бизнес-процессе вычесть из значения даты и времени 1 день - для расчета даты и времени напоминания ответственному

Добрый день!

Для решения задачи можно использовать свойства и методы DateTime (в данном случае .AddDays()). Подробней можно найти в документации msdn - https://msdn.microsoft.com/ru-ru/library/system.datetime(v=vs.110).aspx
Предположим есть дата проведения презентации [dd.mm.yyyy]
Создавать активность с помощью “Добавить данные”. Установить значение:
Начало = [dd.mm.yyyy].AddDays(-1)

Воспользовался Вашим советом. В моем случае нужно запустить цикл добавления записей +2 дня начиная с сегодня. Выходит в параметр я выбираю текущую дату [#Системная переменная.Текущее значение даты#].AddDays(-2)

Но если я к выбранному параметра уже добавляю 2 дня, при сохранении БП выдает ошибку.

Схема содержит ошибки: AddDataUserTask1.RecordDefValues.UsrDateDelivey [Невозможно вычислить выражение "[#[IsOwnerSchema:false].[IsSchema:false].[Element:{6b480f6c-2178-466d-9795-c8c615a5bf89}].[Parameter:{5a11f02a-3da8-417f-9f7e-0e264134e07d}].[EntityColumn:{d9be5aff-6fa8-4739-982f-881cfb12ec0e}]#].AddDays(-2)", ошибка: Exception has been thrown by the target of an invocation.].

Если дело в «Exception has been thrown by the target of an invocation», то это может быть связано с настройками компьютера, где происходит компиляция, а не в цифре 2.

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

Здравствуйте. Уже создавал тему на подобии. Нужна помощь в создании строки расчёта с функцией "итоги". В строке будет рассчитываться общий закуп всех товаров в одном заказе.
Создана строка "Сумма закупа" (UsrTotal) с типом данных "Деньги". Она должна считать общую сумму затрат на покупку всех товаров в заказе.
Для этого созданы две строки "Покупная цена" (UsrPrice), где рассчитывается стоимость одного товара и "Итого дил." (UsrTotalDil), тут рассчитывается сумма закупа в зависимости от кол-ва товаров в строке.

В предыдущем посту писали, что итог рассчитывается из этой схемы:

Guid currencyId = Entity.GetTypedColumnValue("CurrencyId");
decimal currencyRate = Entity.GetTypedColumnValue("CurrencyRate");
var currencyEntity = UserConnection.EntitySchemaManager.GetInstanceByName("Currency").CreateEntity(UserConnection);
currencyEntity.FetchFromDB(currencyEntity.Schema.GetPrimaryColumnName(), currencyId, new[] { "Division" });
decimal division = currencyEntity.GetTypedColumnValue("Division");
decimal currencyFromPrimaryFactor = division!= 0? currencyRate / division : 0;
var update = new Update(UserConnection, "OrderProduct")
.Set("CurrencyId", Column.Parameter(currencyId))
.Set("CurrencyRate", Column.Parameter(currencyRate))
.Set("Price", Column.Parameter(currencyFromPrimaryFactor) * Column.SourceColumn("PrimaryPrice"))
.Set("Amount", Column.Parameter(currencyFromPrimaryFactor) * Column.SourceColumn("PrimaryAmount"))
.Set("DiscountAmount", Column.Parameter(currencyFromPrimaryFactor) * Column.SourceColumn("PrimaryDiscountAmount"))
.Set("TaxAmount", Column.Parameter(currencyFromPrimaryFactor) * Column.SourceColumn("PrimaryTaxAmount"))
.Set("TotalAmount", Column.Parameter(currencyFromPrimaryFactor) * Column.SourceColumn("PrimaryTotalAmount"))
.Where("OrderId").IsEqual(Column.Parameter(Entity.GetTypedColumnValue("Id"))) as Update;
update.Execute();

Буду весьма благодарен за помощь

Нравится

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

Здравствуйте,
А где вы пишите данный код, событийный бизнес-процесс объекта, какого объекта? по событию во время сохранения, после сохранения? И что не так с кодом? Что не получается, в чем трудность?

"Максим Шевченко" написал:

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

А где вы пишите данный код, событийный бизнес-процесс объекта, какого объекта? по событию во время сохранения, после сохранения? И что не так с кодом? Что не получается, в чем трудность?

Здравствуйте, Максим.
Бизнес-процесс объекта "Orders". После добавления продуктов в заказе. С кодом всё так. Это код от итогов в том же процессе объекта "Orders". Не получается написать код для нужного мне процесса. Как правильно подставить туда все данные, чтобы всё работало корректно?

"Ануфриев Дмитрий Юрьевич" написал:Не получается написать код для нужного мне процесса.

Это отдельная схема БП созданная в конфигурации? Схема БП со стартовым сигналом?
Если да, то читаете элементами чтения данных, считаете формулами или скрипт тасками, и пишите изменением или добавлением данных.
Не обязательно все делать кодом, дизайнер БП предоставляет много более удобных механизмов, подробнее:
https://academy.terrasoft.ua/documents/technic-bpms/7-8/obzor-vozmozhno…

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

Добрый день! Есть карточка «Продажи». На данной карточке отображается в виде шкалы рис. 1 справочник «Стадии». Подскажите возможно ли убрать переключения стадии по "линейки стадий". Добавть кнопку "Далее". Логика - переключает стадию сделки на следующую.

Нравится

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

Добрый день!

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

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

Реализовать кнопку конечно же можно - разработчик может сделать почти все :) Однако, ввиду того, что действие данной кнопки должно быть завязано на все стадии процесса, легче было бы просто отключить доступный переход по стадиям (см. абзац 1)

"Мария Ватулина" написал:

Добрый день!

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

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

Реализовать кнопку конечно же можно - разработчик может сделать почти все :) Однако, ввиду того, что действие данной кнопки должно быть завязано на все стадии процесса, легче было бы просто отключить доступный переход по стадиям (см. абзац 1)


Прошу не отвечать безкорсним текстом на сообщения. Я спросил разработчиков, как это можно реализовать. Много текста и я могу написать.

Добрый день! Можно убрать переключение стадий в продаже по шкале стадий. За данную функциональность отвечает в первую очередь ActionsDashboardModule. Можете заместить схему Страница редактирования продажи (OpportunityPageV2) в пакете Opportunity. В замещенной клиентской схеме удалить в секции diff: [...] элемент ActionsDashboardModule примерно следующим кодом:
{
"operation": "remove",
"name": "ActionsDashboardModule",
"parentName": "ActionDashboardContainer",
"propertyName": "items",
"values": {
"classes": {wrapClassName: ["actions-dashboard-module"]},
"itemType": Terrasoft.ViewItemType.MODULE
}
} и далее добавить кнопку "Добавить", по клику на которую должен будет срабатывать обработчик, вызывающий перегрузку карточки в связи с переходом на новую стадию. Для этого потребуется переопределить метод subscribeSandboxEvents: function() {...} и все связанные с ним методы, вызываемые через механизм посылки сообщений.

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

Добрый день.
Можно ли создать замещающий модуль для пакета NUI PrintReportUtilities.
Или как добавить свои изменения в NUI пакетах.
Нужно добавить в generatePrintForm: function(printForm) переменную.
Примерно так :
generatePrintForm: function(printForm) {
this.showBodyMask();
var filters = this.getReportFilters();
var OrderId = this.getPrimaryColumnValue();
var reportParameters;
if (filters instanceof Terrasoft.FilterGroup) {
reportParameters = {Filters: filters.serialize(), OrderId: OrderId};
} else {
reportParameters = filters;
}
....
}
Если есть примеры

Нравится

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

Добрый день.
Механизм замещения модуля PrintReportUtilities такой же как и для других модулей:
1) в пользовательский пакет (Custom) добавить "Замещающий клиентский модуль";
2) в открывшемся дизайнере для свойства "Родительский объект" установить "PrintReportUtilities";
3) в другой вкладке открыть в дизайнере этот родительский модуль PrintReportUtilities;
4) полностью скопировать код из родительского модуля и вставить в замещенный;
5) в замещенном модуле в секцию "Dependencies" добавить зависимости аналогично родительскому модулю;
6) в замещенном модуле внести необходимые изменения в код, например, изменить реализацию метода generatePrintForm;
7) сохранить модуль и перед проверкой фунциональности очистить кэш браузера и перегрузить страницу.

Более детальная информация по разработке содержится в статьях академии, например:
https://academy.terrasoft.ua/documents/technic-sdk/7-8/osnovnye-svedeniya-o-razdele-konfiguraciya

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

Уважаемые коллеги!

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

Что делать?

Нравится

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

Если сайт локально, можете доработать файл all-combined, найти по такому кусочку
(json,
Метод декодировки и доработать его проверкой на undefined:

Если сайт не на вашей платформе, можете просто в этом методе поставить точку остановки, и два раза когда там будет заходить undefined в переменную json, присвоить ей null. После этого, пустить к настройке колонок, и после их настройки и сохранения, такая ошибка для данной детали возникать не будет.

Добрый день, Уважаемые коллеги!

Спасибо за ответ.
К сожалению, я не программист чтобы понять то, о чем Вы написали.
Если Вам не сложно, можете прислать более подробный алгоритм действий по исправлению данной ошибки:
1) Делай раз - заходи вот на эту страницу, нажимай вот на эту кнопку, вставляй вот такой код...
2) Делай два...
3) Делай три и так далее

Сайт не на нашей платформе, работаем в облачной версии.

Тогда напишите в поддержку, с указанием сайта, там все исправят в облаке.
support@terrasoft.ru

Уважаемый, Максим!

А что, было очень трудно дать более подробный алгоритм?
Я, вообще-то, к Вам обратился на Ваш очень продвинутый ответ...
Мне-то нужно попробовать самому разобраться, а не то как исправит Terrasoft ошибки Terrasoft...
Может быть, вообще, не нужно напрягаться, разбираться, обучаться, а сразу переходить на другую CRM-систему, где менеджеры более отзывчивые?...

Здравствуйте, пользователям стоит разбираться в пользовательской части. А ошибки Террасофт, стоит править сотрудникам Террасофт. Тем более не программисту будет сложно выполнить данное исправление, а в поддержке эту проблему и вовсе бы исправили для всех деталей заменой файла в облаке, что недоступно для пользователей. Но вот алгоритм, будут вопросы по какому-то из пунктов, задавайте.
1. Заходите на сайт.
2. Открываете окно отладки F12
3. В окне исходных кодов (в Firefox это к примеру, Debugger) находите файл all-combined.js
4. Иконкой {} преобразовываете его в читабельный вид, и ставите точку остановки кликом слева от строчки с if, сразу после функции в названиях которой присутствует (json, как на скриншоте в комментарии выше. Поиск по файлу Ctrl+F
5. Поставив точку останова, нажимаете на детали настроить колонки, код начинает останавливаться в точке остановки.
6. Каждый раз смотрите на переменную json, если возле неё написано undefined, пишите в консоли:
json = null
и нажимаете Enter
7. Кнопкой продолжить (F8) продолжаете выполнение кода, и так два раза, когда попадается undefined пишите json = null и снова F8.
8. Когда увидите, что на заднем фоне открылась настройка колонок, закрываете отладку (F12), настраиваете колонки, сохраняете для всех. Готово, для данной детали ошибка исправлена.

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

Коллеги, можете уточнить, как правильно подключать VisaNotificationProvider в sales enterprice 7.8? Добавила в конфигурацию исходный код для OpportunityVisaNotificationProvider, по примеру кода для счетов и заказов, но после этого визирование всех сущностей перестало работать, хотя в Журнале процессов вижу, что процессы визирования запускаются.
Что еще может потребоваться, чтобы правильно создать провайдер, кроме создания исходного кода в конфигурации для OpportunityVisaNotificationProvider?

Нравится

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

Добрый день, Анастасия!

Для рассмотрения данного вопроса, уточните, пожалуйста, проблема только с уведомлениями по визам? Или же визирование в принципе не работает?

"Злыднева Анастасия Сергеевна" написал:Добавила в конфигурацию исходный код для OpportunityVisaNotificationProvider, по примеру кода для счетов и заказов

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

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

Добрый день! В sales enterprice 7.8 необходимо в зависимости от значения в справочной колонке "Валюта" показывать одну печатную форму и скрыть другую. Как управлять видимостью печатных форм в таком случае?

Нравится

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

Здравствуйте, Анастасия!

За функционал печатных форм отвечает миксин PrintReportUtilities. Генерация коллекции печатных форм происходит в методах initCardPrintForms и initSectionPrintForms. События клика на печатных формах в секции и карточке редактирования обрабатываются в методах generateCardPrintForm и generateSectionPrintForm. Для изменения логики стандартных печатных форм необходимо заместить данные методы с добавлением пользовательской логики(фильтрации).

Как альтернативное решение, Вы можете добавить пользовательскую кнопку печати и при клике обращаться к вэб сервису напрямую. Реализацию обращения к вэб сервису для печати "Печатных форм", Вы можете посмотреть в методе generatePrintForm схемы PrintReportUtilities (NUI).

Также вопрос обсуждался здесь.

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