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

Нравится

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

Добрый день! 

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

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

Спасибо, разобрался!

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

Добрый день.

При попытке отправки письма из кастомного раздела http://prntscr.com/ihb4m0 возникает ошибка: "Не удалось отправить письмо. Значение с именем "UsrSectionTitleId" не найдено", где UsrSectionTitle - название раздела.

Id в разделе естественно присутствует, но называется не "UsrSectionTitleId" а просто "Id".

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

Нравится

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

Здравствуйте Станислав,

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

Спасибо!

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

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

Прикрепленные файлы

Нравится

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

Можно изменить метод формирования Caption на каждой схеме детали.

Описание здесь: https://community.terrasoft.ru/questions/razlicnoe-otobrazenie-detali-v…

 

Алла, здравствуйте!

Вашу задачу можно решить только с помощью разработки, в предоставленной выше ссылке есть полезные рекомендации. Подробная инструкция также была описана здесь: https://community.terrasoft.ru/questions/zagolovki-detali

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

Показать все комментарии
not exists
фильтр
EntitySchemaQuery
CreateFilterWithParameters
CreateNotExistsFilter
7.11
sales_team

Есть sql-запрос вида:

select *

from Table T

where T.ProjectId = @ProjectId

    and not exists (select * from Table T1

                    where T1.ContactId = @ContactId

                        and T1.ParameterId = T.ParameterId)

Использование метода CreateFilterWithParameters() позволяет построить параметризированный запрос, но только exists:

var esqCardBlock = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Table");

esqCardBlock.AddAllSchemaColumns();

var CardBlockFilters = esqCardBlock.Filters;                  CardBlockFilters.Add(esqCardBlock.CreateFilterWithParameters(FilterComparisonType.Equal,

                        "Project", projectId));                CardBlockFilters.Add(esqCardBlock.CreateFilterWithParameters(FilterComparisonType.Equal,

                        "[Table:Parameter:Parameter].Contact", contact));

Если же использовать CreateNotExistsFilter(), то не понятно, куда добавлять значение параметра @ContactId.

Какой всё-таки метод использовать для построения параметризированного запроса Not Exists?

Нравится

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

Алла, возможно, такое получится при помощи выставления группе фильтров свойства .IsNot = true;

Как тут:

			var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Activity");
			esq.AddAllSchemaColumns();
			esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Owner", currentUserId));
			esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Greater, "ModifiedOn", LastSyncDate));
			if (IsFirstSync) {
				esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Greater, "DueDate", Today));
			}
			esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "ShowInScheduler", true));
			var filtersByExisting = new EntitySchemaQueryFilterCollection(esq);
			filtersByExisting.IsNot = true;
			var notExFilter = esq.CreateFilterWithParameters(
				FilterComparisonType.IsNotNull,
				"[ActivityCorrespondence:Activity].SourceActivityId");
			filtersByExisting.Add(notExFilter);
			filtersByExisting.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal,
				"[ActivityCorrespondence:Activity].SourceAccount.Id", SourceAccountId));
			esq.Filters.Add(filtersByExisting);
			esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.LessOrEqual, "CreatedOn", CurrentSyncDateTime));
			var entityCollection = esq.GetEntityCollection(UserConnection);

 

Саша,

спасибо за ответ. Я тоже уже думала так сделать, попробую и напишу о результате smiley

Саша,

таким способом, как ты предложил, получилось построить нужный фильтр.

Ещё вопрос: почему в документации на академии написано, что метод CreateFilterWithParameters перегруженный https://academy.terrasoft.ru/documents/technic-sdk/7-11/dobavlenie-vych…;Что имеется ввиду?

Алла, у меня по этой ссылке нет слов «перегруженный»  и «CreateFilterWithParameters».

Ошибка, речь идет об этой ссылке: https://academy.terrasoft.ru/documents/technic-sdk/7-11/ispolzovanie-en…

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

А подскажите, пожалуйста, есть ли аналог ".IsNot = true" в entitySchemaQuery на стороне клиента?

И если нет, то как по другому в js можно построить подобный фильтр?

См. верхний ответ тут.

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

Добрый день.

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

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

Нравится

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

Добрый день, Станислав!

Опишите на примере ваш кейс. Насколько я понимаю это будет 2 разных справочника с разными значениями, так ? 

Игорь, в одном справочнике значение на одном языке во втором его эквивалент на другом.

Станислав, первое что приходит на ум это при создании справочника добавить поле, которое будет связующим. Например

1) Слово, код слова

Во втором справочнике так же

2) Слово, код слова

