Вопрос

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

При использовании EntitySchemaQuery возникла необходимость сделать case insensitive фильтр по строковой колонке (в C#) (то есть чтобы по "ааа" находились и "ааа", и "АаА").

Как это можно сделать?

У меня такой же вопрос

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

Можете по средством Linq, полученное значение из запроса сразу приводить к нижнему регистру, а потом сравнивать с вашим значением(тоже приведенным к нижнему регистру)

Литвинко Павел,

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

nickolay_dolgopolov,

Тогда, попробуйте через:

text.IndexOf(Искомое значение, StringComparison.OrdinalIgnoreCase)
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

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

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

У меня такой же вопрос

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

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

Уточните, пожалуйста, как именно Вы получаете значение системной настройки? Есть листинг кода? 

 

Вильшанский Дмитрий, 

this.Terrasoft.SysSettings.querySysSettingsItem('SlaCalculationEnabled', function (slaEnabled) {console.log(slaEnabled)})

При этом если запросить какую-нибудь несуществующую настройку, то ошибка не выводится, приходит просто undefined

Добрый день.

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

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

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

Возникла задача отправлять пользователям е-мейлы, содержащие html  с картинками, которые не хранятся на внешних ресурсах (то есть url нельзя указать как источник). Пробовал сделать через base64, но outlook не отображает такие картинки. Вопрос: как отправляются, например, письма с оценками (как на скриншоте)?

Судя по исходникам письма, для картинок создаются cid. Нашел файл EstimateLinksGenerator, но он, во-первых, генерирует именно base64, во-вторых, не могу найти, где он вызывается. Буду очень благодарен за пример кода, создающего html со встроеннными картинками для отображения в outlook.

 

PS используем версию 7.6, но есть возможность смотреть в код 7.11

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

У меня такой же вопрос

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

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

Для отображения оценок исполузуется макрос EstimateLinksGenerator.
Каким образом это реализовано можно посмотреть в статье

Но такие макросы работают толькло в разделе Обращения при отправке письма по шаблону. Это связано с тем что в обращениях для обработки тела письма используется InvokableMacrosHelperService, который знает как работать с такими макросами (которые реализуют IMacrosInvokable).

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

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

Есть ли у кого-нибудь понимание какие модули использует BPM для навигации по истории.

Я например встречал класс Terrasoft.Router и также sandbox.publish() для навигации.

Может есть что почитать по этому поводу?

 

У меня такой же вопрос

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

Хм, а в контексте какой задачи появился такой вопрос?

У меня после закрытия преднастроенной страницы в процессе происходит возврат не туда, куда бы хотелось. Так как используется BasePageV2.onCloseCardButtonClick() и CustomProcessPageV2Utilities.acceptProcessElement().

Если используется только BasePageV2.onCloseCardButtonClick(), то поведение правильное.

Кисловский Михаил Андреевич,

Если еще более конкретно, то я бы хотел чтобы последовательно отработал такой код

1. this.acceptProcessElement();

2. this.sandbox.publish("PushHistoryState", {hash: "GoToDirection"})

 

но this.acceptProcessElement() переадресует меня в другое расположение и вторая строчка не отрабатывает.

Всем спасибо!

Подошло Terrasoft.Chain()

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

Доброго времени, форумчане.

Возникла следующая потребность:
Есть сайт, на котором оформляются заказы, после оформления они передаются в bpm.
На странице заказа в bpm вставил Iframe сайта на котором оформляются заказы.
Цель: при открытии заказа в bpm нужно, чтобы в Iframe передавались данные авторизации(чтобы зайти в кабинет) и открывался аналогичный заказ на сайте для возможности его редактирования.

Есть ли возможность сделать это и вообще передавать данные в Iframe средствами bpm?

Заранее благодарен

У меня такой же вопрос

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

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

У нас, к сожалению нет готовых решений для реализации автоматизированной интеграции с IFrame.

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

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

С уважением, Анастасия.

Кирилл, всё что вам нужно есть тут:smile:

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

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

Являюсь новичком на форуме, хотя уже достаточно перелопатил по теме SVN, но так и не понял.

Возможно ли загрузить каким-то средствами и зафиксировать уже имеющийся код(из пакета Custom) в хранилище SVN?
С новыми пакетами проблем нет. При попытке зафиксировать пакет Custom всплывает такое сообщение.

"Пользовательский пакет не может быть зафиксирован в хранилище".

Насколько я понимаю логику, этот пакет(Custom) вообще нельзя фиксировать в хранилище.
Но не буду забегать вперед.

Подскажите, пожалуйста, кто что знает по данной теме.

У меня такой же вопрос

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

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

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

Илья, спасибо за ответ.

Продолжу вопрос :smile:

На данный момент (досталось в наследство) в пакете "Custom" находится около 400 элементов и разнести их по отдельным пакетам будет делом всей моей жизни. Есть идея, что эти элементы можно скопировать в новый пакет, который уже будет синхронизирован с SVN. Но есть один момент.

Была найдена информация про пакет Custom.

В процессе своей работы мастер разделов или мастер деталей не только создает различные схемы, но и привязывает данные к текущему пакету. Однако, если текущим пакетом является пакет [Custom], то перенести привязанные данные в другой пользовательский пакет практически невозможно. Поэтому рекомендуется в качестве текущего пакета использовать любой пользовательский пакет, но не [Custom].

Как вы думаете можно ли скопировать элементы в новый пакет, который уже будет синхронизирован с SVN? Может есть ещё варианты?

Ох, как я вас понимаю...
А особенно если с "выездом" в отдельные пакеты паралельно вам надо будет разрабатывать в своих пакетах расширяя то что в Custom это боль.
Предлагаю грязный трюк:
Создаете пустой пакет между Custom и редакционнымSoftKey_RUS
Потом прям на уровне бд в SysSchema - все схемы которые дочерние для Custom, апдейтите для них колонку SysPackageId на значение нового созданного вами пакета.
В теории - всё...
Дальше фиксируете его в SVN ну и собственно сможете вклинить любые ваши пакеты доработок между ним и Custom-ом если надо будет что-то расширять.

Отпишитесь пожалуйста - вышел каменный цветок или нет.
По идее все делается за 15 мин :)

