В системе по умолчанию в типе колонки "Справочник" стоит максимальное значение 15. Нужно увеличить его до 40, как можно это сделать?

Нравится

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

Новая задачка. Был раздел Продажи, его никто давно не запускал и не пользовался долгие годы. Сейчас его задействовали и оказалось что деталь продуктов в продаже не работает. Дебагер не появляется, вместо него:

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

(E)     Невозможно редактировать сервис 'Opportunities\Details\Offerings\wnd_OfferingInOpportunityDetailEdit'. Window 'wnd_OfferingInOpportunityDetailEdit'. Компонент с именем 'edtQuantity' уже существует «Call Stack»

Удаление кеша - не помогло.
После нескольких попыток открыть решил проверить на других базах, сначала на рабочей, а потом на бекапе(самый ранний) - ошибка не пропала. Решил перезалить сервис с другой бд(другого клиента), при загрузке появляется ошибка(картинка выше)....
Получилось удалить сервес, но залить новый(рабочий), с другой бд не получилось - ошибка.

Нравится

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

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

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

Укажите какой продукт используете (CRM, XRM, Sales ...), а также прикрепите файл сервиса (сервис окна и сервис скрипта) который вызывает данную проблему.

XRM, при выгрузке сервиса выбивает ошибка

(E)     Невозможно редактировать сервис 'Opportunities\Details\Offerings\wnd_OfferingInOpportunityDetailEdit'. Window 'wnd_OfferingInOpportunityDetailEdit'. Компонент с именем 'edtQuantity' уже существует «Call Stack»

Прикрепил сервисы для продукта Terrasoft XRM версии 3.4.130

Хочу обратить внимание, что окно wnd_OfferingInOpportunityDetailEdit наследуется от окна wnd_OfferingDetailEdit.

Возможно в окне wnd_OfferingInOpportunityDetailEdit был удален компонент edtQuantity, а затем добавлен, что привело к изменению ID компонента и появлению проблемы с окном редактирования.

"Терещук Павел" написал:Возможно в окне wnd_OfferingInOpportunityDetailEdit был удален компонент edtQuantity, а затем добавлен, что привело к изменению ID компонента и появлению проблемы с окном редактирования.

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

В архиве присутствует два сервиса окна, загрузите их оба.
Сначала откройте сервис окна wnd_OfferingDetailEdit, затем сервис окна wnd_OfferingInOpportunityDetailEdit

"Терещук Павел" написал:Сначала откройте сервис окна wnd_OfferingDetailEdit, затем сервис окна wnd_OfferingInOpportunityDetailEdit

это уже проблемно, так как wnd_OfferingDetailEdit уже давно не похож на начальный образец.
ваш сервис перезапишет данные.
да и wnd_OfferingDetailEdit работает в норме

Сохраните свои сервисы wnd_OfferingDetailEdit, src_OfferingDetailEdit. После чего загрузите мои прикрепленные сервисы. Если после этого проблема исчезнет, значить проблема находится в сервисе wnd_OfferingDetailEdit.

Может в сервисе wnd_OfferingDetailEdit изменился идентификатор компонента, и по этой причине окно сервиса _OfferingDetailEdit не открывается.

Ооо, проблема решена, изменил местоположение поля edtQuantity(переместил на старое место в блок итогов), на старое место и сервис wnd_OfferingInOpportunityDetailEdit начал работать без ошибок

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

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

Добрый день!

Как в новом подходе смены стадии (версии 7.8) можно некоторые стадии сделать недоступными в зависимости от некоторых условий (заполненность полей или наличие определенных данных)?
Также, как сделать недоступными некоторые кнопки в Case (например, невозможность Resolve при незаполненности Solution)?

Было бы хорошо при этом еще выдавать информацию, что именно мешает выполнению данной стадии

case state

Нравится

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

