Доброго времени суток!

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

Нравится

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

Сделайте бизнес процесс, который при создании записи будет забирать права на запись у нужной роли. 

Сидоров Александр Валерьевич,

а как быть со старыми записями?

А для старых - отдельный разовый бизнес-процесс, который пройдется по всем записям и перераздаст права.

Сидоров Александр Валерьевич,

Достаточно ресурсоемко, если учитывать, что в системе около 4 млн. записей. При запуске элемента для настройки прав доступа получаю такую ошибку: "Превышено ограничение 200000 записей при выгрузке данных объекта". Как можно ее обойти? Как-то зациклить элемент БП?

P.s. нашел данную статью: https://community.terrasoft.ru/questions/snyat-ogranichenie-na-koliches… с подобной ошибкой. Но данное решение кажется радикальным. На прод среде недопустимо запускать БП на 4 млн записей. Какие могут быть обходные пути?

Ну вообще можно сделать циклами через порционную вычитку данных. Но может быть вам будет проще выделить все записи через Действия -> Выбрать все и Настроить права доступа? Я попробовал - у меня 400к записей выделилось. 

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

Арнур Келгенбаев,

Или вот эту штуку можно посмотреть 

https://marketplace.terrasoft.ua/app/access-rights-setup-wizard-creatio

Арнур Келгенбаев пишет:

Достаточно ресурсоемко, если учитывать, что в системе около 4 млн. записей. При запуске элемента для настройки прав доступа получаю такую ошибку: "Превышено ограничение 200000 записей при выгрузке данных объекта". Как можно ее обойти? Как-то зациклить элемент БП?

Сделайте в SQL работу с правами. Те же самые таблицы, однотипное добавление и удаление. Работает в разы быстрее

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

Доброго времени суток!

В управлении конфигурацией во вкладке "Администрирование: доступ к объектам" для раздела "Контакт" хочу настроить права доступа всем пользователям с организационной ролью "Консультанты". Во вкладке "Доступ к объекту" есть только одно правило для роли "Консультанты" с разрешением на чтение записей, во вкладке "Доступ к записям по умолчанию: чтение" тоже всего одно правило для чтения записей, созданных всеми сотрудниками, для "Консультантов". Вне зависимости от наличия правила доступа во вкладке "Доступ к записям по умолчанию: чтение" консультант видит 236 записей. Если прогнать БП, который дает права доступа для записей, за которыми числится ответственным консультант (их в системе 2 тестовые записи), то в разделе "Контакты" консультант будет видеть 238 записей. Я хочу разобраться, по какому принципу система отображает эти 236 записей. Подскажите, пожалуйста, в чем может быть причина? Для сведения, в системе свыше 3 млн контактов. Как можно найти признак, который объединяет эти записи?

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

Нравится

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

Добрый день!

Насколько я понимаю, вопрос в том, почему при розданных правах консультант видит 236 записей, а если создать 2 тестовых, в которых ответственным назначить консультанта, и прогнать БП, который раздает права - консультант будет видеть 238 записей?



Для решения данного вопроса попробуйте выключить права доступа к записям. Судя по вашему описанию, в них нет необходимости, т.к. роль консультант и так имеет право на чтение объекта "Контакт".

Судя по большому количеству записей данного раздела в вашей системе - можно предположить, что они были импортированы через Excel или путем обогащения данных. В таком случае есть вероятность, что это и вызывает конфликт. Т.к. импортированные записи могут не совпадать с признаком "созданная сотрудником".

Если это поможет, консультант должен видеть ~ 3млн контактов, верно?

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

Добрый день. Есть некоторые дорабоки которые находятся в пакете custom на стенде dev. Подскажите пожалуйста, каким образом, безболезненно для системы, мы можем перенести пакеты на продакшн версию? Спасибо.

Нравится

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

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

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

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

Создать свой пакет, перенести туда все доработки. Экспортировать пакет в ZIP и установить его на продакшн.

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

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

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

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

Развернул сайт разработки, подключил  SSL Let's encrypt все запросы и интеграции ходят корректно, сертификат принимает. В мастере мобильного приложения зашел во все схемы и сохранил. Получаю ошибку которой не вижу в community,  может кто-то сталкивался?