Илья, спасибо за совет. Грязный трюк сработал и конфа компилировалась удачно.
Единственно, что пришлось исправить ещё кое-какие зависимости пакета(внешние сборки, sql-сценарии, данные). Скрипт выглядит примерно так.

update SysSchema set SysPackageId = '42C32F84-0E99-4A7B-8CEF-0A2BD30CF8F7' -- newPackage
where SysPackageId = 'AC5A5588-77FF-4CD0-B5D6-9561546E3D22' -- Custom
 
update SysPackageSchemaData set SysPackageId = '42C32F84-0E99-4A7B-8CEF-0A2BD30CF8F7' -- newPackage
where SysPackageId = 'AC5A5588-77FF-4CD0-B5D6-9561546E3D22' -- Custom
 
update SysPackageReferenceAssembly set SysPackageId = '42C32F84-0E99-4A7B-8CEF-0A2BD30CF8F7' -- newPackage
where SysPackageId = 'AC5A5588-77FF-4CD0-B5D6-9561546E3D22' -- Custom
 
update SysPackageSqlScript set SysPackageId = '42C32F84-0E99-4A7B-8CEF-0A2BD30CF8F7' -- newPackage
where SysPackageId = 'AC5A5588-77FF-4CD0-B5D6-9561546E3D22' -- Custom

Отразится ли это на последующей работе конфигурации неизвестно, буду тестировать.

Ну да я как-то забыл про "Данные" и "Скрипты" но вы по аналогии сделали все верно.
Последствий быть не должно...
Фактически вы можете произвести по базе поиск ID-ника пакета Custom и собственно посмотреть где он там еще задействован, но скорее всего со схемами и модулями он уже никак связан не будет.
Нет связи - нет проблем... остальные Id и UId остались без изменений.

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

Да и схемы в самом пакете куда переехали - вы можете потихоньку переносить в обособленные пакеты просто создавая их - выстраивая их зависимость от "пакета с переездом", и просто в конфигураторе, открывая "Все" свойства, схем и объектов - просто меняйте пакет.

И таким образом "дело всей вашей жизни", окажется делом нескольких недель или максимум месяцев, и у Вас останется еще целая жизнь на разработку нового функционала :)
Приятной работы.

Илья, благодарю за помощь!

Надеюсь новый функционал уже не за горами!:smile:

"Шумков Виталий" написал:Отразится ли это на последующей работе конфигурации неизвестно, буду тестировать.


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

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

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

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

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

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

Версия 7.6.0.1265

У меня такой же вопрос

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

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

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

Также за эти кнопки отвечают следующие элементы:
DataGridActiveRowOpenAction
DataGridActiveRowCopyAction
DataGridActiveRowDeleteAction

Вы можете задать их видимость в схеме созданного Вами раздела.

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

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

Есть задача скрыть редактирование поля страны в детали по организационным ролям(супервайзер, руководители, менеджеры), закрыть право на редактирование для менеджеров.
Пробывал разные варианты через конфигурацию и добавления правил, все равно не работает.
Версия bpm7.6.

