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



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

Замещающего модуля или объекта тоже не нашел

В логике детали кнопка не переопределена

 

Нравится

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

За это отвечает признак "Каскадная связь" в свойствах справочного поля в объекте (в новом дизайнере объектов называется "При удалении значения справочника"). Но то что на разных средах разная логика довольно странно. Начните с исследования признака "Каскадная связь"

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

Добрый день! 

 

Пытаюсь установить Excel reports builder for Creatio, но установщик выдает ошибку. 

 

На пустую тестовую среду дополнение стало без проблем, а на мою систему не становится. 

 

Помогите, пожалуйста, разобраться в проблеме. Лог прилагаю

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

Нравится

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

Добрый день!

 

Первая ошибка связана с тем, что у вас на продуктивной среде уже установлен другой пакет с библиотекой EPPlus. Creatio не позволяет устанавливать одну и ту же библиотеку дважды. К сожалению из пакета Excel reports builder не можем удалить эту библиотеку. Уточните у другого разработчика, есть ли возможность предоставить пакет без библиотеки.

Вторая ошибка возникла при компиляции и связана со схемой UsrProductInStockLOTSchema. Ниже детальное описание ошибки:

Autogenerated\Src\UsrProductInStockLOTSchema.Custom.cs(270,15) warning CS0108: 'UsrProductInStockLOT.RecordInactive' hides inherited member 'Entity.RecordInactive'. Use the new keyword if hiding was intended.

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

 

Мануал для юзеров, которые не разбираются в коде, библиотеках и т.д.:

 

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

2. Удаляем приложение через Installed applications

3. Устанавливаем нужное приложение еще раз

 

Не знаю нужно или нет, но между всеми этими действиями я каждый раз компилировал систему.

Добрый день!

 

скорее всего помогла компиляция приложения.

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

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

Нравится

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

В карточке у кнопки имя "ProcessButton".

В секциях либо "ProcessButton", либо "ProcessRunButton", либо "DataGridRunProcessAction" в зависимости от положения

В карточке у кнопки имя "ProcessButton".

В секциях либо "ProcessButton", либо "ProcessRunButton", либо "DataGridRunProcessAction" в зависимости от положения

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

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

 

В версии 7.15 для быстрой замены использовалась комбинация ctrl+h

Подскажите, пожалуйста, аналог для 7.17 

Нравится

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

Добрый день, Юлия!



Начиная с версии 7.17.3 действуют следующие комбинации во встроенной IDE:

Ctrl-A Select all Выбрать все

Ctrl-Z Undo Отменить

Ctrl-Y Redo Повторить

Ctrl-F Find Найти

Ctrl-G Find next Перейти к следующему совпадению

Shift-Ctrl-G Find previous Перейти к предыдущему совпадению

Shift-Ctrl-F Replace Заменить

AllShift-Ctrl-R Replace all Заменить все совпадения

Ctrl-D Delete line Удалить строку

Alt-Left Go to line start Перейти в начало строки

Alt-Right Go to line end Перейти в конец строки

Alt-G Jump to line Перейти на строку

F11 Fullscreen code editor Отобразить редактор кода на весь экран

Ctrl+Space Autocomplete Автозаполнение

 

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

Спасибо за выбор наших продуктов!

 

С уважением,

Сидько Елена

Оператор

Группа компаний Terrasoft

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

Добрый день, Юлия!



Начиная с версии 7.17.3 действуют следующие комбинации во встроенной IDE:

Ctrl-A Select all Выбрать все

Ctrl-Z Undo Отменить

Ctrl-Y Redo Повторить

Ctrl-F Find Найти

Ctrl-G Find next Перейти к следующему совпадению

Shift-Ctrl-G Find previous Перейти к предыдущему совпадению

Shift-Ctrl-F Replace Заменить

AllShift-Ctrl-R Replace all Заменить все совпадения

Ctrl-D Delete line Удалить строку

Alt-Left Go to line start Перейти в начало строки

Alt-Right Go to line end Перейти в конец строки

Alt-G Jump to line Перейти на строку

F11 Fullscreen code editor Отобразить редактор кода на весь экран

Ctrl+Space Autocomplete Автозаполнение

 

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