Model Name: CPH2009 Platform: Android Platform Version: 11 Resolution: 360x756 IsHybridMode: true RootAppDirectory: creatio ApplicationVersion: 7.18.6 ApplicationMajorVersion: 7.18 UseNativeSynchronization: true UseNativeImport: true UseNativeExport: true UseNativeLogout: true UseNativeMetadataSync: false UseNativeFullSynchronization: false UseDataService: true IsDevMode: false CurrentDateTime: 2022-01-20T19:09:15.553Z ServerUrl: https://suncrm.space/ ContactId: null CultureName: null ApplicationRevision: null WorkplaceCode: null ProductInfo: {"ProductName":"Creatio","ProductEdition":"enterprise","CustomerId":"","Version":{"Major":7,"Minor":18,"Build":5,"Revision":1501,"MajorRevision":0,"MinorRevision":1501}} Type: Terrasoft.SyncException Message: В процессе синхронизации произошла ошибка Stack trace: Function.handleException(terrasoft-all-combined.js:26896:37) Object.callback(sencha-touch-all-debug.js:10397:26) Class.callUserErrorHandler(terrasoft-all-combined.js:21844:9) Object.callback(sencha-touch-all-debug.js:10397:26) Class.callFailure(terrasoft-all-combined.js:21503:11) Object.callback(sencha-touch-all-debug.js:10397:26) Function.failure(terrasoft-all-combined.js:36406:17) Object.callback(sencha-touch-all-debug.js:10397:26) Object.requestItemFailure(terrasoft-all-combined.js:34794:17) Class.onRequestFailure(terrasoft-all-combined.js:34602:16) Object.callback(sencha-touch-all-debug.js:10397:26) terrasoft-all-combined.js:34798:13 Object.callback(sencha-touch-all-debug.js:10397:26) Class.finish(terrasoft-all-combined.js:35206:11) Class.finishCancellableOperation(terrasoft-all-combined.js:1576:43) Class.(terrasoft-all-combined.js:34783:12) Object.callback(sencha-touch-all-debug.js:10397:26) terrasoft-all-combined.js:34961:11 Object.callback(sencha-touch-all-debug.js:10397:26) Class.finish(terrasoft-all-combined.js:35206:11) Class.finishCancellableOperation(terrasoft-all-combined.js:1576:43) Class.executeCallbackIfNotCanceled(terrasoft-all-combined.js:34960:10) Class.failureHandler(terrasoft-all-combined.js:34977:10) Object.callback(sencha-touch-all-debug.js:10397:26) Class.onComplete(sencha-touch-all-debug.js:36405:17) Class.onStateChange(sencha-touch-all-debug.js:36341:18) XMLHttpRequest.(sencha-touch-all-debug.js:3233:27) Type: Terrasoft.ServerException Message: Запрос на сервер вернул ошибку AdditionalInfo: { "requestId": 11, "status": 500 }

Нравится

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

Доброго времени суток!

В ходе настройки БП появилась задача по настройке прав доступа к записям раздела сотрудникам-пользователям системы. Соответственно, добавил элемент "Изменить права доступа". Если вкратце о БП, то логика такая: находим Guid сотрудника-консультанта, затем передаем строковое значение этого Guid в переменную ConsultantIdString БП, затем начинаем новую выборку по контактам, чьим консультантом является пользователь с ConsultantId = ConsultantIdString, затем начинаем цикл, в котором забираем права доступа (чтение, редактирование, удаление) у консультанта ко всем записям, которые не соответствуют условию ConsultantId = ConsultantIdString. Дальше даем доступ (чтение, редактирование, удаление) ко всем записям которые соответствуют условию ConsultantId = ConsultantIdString. Когда просматриваю данные трассировки, то выходит следующее: 

"Параметр": "Список прав на удаление",

            "Значение": {

                "Перед выполнением": "[{Id:\"a6bca657-858b-404c-9f74-fed573d2bee4\",ParameterName:\"Employee1\",Name:\"Консультант\",CanRead:true,CanEdit:true,CanDelete:true,Source:\"3\",Grantee:\"Employee\",Value:\"[#Lookup.16be3651-8fe2-4159-8dd0-a803d4683dd3.5b40e682-84ae-45d8-9d24-75f46fa557b9#]\"}]",

                "После выполнения": "[{Id:\"a6bca657-858b-404c-9f74-fed573d2bee4\",ParameterName:\"Employee1\",Name:\"Консультант\",CanRead:true,CanEdit:true,CanDelete:true,Source:\"3\",Grantee:\"Employee\",Value:\"[#Lookup.16be3651-8fe2-4159-8dd0-a803d4683dd3.5b40e682-84ae-45d8-9d24-75f46fa557b9#]\"}]"

            }

Т.е. права доступа остались прежними. Подскажите, пожалуйста, в чем логическая ошибка?

Также прикрепил скрин самого БП и элемента по удалению прав доступа для консультантов.

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

Нравится

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

Арнур Келгенбаев, здравствуйте!

Пример построения подобного процесса есть в документации.

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

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

Sorotiuk Anna,

При настройке прав доступа к записям раздела "Контакт" во вкладке "Доступ к объекту" открыл пользователям с ролью "Консультант" доступ на чтение. Во вкладке "Доступ к записям по умолчанию: чтение" никаких настроек нет. Затем запустил БП, который дал консультанту право на чтение, изменение и удаление к 2 тестовым записям. В итоге в разделе консультант видит 238 записей. Вопрос: как можно проверить, по какой причине появились 236 записей? 

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

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

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

 

В коде страницы был создан Атрибут:

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

 

Метод:

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

