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

Нравится

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

Если "копнуть" и посмотреть, как работает ShowBodyMask, то можно увидеть, что маска применяется к элементу, переданному в конфиге. Если таковой не указан, то к body. Потому для решения Вашей задачи достаточно примерно такой конструкции:

this.showBodyMask({
	selector: "#MiniPageContentContainer"
});

 

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

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

ч 

Жмурко Сергей Николаевич,

Есть мини карточка, есть вызов сервиса и ожидание его ответа

. Пока ожидаем, нужно заблокировать карточку от изменений (как это делаем в обычных карточках "MaskHelper.ShowBodyMask()"). Но при вызове "MaskHelper.ShowBodyMask()" блокировку и затенение получаем за миникарточкой а не поверх нее.

Если "копнуть" и посмотреть, как работает ShowBodyMask, то можно увидеть, что маска применяется к элементу, переданному в конфиге. Если таковой не указан, то к body. Потому для решения Вашей задачи достаточно примерно такой конструкции:

this.showBodyMask({
	selector: "#MiniPageContentContainer"
});

 

Если нужно заблокировать и кнопки, то id будет уже AlignableMiniPageContainer

Лопатин Константин,

спасибо большое. В принципе так и пробовал, но упустил что нежно еще слово "Container"

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

После установки дополнения "Contact connections chart for Creatio" на вкладке "Who knows who" не отображаются данные указанные на детали "Взаимосвязи".

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

Нравится

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

У вас указано, что система версии 7.17.

С версии 7.17.0 новый же дизайнер взаимосвязей, где кардинально была изменена логика работы и хранения взаимосвязей.

Дата последнего обновления дополнения "Contact connections chart for Creatio": 27.10.2020

Скорее всего дополнение не поддерживает новую структуру взаимосвязей.

Олег,

 

обратите внимание, что это приложение совместимо только с СУБД MS SQL. Скорее всего установили приложение на несовместимый сайт.

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

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

Есть ли какой то способ свести возникновение таких ошибок к минимуму?

Нравится

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

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

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

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

Т.е к примеру у нас в поле есть контрагент А и я на вебсервисе заполняю код тоже контрагентом А

А обходить это стоит проверкой на соответствие  полей по типу A != A или проверкой на null?



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

Не совсем понял, что Вы делаете. При редактировании записи ошибка со внешними ключами может быть, если в справочное поле пишут Id несуществующей в справочнике записи. При добавлении, помимо этого, ошибка, если пытаются вставить две записи с одинаковым Id. Это не зависит, осуществляется ли вставка в клиентской логике, серверной, в БП или по интеграции. В итоге всё равно это всё превращается в SQL-запросы к базе.

Ошибки со внешними ключами могут быть только в одном случае. В колонку сохраняется Id объекта не того, на который смотрит колонка. Например в есть колонка справочного типа Контрагент, а пытается подставиться идентификатор контакта или заказа.