Спасибо за выбор наших продуктов!

 

С уважением,

Сидько Елена

Оператор

Группа компаний Terrasoft

Elena Sidko,

Очень не хватает комбинации для того чтоб закомментировать/раскомментировать код

Дмитрий А.,

А разве "ctrl + /" не работает? Я обычно им пользуюсь

Булат Хабирзянов,

В новом дизайнере (версии 7.17+) нет

серьезно? странно очень удобно

Elena Sidko,

Спасибо большое!

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

Делаю на основе примера: https://community.terrasoft.ru/questions/sredstva-svyazi-lida

Создала объект qrtLeadCommunication, и Модель представления детали с полями qrtLeadCommunicationDetail. 

Код в схеме представления:

define("qrtLeadCommunicationDetail", ["qrtLeadCommunicationDetailResources", "terrasoft", "Lead",
        "ConfigurationEnums", "ConfigurationConstants"], function(resources, Terrasoft, Lead, ConfigurationEnums,
        ConfigurationConstants) {
    return {
 
        /**
         * Имя сущности
         */
        entitySchemaName: "qrtLeadCommunication",
 
        methods: {
 
        }
    };
});

Пытаюсь зарегистрировать деталь через sql-запрос:

declare @DetailSchemaUid uniqueidentifier = (select Uid from SysSchema where Name = 'qrtLeadCommunicationDetail')
declare @EntitySchemaUid uniqueidentifier = (select Uid from SysSchema where Name = 'qrtLeadCommunication')
insert into SysDetail(Caption, DetailSchemaUId, EntitySchemaUId)
values('Средства связи Лида', @DetailSchemaUid, @EntitySchemaUid)

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

Но ничего не выходит.

Зарегистрировав через Мастер деталей получила обычную деталь со страницей добавления. 

А нужна деталь точно такая же как Средства связи контакта или Средства связи контрагента.

Что делаю не так?

Буду благодарна, если подробно опишите алгоритм действий.

Есть подозрения что внутри схемы представления нужно прописывать отдельную логику.

Нравится

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

Проблема возникает из-за использования префикса перед названиями объектов.



1) Попробовал создать с префиксами - получил ошибку такую же ошибку.

2) Отключил префиксы и создал без них - все работает

Колногоров Роман Андреевич,

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

замещающий объект CommunicationType был создан

Проблема возникает из-за использования префикса перед названиями объектов.



1) Попробовал создать с префиксами - получил ошибку такую же ошибку.

2) Отключил префиксы и создал без них - все работает

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

Создаю деталь аналогично статье: https://community.terrasoft.ru/questions/sredstva-svyazi-lida

Но не получается зарегистрировать деталь. 

Выполняю скрипт, как в статье:

declare @DetailSchemaUid uniqueidentifier = (select Uid from SysSchema where Name = 'qrtLeadCommunicationDetail')
declare @EntitySchemaUid uniqueidentifier = (select Uid from SysSchema where Name = 'qrtLeadCommunication')
insert into SysDetail(Caption, DetailSchemaUId, EntitySchemaUId)
values('Средства связи Лида', @DetailSchemaUid, @EntitySchemaUid)

на что получаю: Изображение удалено.

Выполнила так же скрипт описанный в данной статье: https://academy.terrasoft.ru/documents/technic-sdk/7-11/sozdanie-detali…

DECLARE
-- Название схемы создаваемой детали.
@DetailSchemaName NCHAR(100) = 'qrtLeadCommunicationDetail',
-- Заголовок детали.
@DetailCaption NCHAR(100) = 'Средства связи Лида',
--Название схемы объекта, к которому привязывается деталь.
@EntitySchemaName NCHAR(100) = 'qrtLeadCommunication'
 
INSERT INTO SysDetail(
    ProcessListeners,
    Caption,
    DetailSchemaUId,
    EntitySchemaUId
)
VALUES (
    0,
    @DetailCaption,
    (SELECT TOP 1 UId
    FROM SysSchema
    WHERE name = @DetailSchemaName),
    (SELECT TOP 1 UId
    FROM SysSchema
    WHERE name = @EntitySchemaName)
)

На что также получаю: Изображение удалено.

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