Это новый компонент - ActionsDashboard
Вам нужно заместить его схему и добавить свою логику
Подробности - в документации разработчика
https://academy.terrasoft.ru/documents/technic-sdk/7-8/dobavlenie-instr…
https://academy.terrasoft.ru/documents/technic-sdk/7-8/dobavlenie-novog…

"Симута Роман Русланович" написал:Подробности - в документации разработчика

Спасибо за прогнозируемый ответ.

Но документацию изучили. Про добавление нового канала вопрос не стоял.

В первой же статье говорится только про добавление ActionsDashboard. Именно к ней я и задал уточняющий вопрос - Как в новом подходе смены стадии (версии 7.8) можно некоторые стадии сделать недоступными в зависимости от некоторых условий (заполненность полей или наличие определенных данных)?

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

Подскажите, пожалуйста, Вы нашли решение этой проблемы?

Плотников ДИ,

Нет, сделали валидацию при сохранении. Конечно, неудобно, но работает

"Спасибо за прогнозируемый ответ." - тонко)

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

Добрый день!

Есть желание увеличить быстродействие системы. Выполняю запрос по поиску полей таблиц к которым существует много запросов, но на них нет индексов. И одна из таблиц выпадает AccountCommunication [Средства связи Юр. лиц]. Сам объект унаследовал структуру от объекта [Базовое средство связи]. Так вот получается, что в базовом объекте нет индексов на основные поля для поиска, такие как Id,[Position]. Есть какая-то причина отсутствия индексов на этих полях или их можно создать?

Нравится

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

И как все-таки будет правильно, добавить индекс на базовый объект или в тот который унаследовал? Или при добавление в унаследованный объект в базовый он добавится автоматически?

Анастасия, с точки зрения БД родительский и дочерний объекты — это 2 разных таблицы. Следовательно, средствами Management Studio можно добавлять в дочернюю таблицу индексы, если в ходе анализа выяснилось, что это может увеличить производительность.
Сомневаюсь, что на Id стоит добавлять индекс, ведь это и так первичный ключ. А на второе — можно попробовать.

"Зверев Александр" написал:

Анастасия, с точки зрения БД родительский и дочерний объекты — это 2 разных таблицы. Следовательно, средствами Management Studio можно добавлять в дочернюю таблицу индексы, если в ходе анализа выяснилось, что это может увеличить производительность.

Сомневаюсь, что на Id стоит добавлять индекс, ведь это и так первичный ключ. А на второе — можно попробовать.


Вот и мне не понятно... Индекс уникальный некластеризованый в БД на Id стоит, а приложение показывает, чтот у этого объкта на этом поле нет индекса.

Смотрите на уровне БД, там вернее. Колонка Id в любой таблице bpm'online — первичный ключ. Возможно, поэтому её явно и не показывает как индекс.

"Астапеева Анастасия" написал:Есть желание увеличить быстродействие системы.

Желание или необходимость? :smile:

"Астапеева Анастасия" написал:Так вот получается, что в базовом объекте нет индексов на основные поля для поиска, такие как Id,[Position].

не думаю что поле Position - подходящая кандидатура для построения индекса (если я правильно понимаю, это порядковый номер в рамках 1 контрагента?)... кардинальность большая. Индексы хорошо строить по колонкам с практически уникальными значениями (опять же, если СУБД потом будет их использовать).

По-идее индекса по Id и AccountID должно быть вполне достаточно.

Индексов побольше налепить конечно никто не мешает, но будет ли достигнута цель - увеличить быстродействие... а то можно и наоборот сделать, индексы это не бесплатное приложение к таблице.

В общем, есть впечатление что не тут копаете, Анастасия... Могу посоветовать книгу, правда на английском... но может и русские версии уже есть: SQL Server 2008 Query Performance Tuning Distilled (2009)
версия СУБД может и немного старовата, но для CRM систем более чем сгодится.

"komgbu" написал:

Желание или необходимость? :smile:

В общем, есть впечатление что не тут копаете, Анастасия... Могу посоветовать книгу, правда на английском... но может и русские версии уже есть: SQL Server 2008 Query Performance Tuning Distilled (2009)

версия СУБД может и немного старовата, но для CRM систем более чем сгодится.

Именно желание. Спасибо большое за книгу и совет.

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

Коллеги, доброго времени суток.

Создали деталь с редактируемым реестром, всё по примеру: https://academy.terrasoft.ru/documents/technic-sdk/7-8/sozdanie-detali-s... + к детали добавлен выбор из справочника.

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

Версия 7.8.

Заранее спасибо за ответ.

Нравится

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

Здравствуйте
Нужно в схеме детали для этой колонки установить свойство "enabled": false

Роман, здравствуйте! Можете пояснить - вот например, массив модификаций в схеме детали с редактируемым реестром:

// Массив модификаций.
            diff: /**SCHEMA_DIFF*/[
                {
                    // Тип операции — слияние.
                    "operation": "merge",
                    // Название элемента схемы, над которым производится действие.
                    "name": "DataGrid",
                    // Объект, свойства которого будут объединены со свойствами элемента схемы.
                    "values": {
	                    "className": "Terrasoft.ConfigurationGrid",
	                    "generator": "ConfigurationGridGenerator.generatePartial",
	                    "generateControlsConfig": {"bindTo": "generatActiveRowControlsConfig"},
	                    "changeRow": {"bindTo": "changeRow"},
	                    "unSelectRow": {"bindTo": "unSelectRow"},
	                    "onGridClick": {"bindTo": "onGridClick"},
	                    "activeRowActions": [
	                            {
	                                    "className": "Terrasoft.Button",
	                                    "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
	                                    "tag": "save",
	                                    "markerValue": "save",
	                                    "imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
	                            },
	                            {
	                                    "className": "Terrasoft.Button",
	                                    "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
	                                    "tag": "cancel",
	                                    "markerValue": "cancel",
	                                    "imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
	                            },
	                            {
	                                    "className": "Terrasoft.Button",
	                                    "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
	                                    "tag": "remove",
	                                    "markerValue": "remove",
	                                    "imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
	                            }
	                    ],
	                    "initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
	                    "activeRowAction": {"bindTo": "onActiveRowAction"},
	                    "multiSelect": {"bindTo": "MultiSelect"},
	                    "type": "listed",
			    "listedConfig": {
			    "name": "DataGridListedConfig",
							"items": [
								{
									"name": "UsrRoomNameLinkListedGridColumn",
									"bindTo": "UsrRoomNameLink",
                                                                        "enabled":false, 
									"position": {
										"column": 1,
										"colSpan": 10
									}
								},
								{
									"name": "UsrRoomsCountListedGridColumn",
									"bindTo": "UsrRoomsCount",
									"position": {
										"column": 11,
										"colSpan": 5
									}
								}
							]
						},
	            	}
                }
            ]/**SCHEMA_DIFF*/

UsrRoomNameLink - название той самой колонки, для которой требуется запретить редактирование. Если я там указываю enabled:false - это не срабатывает.

Попробуйте на том месте
"values": { "enabled":false}
только с запятой

Роман, всё равно не помогло.

Роман, всё равно не помогло.

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

Денис, колонку можно (и нужно) сделать недоступной для редактирования на странице редактирования детали.
Посмотрите как это реализовано в детали "Продукт в заказе" (OrderProductDetailV2). Реализация недоступности поля для редактирования происходит в OrderProductPageV2.

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

"Смородинов Денис" написал:OrderProductDetailV2

Денис, подскажите как?

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

Добрый день.
Не совсем понятен механизм использования параметра placeholder в страницах редактирования, в частности интересует использование для элементов преднастроенной страницы (PreconfiguredPageV2)?

Нравится

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

Альтернативный вопрос.
Как Lable поля отобразить не слева, а над полем, как у элеметов в ProfileContainer страницы CasePage?
Изображение

