Добрый день.

А может кто подсказать возможно ли отфильтровать значения быстрого фильтра в разделе?

В разделе нажимаю на кнопку "Фильтр" ->"Добавить условие"

Выбираю "Контрагент" и выпадает список мне из всех контрагентов в системе.

А как этот список отфильтровать? Возможно ли?

Нравится

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

Здравствуйте, Евгений!

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

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

Shevchenko Andrey,

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

Сурмачевский Евгений Александрович пишет:

интересует вопрос фильтрации.

Придётся ломать модуль CustomFilterViewModelV2. В частности - функцию getLookupValueColumnList.

Ну а все мы знаем правило №1 перегрузки модуля - не перегружать модули. 

А так да, отфильтровать фильтр реально.

 Грустно все это. Спасибо.

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

Есть у меня html-поле, "contentType": Terrasoft.ContentType.RICH_TEXT - всё стандартно.

Поле у меня ReadOnly, т.е. "enabled": false

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

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

В идеале нужно - чтобы размер совпадал с содержанием.

Нравится

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

Стилями, скорее всего, просто так не справится, rowSpan также неприменим к RICH_TEXT. Попробуйте сделать это при помощи JS.

Например, на oninput тега textarea повесить обработичк размера окна.

На странице есть div с классом html-editor, измення стиль этого div (style), можно менять высоту (height), например в том же обработчике oninput. С этим и можно работать, т.к. стандартных методов изменения высоты поля для RICH_TEXT не нашел. Да, не совсем изящно, зато работает smiley

 

Сделал в итоге на jQuery, там оказывается теперь есть функция height(), которая определяет размер элемента в пикселях.

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

Изменил маску ввода электронной почты, через системную настройку «EmailPattern», после этого перестали быть доступны все данные по Контрагентам, Контактам, Договорам и Системные настройки. Как исправить ситуацию? Спасибо

Нравится

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

Здравствуйте, Юрий!



Уточните, пожалуйста, Ваш кейс:

- все данные не доступны или только некоторые?

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

- какое значение системной настройки Вы установили?

Анна Журавель,

Добрый день, Анна!

- данные недоступны все

- не отображаются в реестре

- работал с системной настройкой «EmailPattern», пробовал разные варианты

Здравствуйте, Юрий!



Для решения этой проблемы, обратитесь в службу поддержки Terrasoft, написав нам на почтовый ящик support@terrasoft.ru

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

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

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

Никаких дополнений в код секции не вносилось. Версия 7.11.2 Sales Enterprise + Marketing

Нравится

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

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

 

Данная проблема была решена в версии 7.12.0 

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

А есть ли способ проще? Например, сделать замещающую схему и что-то в нее внести?

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

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

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

Добрый день, хотел попросить уточнить что именно нужно сделать чтобы, WorkspaceConsole перестал при Update и Build, засорять логами папку Pkg.

https://academy.terrasoft.ru/documents/technic-sdk/7-12/nastroyka-utili…

Сказано что нужно всего то убрать:

  • SharpPlink-x64.svnExe;
  • SharpSvn.dll;
  • SharpSvn-DB44-20-x64.svnDll.

Но он тогда отказывается работать с ошибкой:

Ошибка: Could not load file or assembly 'SharpSvn, Version=1.8009.3299.43, Culture=neutral, PublicKeyToken=d729672594885a28' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
Ошибка: Could not load file or assembly 'file:///XXX\Terrasoft.WebApp\DesktopBin\WorkspaceConsole\x64\SharpSvn.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
Работа утилиты закончена.

Если я конечно правильно понял, кто виновен в создании таких папок:

\Terrasoft.WebApp\Terrasoft.Configuration\Pkg\MyPackage\Schemas\ContactPageV2\Logs...

Ранее в 7.10 не было такого

Нравится

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

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

На странице SDK указано, что в случае выполнения операций с SVN эти файлы нужно скопировать, но никак не удалять:)

Папка о который вы говорите является файловым контетом, более детально описано по ссылке:

https://academy.terrasoft.ru/documents/technic-sdk/7-12/ispolzovanie-fa…

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

Коллеги, здравствуйте! 

Хотелось бы уточнить какие методы есть для отката системы в случае диверсии со стороны администратора CRM?

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



Спасибо!

Нравится

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

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