Чтобы такого не было нужно при создании логики (JS, C#, БП) внимательно следить за такими случаями, и не устанавливать какие-попало значения в колонки.

Так же один из самых частых случаев - это когда пытаются установить пустой идентификатор в значение колонки. Важно помнить, что Guid.Empty и null - это разные вещи. Поэтому перед установко желательно всегда делать проверку на Guid.Empty.

Владислав Литвинчук пишет:

Ошибки со внешними ключами могут быть только в одном случае. В колонку сохраняется Id объекта не того, на который смотрит колонка.

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

Владислав Литвинчук,

А если ошибка всё равно возникает? В условии для обновления записи смотрю на пришедшее поле FK, и если оно пустое, то не должно заполняться. Логика простая в условии: if (!моеПоле.Equals(Guid.Empty))

При этом считывание происходит из select запроса с явным подставлением Guid: .ExecuteScalar<Guid>();

Но вот у меня условие всё равно не срабатывает, ведь если оно пустое, то я просто не делаю обновление данного поля (или каких-либо других справочных полей), но ошибка по FK падает

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

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



В секции сделал аттрибут 

 

"qrtVisibleProcessAndSection":{
				type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				dataValueType: Terrasoft.DataValueType.BOOLEAN,
				value: false
			},

в инит сделал подписку на сообщение, где изменяю значение аттрибута

 

init:function(){
				this.callParent(arguments);
				this.sandbox.subscribe("setSectionActionGetDataVisible",  function(args){
					this.console.log("1232323232" + args);
					this.$qrtVisibleProcessAndSection = args
 
				}, this, ["qrtEstimate1Section"]);
			},

я попытался сделать getAction и привязать к нему видимость 

 

getActions: function() {
 
				var actionMenuItems = this.callParent(arguments);
				actionMenuItems.addItem(this.getButtonMenuItem({
					"Caption": "Получить данные с сайта",
					"Tag": "callProcesIntegrationSite",
					"Visible": {bindTo: "qrtVisibleProcessAndSection"},
					"Enabled": true
				}));
				return actionMenuItems;
			},

Проблем с принятием сообщения нету(выше код для секции)

Может есть пример , где подобное реализовано

 

Нравится

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

Dima Avdoshin,

getAction и getSectionAction никак не связаны. getAction это функция в карточке и при биндинге используется локализуемые строки схемы карточки.

getSectionAction это функция в разделе в разделе и при биндинге используется локализуемые строки схемы разделе.

Код этих функций работает независимо.

Код карточки и раздела тоже не имеет связи между собой.

 

Чтобы скрыть при открытий карточки. В карточке в init или onEntityInitialized делает отправку сообщения. В реестре делаете подписку на это сообщение. При получении сообщения меняете значение атрибута. Видимость действия в разделе вещаете на атрибут.

Так есть проблема или нет?

проблема

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

Dima Avdoshin,

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

Полозюков Евгений Петрович,

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

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

Полозюков Евгений Петрович,

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

в getAction добавил 

actionMenuItems.addItem(this.getButtonMenuItem({

                    "Caption": "Получить данные с сайта",

                    "Tag": "callProcesIntegrationSite",

                    "Visible": {"bindTo": "qrtVisibleProcessAndSection"},

                    "Enabled": true

                }));



в getSectionAction добавил

actionMenuItems.addItem(this.getButtonMenuItem({

                    "Caption": {"bindTo": "qrtGetDataSite"},

                    "Tag": "callProcesIntegrationSite",

                    "Visible": true,

                    "Enabled": true

                }));

По названию они идентичны, просто у одного локализируемая строка,это баг или это часть функционала?

Dima Avdoshin,

getAction и getSectionAction никак не связаны. getAction это функция в карточке и при биндинге используется локализуемые строки схемы карточки.

getSectionAction это функция в разделе в разделе и при биндинге используется локализуемые строки схемы разделе.

Код этих функций работает независимо.

Код карточки и раздела тоже не имеет связи между собой.

 

Чтобы скрыть при открытий карточки. В карточке в init или onEntityInitialized делает отправку сообщения. В реестре делаете подписку на это сообщение. При получении сообщения меняете значение атрибута. Видимость действия в разделе вещаете на атрибут.

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

Подскажите как посмотреть в истории кто удалил объект  (не можем найти в новом интерфейсе конфигурации).

в старой конфигурации это называлось журнал изменений 

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

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

Нравится

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

Dima Avdoshin,

В блоке [Пользователи и администрирование], но работать с ним, на мой взгляд, не так удобно, как в старом интерфейсе:

Журнал изменений показывает данные изменения полей объекта по которым включено журналирование. Если у вас в лиде нет журналируемых полей, то никаких данных вы не увидите.

вопрос стоял вообще иначе, скрин для наглядности , я не могу найти этот журнал в новой конфигурации

Dima Avdoshin,

В блоке [Пользователи и администрирование], но работать с ним, на мой взгляд, не так удобно, как в старом интерфейсе:

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

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

Нравится

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

Истории удаленных записей нет. Пишите свое логирование если вам нужен такой функционал.

Истории удаленных записей нет. Пишите свое логирование если вам нужен такой функционал.

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

Добрый день

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

я сделал следующее

Код самой кнопки

//кнопка
{
				"operation": "insert",
				"name": "ProcessButton",
				"values": {
					"itemType": 5,
					"style": "green",
					"caption": "Добавить Контакта и Контрагента",
					"click": {
						"bindTo": "onLeadManagementSectionButtonClick1"
					},
					"visible": {
                       //привязка атрибута отвечающего за видимость кнопки
						"bindTo": "ButtonVisible"
					}
				},
				"parentName": "LeftContainer",
				"propertyName": "items",
				"index": 8
			},

Код аттрибута видимости

 

"ButtonVisible": {
				"dataValueType": Terrasoft.DataValueType.BOOLEAN,
				"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				"value": false
			},

Метод отвечающий за изменение значения аттрибутта

 

setButtonVisible: function() {
 
 
				var qualifiedContact = this.get("QualifiedContact");
				var qualifiedAccount = this.get("QualifiedAccount");
 
				if(qualifiedContact && qualifiedAccount){
 
					this.set("ButtonVisible", false);
 
				}else{
					this.set("ButtonVisible", true);
				}
			},

аттрибут на изменение колонки контакта или контрагента

 

"buttonVisibleCreateContactAndAccount":{
				"dependencies": [
					{
						"columns": ["QualifiedContact","QualifiedAccount"],
						"methodName": "setButtonVisible"
					}
				]
			},

Когда я захожу просто в карточку раздела,(двоиным кликом в реестре) то метод, который я написал выше, вызывается и присваивает true значению аттрибута, если одно из полей не заполнено, но при этом если я заполню эти два поля, то аттрибут перейдет в false  и все равно оставит видимой кнопку

НО если я обновлю страницу, то вся логика начинает отрабатывать нормально и реагировать на изменения

Нравится

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

Посмотрите комментарий в теме по ссылке, там описано решение. Проблема заключается в "совмещенном режиме"

https://community.terrasoft.ru/questions/dinamecheskaoe-izmenenie-aktiv…

Посмотрите комментарий в теме по ссылке, там описано решение. Проблема заключается в "совмещенном режиме"

https://community.terrasoft.ru/questions/dinamecheskaoe-izmenenie-aktiv…

Трефилов Павел Сергеевич,

кнопку мне тоже получается делать в section?

а в странице редактирования вешать метод, который отвечает за изменение состояния

 

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

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

Добрый день, возникла необходимость узнать путь до директории с dll  файлами(внешние сборки, которые я загружаю), мне это необходимо. что бы закинуть идущий с библиотекой .dep  файл в нее, но вот найти не могу, где такое находится 

Нравится

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

Файлы внешних сборок лежат в папке пакета .\Assemblies\

Находите путь куда к вашим свн пакет и в самом пакете эту папку там будет .dll

Файлы внешних сборок лежат в папке пакета .\Assemblies\

Находите путь куда к вашим свн пакет и в самом пакете эту папку там будет .dll

Полозюков Евгений Петрович,

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

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

в информации об ошибке предлагается 

Trying to load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\company\0\249501fa\2a0a463a\assembly\dl3\a10a36bd\file.dep



Но вот последний путь я не могу найти, что бы сообщить его СП

Только через поддержку.

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

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

в метаданных объекта тоже не нашел такой ключ

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

Нравится

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

Dima Avdoshin,

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

Надо смотреть таблицы SysModule, SysModuleEdit, SysModuleEntity, что там не так с вашим разделом.

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

Можете установить пакет "Custom" текущим и попробовать зайти в мастер. Если ошибке не будет, то это ваш случай

Сломали значит раздел. Подробней опишите последовательность действий и проблему.

Полозюков Евгений Петрович,

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


 

Дмитрий А.,

нет, не вышло

Dima Avdoshin,

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

Надо смотреть таблицы SysModule, SysModuleEdit, SysModuleEntity, что там не так с вашим разделом.

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

К нам приходит входящее письмо, но приходит заголовок в не правильной кодировке, после смены почтового клиента на .net

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

Нравится

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

Анастасия, что значит «после смены почтового клиента на .net»?

Зверев Александр, раньше был yandex  и все было норм, сейчас outlook и приходит вот это

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

Письма с некорректной кодировкой в Creatio отображаются так же плохо, как и в почтовом клиенте.

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

в почтовой программе все ок

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

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