Как лучше мне это сделать?

У меня такой же вопрос

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

Здравствуйте, Сергей!

Вы можете видимость поля задать бизнес правилом. Параметр видимости будет определяться в момент открытия страницы редактирования (Вам необходимо переопределить метод onEntityItialized()). Замещенный метод onEntityItialized() должен вызывать родительский, а также проверять вхождение пользователя в роли (используйте ESQ по объекту SysAdminUnitInRole). Обратите внимание, что один пользователь может входить в несколько ролей.

Сформировал запрос к таблице SysAdminUnitInRole по своей Id

SELECT *
FROM            dbo.SysAdminUnit sa LEFT JOIN
                         dbo.SysAdminUnitInRole saur ON sa.Id = saur.SysAdminUnitId
WHERE sa.Id = 'мой Id'

Вернуло 3 строки - это означает, что в меня есть 3 роли?

Да, это значит что Администратор с sa.Id = 'мой Id' входит в три роли
Если вы выполните

SELECT saur.SysAdminUnitId, saur.SysAdminUnitRoleId
FROM            dbo.SysAdminUnitInRole saur
Where saur.SysAdminUnitId = 'мой Id'

То увидите айдишники ролей

Спасибо за подсказку, пытался вывести название ролей:

SELECT saur.SysAdminUnitId, saur.SysAdminUnitRoleId, s.Name
FROM            dbo.SysAdminUnitInRole saur Left JOIN
                         dbo.SysAdminUnit s ON saur.SysAdminUnitId = s.Id
WHERE saur.SysAdminUnitId = 'мой Id'

Результат имя моего контакта. Может я неправильно делаю?

так ваш запрос и выводит имя контакта из s.Name (SysAdminUnit)

можно сделать так

select s.Name 
from SysAdminUnit s
where s.id in (
select saur.SysAdminUnitRoleId
from dbo.SysAdminUnitInRole saur
where saur.SysAdminUnitId = 'мой Id'
)

Вот только одна запись похоже тоже будет вашим контактом, т.к. есть соответствие одинаковых id в SysAdminUnitInRole

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

Добрый день!

Существует ли возможность указания в url'е группы для перехода, а так же доп.фильтра?

У меня такой же вопрос

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

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

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

"Демьяник Алексей" написал:Вы можете создать собственные команды для командной строки для перехода в динамические группы. В результате выполнения команды будет открываться та или иная группа с предустановленными фильтрами.

Спасибо, Алексей! А команду можно указать в url'е?

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

Эмулировать команду в url нет возможности.

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

Возникает проблема в
(anonymous function) (SchemaBuilderV2.js:338)
(anonymous function) (SchemaBuilderV2.js:126)
(anonymous function) (commonutils.js:1463)

в строке:

generatorConfig.entitySchemaName = schemaResponse.entitySchemaName; //schemaResponse = undefined

Что нужно проверить, чтоб schemaResponse был "живым"?

У меня такой же вопрос

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

Опишите подробнее на каком этапе появляется ошибка?

Очистил кэш браузера, всё заработало.

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

"AlexLS" написал:Что нужно проверить, чтоб schemaResponse был "живым"?

Добрый день!!!

проверять ничего не требуется, нужно знать четкие правила, что при создание новых разделов, страниц редактирования, деталей их обязательно нужно регистрировать в базе данных в таблицах SysModule, SysModuleLcz, SysModuleEdit, SysModuleEditLcz, SysDetail. И тогда подобные ошибки возникать у вас или вообще не будут или будут возникать очень редко.

"Власов Михаил Викторович" написал:их обязательно нужно регистрировать в базе данных в таблицах SysModule, SysModuleLcz, SysModuleEdit, SysModuleEditLcz, SysDetail

Михаил, спасибо за ответ! А как это правильно делать, где-то сказано?

"AlexLS" написал:Михаил, спасибо за ответ! А как это правильно делать, где-то сказано?

По данному вопросу есть информация на Академии, плюс данные вопросы уже не раз обсуждали на комьюнити, если поискать то можно найти ответа. Я своей практики написал сам SQL скрипты по регистрации Разделов, Страниц редактирования, Деталей и пользуюсь ими. Мне так удобнее и быстрее. Если нужно могу поделиться.

"Власов Михаил Викторович" написал:SQL скрипты по регистрации Разделов, Страниц редактирования, Деталей и пользуюсь ими. Мне так удобнее и быстрее. Если нужно могу поделиться

Михаил, спасибо!

Буду очень благодарен, если поделитесь (например, в личном сообщении)!

Войдите или зарегистрируйтесь, чтобы комментировать