Что я делаю не так?

Нравится

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

Анастасия, добрый день!

 

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

Дмитрий Тёскин,

Черех Мастер получается деталь со страницей добавления, а нужна деталь с полями редактирования 

Анастасия Демидова,

В версии 7.17.4 при создании детали через мастер есть поле 'Сделать реестр редактируемым'. Если его указать, то у Вас получится деталь с редактируемым реестром:

 

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

 

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

Открываю справочник через LookupUtilities.Open.

В конфиге выставлен параметр multySelect: true

 

Есть ли параметр, позволяющий выставить галочки на всех элементах справочника при открытии?

Нравится

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

Добрый день, Оксана.

В меню "Действия" всплывающего окна есть пункт "Выбрать все", вы можете использовать его логику. Рекомендую посмотреть реализацию метода "selectAllRecords" из схемы "LookupPageViewModelGenerator", который и срабатывает при выборе всех.

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

Добрый день,

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

Может, предусмотрен какой-то более удобный способ? 

Нравится

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

Добрый день! Вы имеете ввиду редактировать поле на странице? Через бизнес-правила вроде так можно это сделать.

 

Дмитрий,

Через бизнес-правило "if текущий пользователь = справочник.Пользователь then поле редактируемое"  права на другие колонки же не ограничатся. Плюс, я так понимаю, это правило не позволит другим пользователям редактировать это поле, т.к. будет проходить проверка на текущего пользователя.

Нужно наложить ограничение только на одного п-ля, не затронув остальных.

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

Дмитрий,

 

Мне как раз нужно, чтобы пользователь не мог редактировать ни одно другое поле кроме выбранного.

Если ставить правила на запрет изменения всех остальных полей через "пользователь!=" , то помимо того, что их будет порядка 30-40, и некоторые из них работать не будут (т.к. creatio воспринимает только 1 правило, завязанное на 1 поле, а другие игнорирует), но ещё такие правила перетрут права доступа, настроенные через Доступ на объекты. =(

Добрый день, 

 

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

 

Из неочевидного, руководители роли "Может редактировать одну колонку" также унаследуют эти права. 

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

Мне нужен фильтр в C# коде

Что-то вроде:

var activity = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Activity"); //Активность
 
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Equal, "Type",  "id типа")); // тип активности - email
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Recepient",  "my_email@gmail.com")); // кому-мне
 
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_dad_email@gmail.com")); // от отца
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_mum_email@gmail.com")); // от матери
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_sister_email@gmail.com")); // от сестры
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_brother_email@gmail.com")); // от брата



нужен такой фильтр:

тип активности-email && кому-мне && (от отца || от матери || от сестры || от брата)



Как добавить логические операторы чтобы получить такой фильтр?

Или может быть надо по другому?

Нравится

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

 Что то типо такого?

activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  new string[] { "my_dad_email@gmail.com", "my_mum_email@gmail.com", "my_sister_email@gmail.com", "my_brother_email@gmail.com"}));

Колногоров Роман Андреевич,

выдает ошибку 

Условие типа "Contain" не может содержать более одного выражения в правой части

обойтись без Contain не получиться

Попробуйте через createColumnInFilterWithParameters

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

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

Пробую вызывать веб-сервис из бизнес-процесса.

Через Postman, прохожу аунтентификацию через .../ServiceModel/AuthService.svc/Login, далее вызываю .../0/odata - получаю перечень таблиц и статус 200, то же самое через адресную строку браузера.



Но если вызывать этот веб-сервис через бизнес-процесс, кроме HTTP Error 401.1 - Unauthorized или Invalid user name or password не получил.

В бизнес-процессе пробовал вызывать сначала веб-сервис .../ServiceModel/AuthService.svc получать через параметры процесса BPMCSRF  - без результата.

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

Через веб-сервис .../0/ServiceModel/EntityDataService.svc/  получаю статус 200 и ответ в виде XML.

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

Суть вопроса почему .../0/odata возвращает статус 200 и данные через постман и браузер, а через бизнес-процесс возращает ошибку.

Приложение on-site. 

 

Нравится

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

Сергей,

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

Олег Нефедьев, спасибо.

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

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