Методов для отката системы на уровне приложения нет. Как вариант, вы можете настроить журнал изменений, по интересующим вас объектам, он зафиксирует какие изменения были сделаны и от какого пользователя:

https://academy.terrasoft.ru/documents/sales-enterprise/7-11/razdel-zhu…

Рекомендую настроить резервное копирование БД по расписанию, это позволит минимизировать возможные проблемы с потерей данных.

 

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

Приветы, в дизайнере страницы добавил "текстовое поле".

Как при выборе из справочника в другой детали (деталь выбор из справочника) значения, чтобы в "текстовое поле" установить значение на основе работы какой-то функции, которая через бд получит значение и запишет в это "текстовое поле"

 

 

Нравится

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

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

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

Больше информации о настройке бизнес-процессов - на Академии: https://academy.terrasoft.ru/documents/technic-bpms/7-11/obzor-funkcionalnosti-biznes-processov-v-bpmonline

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

 

Спасибо, пока не понимаю как сделать, могли бы вы более конкретно подсказать, заранее спасибо. Как заставить биз процесс читать/слушать изменение в детали-комбобоксе и функцией менять значение в текстовой детали

QArt,

Алгоритм примерно следующий:

- стартовый сигнал - "Получен сигнал от объекта", какой объект - объект детали, событие - добавление записи (пример - http://prntscr.com/iudrkj)

- элемент "Читать данные", читать данные первой записи объекта детали, сортировка по убыванию колонки "Дата создания", значение только той колонки, которая будет транслироваться (пример - http://prntscr.com/iudxeb)

- элемент "Изменить данные" объекта, в котором нужно автоматически заполнять поле, изменить ту запись, на которой находится деталь, изменить значение Вашего кастомного поля параметром процесса, вычитаном в предыдущем элементе (пример - http://prntscr.com/iudwk1).

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

Спасибо. Если мне нужно в деталь "текстовое поле" писать расчетное значение, которое должно рассчитываться на событие "изменение значения в детали". Но в расчете Значение = "значение из детали" + в зависимости от типа указанного в сущности "значение из детали" то есть как-то запросом подгребать. И, увы, в бд поле есть у объекта, а в конструкторе в биз процессе поле выбрать нельзя, хотя деталь есть в интерфейсе пользователя, странно все это... 

 

Может попробовать как-то через атрибуты 

"aMetro": {

                        dependencies: [

                            {

                                columns: [ "WorkAddr" ],

                                methodName: "calcMetro"

                            }

                        ]

                    }

в calcMetro через esq получить метро и вписать его в деталь -  "текстовое поле" можно такой пример?

У меня опыта мало в ковырянии динозавра :)

QArt,

Разобрался, узнаю новое и странное. Почти сделал

getFullAddressFromVacancy: function (Id) {

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

                            rootSchemaName: "AccountAddress"

                        });

                        esq.addColumn("Id");

                        esq.addColumn("Address", "Address");

                        esq.addColumn("AccountAddress.SxSubwayStation.Name", "MetroName");

                        esq.addColumn("AccountAddress.City.Name", "CityName");

                        esq.filters.add("VacancyCandidateFilter222", this.Terrasoft.createColumnFilterWithParameter(

                            this.Terrasoft.ComparisonType.EQUAL,

                            "Id", Id));

                        esq.getEntityCollection(function (response) {

                            if (response.success && response.collection.getCount() == 1) {

                                var entity = response.collection.getByIndex(0);

                                var addr = entity.get("Address");

                                var city = entity.get("CityName");

                                var metro = entity.get("MetroName");

                                var add = '';

                                if (city != undefined && city != 'Москва')

                                  add += city + ', ';

                                if (metro != undefined)

                                  add += metro + ', ';

                                if (addr != undefined)

                                  add += addr;

                                this.log('Add = ' + add);

                                this.set("BpMetroAutoFill", add);

                            }

                        }, this);

                }

В консоли хрома вижу что столбцы, кроме Address пишутся isNotFound. 

Делал согласно https://academy.terrasoft.ru/documents/technic-sdk/7-8/poluchenie-rezul…

EntitySchemaQuery умеет довыгребать AccountAddress.SxSubwayStation.Name в таблице AccountAddress есть столбец SxSubwayStationId

Аналогично с City.

Что не так делаю, подскажите плиз?

Добрый день.