Здравствуйте, за такое поведение элементов в левой панели ответственны css стили, среди которых, в частности:
display: inline-block;
text-align: left;
padding-left: 1px;
Написанные под селектором .left-modules-container и некоторыми доп. условиями в разных вариациях в BasePageV2CSS.
Вы можете дописать такие же стили, или другие, для своих элементов, подключив пользовательские стили, и написав их на удобных вам в вашей ситуации селекторах.

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

Здравствуйте. Есть две даты. Первая это дата регистрации клиента а вторая - это дата первого звонка клиенту. В БП хочу вычислить сколько секунд уходит на то чтобы связаться с клиентом после регистрации. Для этого нужно посчитать эти секунды.

Когда я отнимаю от второй даты первую , то получаю параметр типа Timespan. И не могу его записать не в дату не у время в параметрах БП. То в какой параметр мне его можна записать?

Короче, вопрос в том. что мне нужно получить целое значение в секундах этого времени и записать в карточку контакта. Есть идеи как это реализовать?

Нравится

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

Для структуры TimeSpan есть свойство TotalSeconds

ps поправил

Кажется, у TimeSpan есть свойство TotalSeconds

Да, есть но как его записать например в параметр t в БП.
И какого оно будет типа?

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

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

Добрый день!

Подскажите, каким образом можно добавить пункты в меню, которые выпадает по кнопке "Три точки" в детали? В частности, "участники активности"?
Надо оперативно менять поле, отображаемое на детали.

Нравится

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

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

Сделайте деталь редактируемой.
Пример реализации доступен по ссылке:
https://academy.terrasoft.ru/documents/technic-sdk/7-8/sozdanie-detali-…

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

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

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

Нравится

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

"Дашкевич К." написал:но нужно что бы по нажатию выводились все

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

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

Из конфигурации изменить количество записей в выпадающем списке нет возможности. Ограничение задано в файлах ядра (конкретно в схеме listview.js).

Алексей, если изменить в этом файле, что нужно сделать что бы сайт подхватил изменения?

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

А как заместить listview.js его нету в конфигурации, он лежит в папке с сайтом?

"Дашкевич К." написал:

А как заместить listview.js его нету в конфигурации, он лежит в папке с сайтом?

Я же написал, что это файл ядра. Все файлы ядра лежат в папке с сайтом.

"Дашкевич К." написал:

Алексей, если изменить в этом файле, что нужно сделать что бы сайт подхватил изменения?

Внести исправления в файл, перезапустить сайт/пул. Если исправления не подтянулись, тогда переименовать файл listview.js на listview_.js (например), перезапустить сайт/пул, переименовать в назад на listview.js перезапустить сайт/пул.

Исправления подтянутся.

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

А какой параметр влияет на количество записей выводимых  в списке простой фильтрации раздела по справочному полю?

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

В sys-settings.js есть константа lookupRowCount. Именно она влияет на количество записей. Это js ядра, но сама константа записывается в глобальный объект Terrasoft.SysSettings.

Единственный, менее "кривой" вариант - это изменить значение в глобавльном объекте:

      Terrasoft.SysSettings..lookupRowCount = 20

Учитывайте то, что изменения применятся ко всем lookup полям в системе

 

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

Коллеги, доброго времени суток.

Задача состоит в следующем: есть страница Объекта недвижимости, на которой есть деталь "Строения" (со страницей добавления).

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

Необходимо скопировать туда и данные детали, отобразить колонки.

Как это возможно сделать? Я могу вытащить данные строений Объекта при помощи EntitySchemaQuery, но как правильно их подставить? InsrertQuery, насколько я понимаю, здесь не подходит - он сразу создаёт запись в базе, а существует вероятность, что пользователь не сохранит страницу Предложения после копирования.

Версия 7.8 sales.

Спасибо.

Нравится

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

На странице Предложения , после инициализации this.set ("Имя_поля_страницы")= значение;

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

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

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