Где "код слова" буде одинаковым в обоих справочниках.

 

Далее с помощью бизнес процесса выполнить заполнение поля.

БП будет состоять примерно из следующих элементов: 

1) Сигнал на изменение объекта/колонки объекта

2) Чтение данных

3) Изменение данных

4) Завершение БП

Либо выполнить необходимое заполнение с помощью фильтрации

https://academy.terrasoft.ru/documents/technic-sdk/7-11/primenenie-filt…

https://academy.terrasoft.ru/documents/technic-sdk/7-11/primer-primenen…

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

Добрый день, друзья. Создал раздел "Счета" и добавил деталь "Активности Email". Теперь пытаюсь отфильтровать ее, чтобы пропускала только активности с этим типом. Но, когда я добавил фильтр метод, то деталь исчезла вообще из страницы. Прикрепил скрины. Подскажите юному падавану что он делает не так.

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

Нравится

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

Добрый день

Вы выводите все E-mail? Консоль содержит какие-либо ошибки?

 

Артем Гура,

Извините за беспокойство, забыл добавить 

BusinessRuleModule. Теперь все работает, вопрос закрыт.

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

Добрый день.

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

Например:

Категория задачи/активности "Заявка"

Шаг "Проверить наличие товаров" Результат "В наличии", "Отсутствует"

Далее в зависимости от результата - переход на следующую стадию

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

Как поправить?

Ниже скриншоты.

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

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

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

Нравится

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

Возможно ли сделать это?

Добрый день!

1. Добавить новую категорию для типа Задача.

2. Добавить результат, привязать к категории.

3. Почистить кэш.

так и делал, кроме

3. Почистить кэш.



как это сделать в облаке?

:-D

3. Почистить кэш.

Судя по отсутствию ответов, имелось в виду почистить кеш браузера, а не на сервере (REDIS). Ок принято

Кстати все заработало, спасибо.

Показать все комментарии
справочники
7.10
sales_team

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

Нравится

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

Здравствуйте, Станислав!

Удалить все значения из справочника сразу можно на уровне БД (с помощью скрипта удалить все записи из таблицы справочника). Также можно настроить бизнес-процесс, использовать элемент "Удалить данные" для того, чтоб очистить справочник полностью. Детальную информацию по работе с элементом бизнес-процесса "Удалить данные" Вы сможете найти на Академии: 

https://academy.terrasoft.ru/documents/technic-bpms/7-10/element-processa-udalit-dannye

Примечание: базовые значения справочника удалять нельзя, так как это может привести к возникновению ошибок при работе со справочниками (нарушится базовая логика приложения).

Одеяненко Юлия,

а что считается "базовым значением справочника"?

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

Добрый день, коллеги.

Возникла проблема: нужно добавить активность через элемент Добавить данные в бизнес-процессе и задать (ограничить) список возможных результатов.



Как программно ограничить возможные результаты активности ?

Можно ли для этого использовать поле AllowedResult объекта Активность и если да, то как его формировать?

Нравится

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

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

Единственная сложность - это привести в компании все активности к одним стандартам

Спасибо. Похоже, это самый легкий путь.

Рината, а зачем заводить активность таким способом? Если делать через "Добавить задачу", то можно явно указать какие результаты будут доступны и использовать условные потоки для их обработки.

Тёскин Дмитрий Валерьевич пишет:

Если делать через "Добавить задачу"

Если вы немного модифицируете объект "Активности", то через "Добавить задачу" уже мало можете сделать 

Вот сравнения двух подходов:

https://community.terrasoft.ua/questions/vypolnit-zadacu-i-dobavit-dann…



И советы по расширению "Выполнить задачу": https://community.terrasoft.ua/questions/element-biznes-processa-vypoln…

Имеем кастомную активность с дополнительными  обязательными полями, которые тоже нужно обрабатывать

 

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

Добрый день.

Такое впечатление что ошибка очень простая но не понимаю где она. Код:

define("OpportunityPageV2", ["BusinessRuleModule"], function(BusinessRuleModule) {

    return {

        entitySchemaName: "Opportunity",

        attributes: {

                "OpportunityId1": {

                    "dataValueType": Terrasoft.DataValueType.TEXT,

                    "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,

                    "value": ""

                }

            },

        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,

        diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,

        methods: {

            init: function() {

                    this.callParent(arguments);

                    this.initMeetingId();

                },

                // Метод определения идентификатора категории активности.

                initMeetingId: function() {

                    var SaleId = this.get("Id");

...............................

в SaleId при этом получается undefined....

Помогите найти ошибку.

Нравится

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