Кнопка:

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

После этого кнопка стала активной не при первом открытии записи, а  после обновления этой страницы в браузере по F5.

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

При отладке атрибут undefined. Испытано несколько способов, включая лукапный атрибут из примера с запросом esq. Теперь появилось значение в атрибуте в методе init, но при заходе отладчика в метод что включает активность кнопки условие правильно возвращает true, однако кнопка активной не становится.

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

 

Вопросы:

1. есть ли способ сразу получить значение атрибута в init , не привязывая к нему инициализирующий его метод который содержит esq запрос к базе ? Дело в том что запрос выполняется синхронно с загрузкой страницы.

2. как можно проверить отправку получение сообщения sandbox в браузере?

3. Верно ли что если я напишу в каком-нибудь методе this.set("АтрибутАктивностиКнопки") то привязанная к этому атрибуту активность кнопки поменяется сразу? Визуально. То есть кнопка заблокируется / станет серой ? 

Нравится

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

Посмотрите пример теме  по ссылке, я там писал в комментариях в чем проблема, в том примере проверка видимости была у "действия", а у вас на кнопке, смысл такой же. https://community.terrasoft.ru/questions/dinamecheskaoe-izmenenie-aktiv…

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

Добрый день!



На вновь установленной on-site версии 7.16.2 Sales (PostgreSQL) отсутствует функционал поиска и объединения дублей. На ранее установленной on-site версии 7.14.0 Bank Customer Journey (MSSQL)  данный фунционал присутствовал сразу, без установки дополнительных программ.

Подскажите, нужно ли делать установки, описанные в статье  https://academy.terrasoft.ru/docs/user/razvertyvanie_onsite/nastrojka_konteinernikh_komponentov/massovyj_poisk_dublej/nastroit_massovyy_poisk_dubley , либо функционал поиска и объединения дублей можно добавить стандартными настройками системы (если да, просьба написать какими) 

Нравится

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

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

 

На MsSql поиск дублей (для разделов контрагенты, контакты и лиды) работал без микросервиса, т.к. происходил через процедуры внутри базы, для PostgreSQL этих процедур к сожалению нет.

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

Спасибо за информацию!

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

Добрый день!

Добавил свою деталь на страницу Контракты. Сохранил изменения. Перезашел  в приложение, сразу перекидывает на окно Управления конфигурацией и показывает вопрос: "Чтобы продолжить работу в Creatio, необходимо компилировать конфигурацию. Вы хотите скомпилировать сейчас?"

 

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

Подскажите почему так происходит и что делать? Подозреваю, что криво создал деталь, так как это первый опыт.

 

Заранее спасибо.

 

Нравится

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

Добрый день!

Подскажите, пожалуйста, ваш сайт находится в cloud или on-site?

Если в cloud, то как называется ваш сайт?

Данное поведение наблюдается только у вас или у всех пользователей?

Yanina Ryssjanova,

Добрый день! Сайт находится on-site. Это тестовое приложение, так что я там один нахожусь. Сгенерировал исходный код для всех схем, перекомпилировал все, но при попытки войти, после запроса авторизации снова просит перекомпилировать. И по новой

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

Необходимо увеличить мощности сервера.

Yanina Ryssjanova,

 

Боюсь не из-за этого. В пике оперативы задейстовано 18%, ЦПУ 30%. В адресной строке браузера видна ошибка: error=BasePackagesNotInstalled 

Могли бы вы приложить скриншот и полный текст ошибки который возникает при входе в приложение, перед тем как просит скомпилировать приложение?

Или попробуйте через конфигурацию удалить созданную деталь, выполнить генерацию и компиляцию. Будет ли после этого возникать ошибка при входе в приложение?

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

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

Можно ли у Вас уточнить? Мне нужна логика детали "Продукт в продаже".

Тоесть Добавляю/Изменяю/Удаляю и поле в карточке заполняется суммой сложенных из детали. 

Нравится

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

Добрый день!

Логика расчета суммы продажи находится во внутреннем процессе объекта OpportunityProductInterest

Yanina Ryssjanova,

Эм, а можно подробнее. Тут я вижу БП с сценарием. И в бизнес процессе событие срабатывает, только когда нажата кнопка сохранить. 

Не совсем понимаю какие подробности вам необходимы, при всех действиях Добавления/Изменения записи "Продукт в продаже" происходит событие OpportunityProductInterestSaved (или OpportunityProductInterestDeleted при удалении) в которых вызываться метод CalckOpportunityAmount.

Как и было сказано ранее, посмотреть это можно здесь.

Тамже и находится реализация метода CalckOpportunityAmount.

 

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

Кто-то подскажет, можно ли очищать таблицу SysSyncMetaData? Насколько я правильно понимаю в ней хранятся временные метаданные синхронизации с Exchange. Очень много записей за период, когда была еще версия 7.13.

Нравится

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

Добрый день, Евгений!

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

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

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