Таблицу AccountAddress вы указываете в rootSchemaName. Тоесть, при добавлении колонки из AccountAddress, не нужно указывать название этой таблицы. Нужно указывать именно поле из этой таблицы, например SxSubwayStation.Name.

Demchenko Olha,

Оля, спасибо, помогло! 

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

Добрый день!

Столкнулись со странным поведением системы. 

Создали разветвленный процесс с элементом "Исключающее или", в процессе создается активность, у которой указывается результат выполнения.

Если процесс создавать в соответствии с правилами нотации BPMN 2.0 (рис.1.), то в активности не отрабатывает фильтр результатов, и отображаются все результаты. 

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

Опытным путем пришли к решениям, которые не в полной мере соответствуют нотации, но работают. (рис.2 и рис.3)

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

 

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

Варианты представленные на рис. 2 и рис.3  нас не устраивают,  по причине что процесс у нас более сложный, чем эти схемы.

Кто-то сталкивался с такой особенностью? Как можно объяснить такое поведение системы?

 

 

Нравится

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

Николай, здравствуйте!

Связано с тем, что потоки после шлюза ИЛИ (в данном случае поток по умолчанию) считаются процессом потоками Активности. Если для активности указан поток по умолчанию, то отображаются вместо кнопок выпадающий список результатов.

Ошибка исправлена в версии 7.12, для исправления точечно можно заменить последний поток на условный, как показано на скрин3, указав в потоке true.

Логвин Андрей Витальевич,

Андрей, спасибо за ответ. 

Можете еще подсказать?

Если на скрине3 после условного потока будет не завершение процесса, а другие элементы, в том числе и логические, то этот true нужно будет протаскивать до завершения процесса? или достаточно будет в одном месте после ИЛИ?

Шувалов Николай Юрьевич,

Влияют именно исходящие потоки из шлюза, тянуть по всему процессу не нужно.

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

Добрый день.

Есть код фильтра:

define("PriceListReportFilter", ["PriceListReportFilterResources", "ConfigurationConstants"],
	function(resources, ConfigurationConstants) {
		var config = [
			{
				name: "Kind",
				caption: resources.localizableStrings.Kind,
				dataValueType: "LOOKUP",
				columnName: "Kind",
				parameterName: "KindId"
			},
			{
				name: "Name",
				caption: resources.localizableStrings.Name,
				dataValueType: "LOOKUP",
				columnName: "ParentProduct",
				parameterName: "ID"
			}
		];
		return config;
	});

Существует ли способ выбора нескольких записей из справочника?

 

Нравится

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

Добрый день.

Можно. Например, в расширенном фильтре при выборе значения для сравнения, вызывается метод «Open» из «LookupUtilities», в config прописывается свойство «multiSelect». Можно посмотреть, как это реализовано там.

VladKapitanchyk,

ReportFilterModule хардкодом ставит multiSelect: false, поэтому в LookupUtilities уже попадает false.

Петроченко Максим,

В LookupUtilities передается конфиг (который не харкодится LookupUtilities ) на основании которых он работает, в справочном поле по умолчанию передается конфиг в котором стоит «multiSelect:false». Вам не кто не мешает в реализации своего поля вызвать LookupUtilities, и передать ваш конфиг.

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

Здравствуйте! Не могу найти пример как на C# использовать оператор CASE для такого запроса:

SELECT

    CASE

        WHEN ClosureDate IS NOT NULL THEN ClosureDate

        ELSE ScheduledClosureDate

    END AS EndDate

FROM Change

Нравится

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

 

QueryCase queryCase = new QueryCase();
//,CASE WHEN su.SxPhone != '' then  su.SxPhone else ResultSelect.MobilePhone end 
QueryCondition queryCondition = new QueryCondition(QueryConditionType.NotEqual) {
	LeftExpression = new QueryColumnExpression(Column.SourceColumn("su", "SxPhone"))
};
queryCondition.RightExpressions.Add(Column.Parameter(string.Empty));
queryCase.AddWhenItem(queryCondition, Column.SourceColumn("su", "SxPhone1"));
 
queryCase.ElseExpression = new QueryColumnExpression(Column.SourceColumn("ResultSelect","MobilePhone"));
 
 
var sel = (new Select(UserConnection)
			//.Top(1)
			.Column(queryCase)
			.From("Account")
 
 
            ) as Select;

 

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

спасибо за пример!

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