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

Может у меня чего не так, но вроде в остальных местах все в порядке.....
Windows 7 64bit
Mozilla Firefox 21

Нравится

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

Было-было такое, только у меня наоборот набиралась только кириллицей...что ещё хуже, потом вроде как-то само исправилось, в смысле печатает латиницей что нужнее...

Меня конечно радует несметно, что в моем случае как нужнее... :lol:

Но все таки...

Здравствуйте, Александр!

К сожалению, это проблема Silverlight, и пока Microsoft считает эту проблему не критичной, и не планирует исправления.

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

Если печатает кириллицей, единственное лекарство - закрыть сильверлайтовское окно, переключить раскладку и открыть его снова.

Понятно, ладно, особо не напрягает, хорошо хоть копи-пастит по русски :-)

На самом деле это сделано специально :smile:.
Для того чтобы разработчику было трудно вставлять в код строковые константы, которые являются локализованными строками и должны быть разными на разных языковых версиях.
Правильно такие константы объявлять в группе "LocalizableStrings", а в коде обращаться к ним просто по имени:

var str = LocalizableString1;

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

О как! Это мысль здравая. Если это конечно действительно так, а не глюк silverlight

"Шамуилов Александр" написал:

О как! Это мысль здравая. Если это конечно действительно так, а не глюк silverlight


Проверил сейчас. У меня Microsoft Silverlight (64-bit) Version: 5.1.20125.0. И русские буквы вводятся, и украинские... Вводятся вообще, а не в редакторе скриптов BPMonline :smile:. Если и был глюк Silverlight, то его, наверно, уже пофиксили. Ну а про локализованные строки - все правда :smile:

Вот уж не знаю, что там такое в Windows Server 2008r2, но именно под ним у меня в Chrome, Firefox в редакторе скриптов, который существует при участии Silverlight только русский язык, и никак его не переключить.
А вот в родном IE10 там же все замечательно переключается... вот так вот и продвигается собственный продукт Microsoft :cry:

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

Необходимо выполнить (до этого делал только на обычном Terrasoft, тут не получается)
Создать раздел для заполнения
Цель звонка:
новостройка
новостройка Рихард
вторичное жилье
загородная недвижимость
коммерческая недвижимость
повторный звонок
другое
Пользователь должен поставить галочку напротив одного из вариантов.
2) По итогам выполнения п.1 результат вносится в таблицу вида:
Таблица 1: Статистика входящих звонков
дата
новост-ройка
новостройка Рихард
вторичное жилье
загородная недвижимость
коммерческая недвижимость
повторный звонок
другое

Нравится

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

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

Процедура создания стандартного раздела выполняется в несколько этапов:

1. Создание основного объекта раздела. Например, для раздела “Контрагенты” таким объектом является “Контрагент”, а для раздела “Контакты” – “Контакт”. Объект раздела должен содержать колонки для хранения данных записей раздела.
2. Создание объектов “группа” и “элемент в группе” для корректной работы группировки записей в разделе.
3. Создание страницы карточки раздела, при помощи которой пользователь сможет добавлять новые, а также редактировать добавленные ранее записи раздела.
4. Создание страницы основного реестра раздела, который будет содержать записи раздела.
5. Создание страницы самого раздела, с помощью которой формируется структура раздела, в частности, эта страница содержит основной реестр раздела, дерево групп и область деталей.
6. Регистрация раздела в системе.

Для создания объектов и страниц используются дизайнер объектов и дизайнер страниц, соответственно. Для регистрации раздела в системе используется раздел “Рабочие места”.

литература есть по этому поводу

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

Скачать

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

В активности добавил поле типа справочник для связи с записями из другого раздела (лоты аукционов).
В обьекте лота аукциона есть Owner.
Необходимо при редактировании карточки при выборе в этом поле из списка лотов отфильтровать реестр лотов аукционов по критерию Owner == Текущий пользователь.

Нравится

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

Смысл ясен, не ясно только куда подобные конструкции вставлять в карточке активности? Там не наблюдается обработчика InitScriptTask
Или его тогда самому определить?

См. ChildInitAfterParentScript.

сам нашел по "тихим следам дождя на траве" вчера :smile:, но все равно спасибо....

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

Управлять как то можно порядком деталей в разделе и в карточке записи? Нигде что то найти не могу.

Нравится

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

Здравствуйте Александр.
Да, можно.
Для этого существуют кнопки "вверх" и "вниз" на детали "Детали" (простите за тавтологию).

Простите, но я их в упор не наблюдаю......
Да и про карточку вопрос остался.

Да, действительно, почему-то пропадают... :cry:
Ну тогда Вам придется "подойти из-за угла с SQL пулеметом" :wink:
В таблице SysModuleDetail есть колонка Position, по которой сортируются детали в разделах. Но с этой таблицей нужно быть аккуратным. На ней завязана куча логики.
Кнопки в реестре деталей в рабочих местах есть, просто они почему-то не показываются.

"Бабуков Андрей Александрович" написал:Ну тогда Вам придется "подойти из-за угла с SQL пулеметом"

Опять..... нет оно мне даже конечно в чем то интересно и прикольно местами....опять же внутренняя организация системы открывается, но как то надоедает, знаете ли.....

Как показал честный ms sql колонка position у деталей в этом разделе едина в своем мнении: у всех стоит 0. :confused:

Подождем что скажет саппорт, про то где мои кнопочки?!

Расположение деталей в разделе определяется их заголовком – происходит сортировка заголовков деталей по алфавиту.
Изменить расположение деталей можно только добавлением к заголовку номера, например:
1. Переходим в раздел [Инструменты] – [Рабочие места].
2. Находим нужный раздел, на детали [Детали] добавляем нумерацию для деталей:

/system/files/1_2_4.png
3. После внесения изменений нужно выполнить очистку Redis

Эммм.....кто прав?

Права Наталия. Кнопок-стрелок для деталей нет и никогда не было.

"Maxim Gritsenko" написал: Кнопок-стрелок для деталей нет и никогда не было.

Та невже??? :confused:
Я не говорю, что я прав, но кнопки есть см. скрин
Но, к сожалению, эти кнопки почему-то скрываются, в конфигурации TSBpm :sad: А вот, почему они скрываются, это вопрос, который я поднял в этом топике.

Ааааа, обделили!!! :smile:
Значить ServiceDesk'у дали кнопочки, а нам, простым смертным нет?!! :smile:
Все, буду жаловаться в Гаагу.
Нет, а вообще странно как то, вроде не такой уж и продвинутый прям функционал то, почему в стандартной версии нет?

"Бабуков Андрей Александрович" написал:Та невже???
Я не говорю, что я прав, но кнопки есть см. скрин

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

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

Добрый день.
У меня такая проблема в «Страница реестра подчиненных договоров» рисунок process1.png нажимаю кнопку открывается страница «Страница Запрашиваемая сумма транша» process2.png, на этой страничке проводится некая операция и нажимается кнопка «Ок» или «Отмена» после закрывается страничка и передается булевой параметр со значением, значение с булевого параметра я должен получить в «Страница реестра подчиненных договоров», пытался получить следующим образом, выдает ошибку на какой та Key ругается, кусок кода:
string defValuesId = (string)Page.GetParameterValue("defValuesId");
var parameters = UserConnection.UserContext[defValuesId] as Dictionary;
if (parameters.ContainsKey("IsNextRunProcess"))
IsNextRunProcess = Convert.ToBoolean(parameters["IsNextRunProcess"].ToString());
return true;

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

Нравится

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

У Вашей страницы есть список значений по умолчанию (это, скорее всего, страница какой-то детали), а при открытии страницы из БП, Этих параметров НЕТ. Вам нужно в скрипте, при установке параметров открытия страницы указать в словаре значение "defValues".

Здравствуйте, Баглан!

Обратите внимание, если Вы находитесь на странице, то вычитывать UserConnection лучше из страницы.

Кроме того, когда Вами получается Dictionary, и вы хотите обращаться к его элементам в формате ключ/значение, это надо явно указывать при приведении типа. Пример кода:

	string defValuesId = Page.Request.QueryString["defValuesId"].ToString();
	var parameters = Page.UserConnection.UserContext[defValuesId] as Dictionary<string, object>;
	if (parameters.ContainsKey("IsNextRunProcess"))
	IsNextRunProcess = Convert.ToBoolean(parameters["IsNextRunProcess"].ToString());
	return true;

Спасибо Коллеги, у меня получилось следующим образом:
var parameters = UserConnection.UserContext[DefValuesKey] as Dictionary;
if (parameters.ContainsKey("IsNextRunProcess")) {
IsNextRunProcess = Convert.ToBoolean(parameters["IsNextRunProcess"].ToString());
};
return true;

Оказывается ошибка выходила из-за того что я забыл включит галочку «Сериализировать значение» в параметре DefValuesKey

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

Добрый день, Коллеги !!!
При дабл клике на гриде по детали срабатывает какой-то ивент, не могу словить какой. Хотелось бы его отменить. На страници реестра сообщения(ивент) по записи грида даблклик срабатывает после того ивенту который открывает страницу редактирования на детали

Нравится

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

См. функцию GetRegisterTreeGridDblClickScript в BaseGridPage. Если в своей странице детали её переопределить в возвращающую пустое значение, обработчика не будет.
Аналогичный обработчик кнопке "редактировать" задан в GetRegisterEditPageScript.

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

public override string GetRegisterEditPageScript(Guid editPageUId, Guid sysModuleEditId) {
//base.GetRegisterEditPageScript(editPageUId, sysModuleEditId);
return string.Empty;
}

public override string GetRegisterTreeGridDblClickScript(string defaultScript) {
//base.GetRegisterTreeGridDblClickScript(defaultScript);
return string.Empty ;

Решил проблему в методе: PrepareOpenModuleEditPageParameters

"Ильюша Сергей Николаевич" написал:

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

"Илья Т." написал:Добрый день, а подскажите как решили проблему?

BPMOnline Версия 5.2.0.658


В версии 5.2 не уверен если получится но в 5.4 работало. Ищи этот метод не на гриде, а на главной странице, вроде =) точно не помню, давно уже было

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

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

Не понимаю одного: почему, после того как я из второй конфигурации в основную перенес изменения, то их, изменений нет, пользователи их не видят (в дизайнерах объектов, страниц и процессов все видно) и пока я (РУКАМИ!!!) не открою в основной конфигурации хотя бы один измененный элемент не опубликую, никаких изменений никто не увидит....

Так должно быть?

Нравится

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

да, так и должно быть.

После переноса изменений, выполните в основной конфигурации "Сгенерировать исходный код"->"Для выбранных элементов".

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

Есть динамическая папка с условием "Исполнитель = Текущий пользователь", права на папку на чтение есть у всех сотрудников.
У одного пользователя сама папка показывается, но условия нет вообще, соответственно, показываются все записи, вместо того что положено, чистка профиля и кеша браузера не помогла.
Кстати, как чистить профиль, если у пользователя нет таких прав? Или когда я чищу его под системным администратором оно у всех почистится?

Нравится

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

а права доступа к полю Исполнитель у него есть?

конечно, ему же ВСЕ записи показываются, условия в динамической папке нет

Александр, очистите профиль именно для того пользователя, у которого некорректно работает динамическая группа.
Очистить профиль определенным пользователям можно таким запросом:

DELETE  *
FROM tbl_SysProfileData 
WHERE     (ContactID = 'ID контакта')

"Шамуилов Александр" написал:Или когда я чищу его под системным администратором оно у всех почистится?

Только у администратора.

Хм. Интересный пост. Нет, если Вы чистите под админским юзверем, то профиль чистится только для этого пользователя. Так работает система, а вот почему для всех нормально загружается динамический фильтр, а для одного нет, это вопрос интересный.:cry: У этого мега-пользователя нет каких-либо особых разрешений???

"Бондарь Наталия" написал:Очистить профиль определенным пользователям можно таким запросом:

Я сомневаюсь, что это поможет. :sad: Здесь скорее нужно смотреть код страницы.

"Бабуков Андрей Александрович" написал:

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

Когда-нибудь останется работа только для машин и IT'шников :)

Вот и меня это очень сильно заинтересовало, но все именно так все права проверил перепроверил, никак мегаправ у этого "супермена нет".....

"Бондарь Наталия" написал:Александр, очистите профиль именно для того пользователя, у которого некорректно работает динамическая группа.

Помогло, спасибо.

Кстати, вот интересная проблема: как чистить профиль конкретного пользователя, не прибегая к методам "мы подошли из-за угла с SQL пулеметом"?

Можно создать действие в разделе Администрирование:Пользователи, вызов которого будет выполнять запрос по удалению профиля для выделенного в реестре пользователя.
На данный момент профиль очищается только из раздела [Конфигурация] при вызове пользователем соответствующей команды.

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

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

Столкнулся с такой проблемой: нужно добавить новые вкладки (!не детали) в карточку контакта.
Добавил, но проблема заключается в том, что их нужно динамически показывать/скрывать в зависимости от типа контакта. Метод SetVisible() не отрабатывает. Если просто присваивать свойству вкладки Visible true/false, то отрабатывает лишь при открытии карточки.

Каким образом можно реализовать данную задачу?

Нравится

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

"Constantine" написал:Если просто присваивать свойству вкладки Visible true/false, то отрабатывает лишь при открытии карточки.

Это если только на OnPrepare поставили, а если еще попробовать на OnDatasetDataChange поставить скрытие или отображение вкладок?

"Сазанов Александр Владимирович" написал:
Constantine пишет:

Если просто присваивать свойству вкладки Visible true/false, то отрабатывает лишь при открытии карточки.

Это если только на OnPrepare поставили, а если еще попробовать на OnDatasetDataChange поставить скрытие или отображение вкладок?


Вопрос по BPMonline, не по 3.X

Да что же со мной такое, почти никогда не замечаю, что для BPM.

Тогда попробуйте вместо SetVisible(true) использовать Hidden.

Page.MainTab.Hidden = false; //сделать видимым

Премного благодарен

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

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

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

Нравится

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

Constantine, прикрепила во вложенном файле пример реализации.

"Бондарь Наталия" написал:Constantine, прикрепила во вложенном файле пример реализации.

Простите за глупый вопрос. А зачем в одном методе подряд 3 раза вызывать установку свойства:

controlImage.UsePrimaryImageColumn = false;
controlImage.UsePrimaryImageColumn = true;
controlImage.UsePrimaryImageColumn = false;

Одного раза вполне достаточно, чтобы свойство UsePrimaryImageColumn установилось в false.
Или я что-то неправильно понял???

"Бабуков Андрей Александрович" написал:
Бондарь Наталия пишет:

Constantine, прикрепила во вложенном файле пример реализации.

Простите за глупый вопрос. А зачем в одном методе подряд 3 раза вызывать установку свойства:

controlImage.UsePrimaryImageColumn = false;

controlImage.UsePrimaryImageColumn = true;

controlImage.UsePrimaryImageColumn = false;

Одного раза вполне достаточно, чтобы свойство UsePrimaryImageColumn установилось в false.

Или я что-то неправильно понял???

Когда-нибудь останется работа только для машин и IT'шников :)

меня тоже интересует этот момент:smile:

Constantine, Андрей,

установите единожды свойство UsePrimaryImageColumn в false.
Код писался давно, поэтому сейчас не могу сказать по какой причине 3 раза вызывается установка свойства.

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

При первой загрузке файла - все отлично и прекрасно, но дальше начинаются неприятности....
Если загрузить новый файл - в базе происходит обновление, но файл отображается предыдущий.... Переоткрытие карточки не приносит никаких плодов. При этом, если зайти с другого браузера - файл подтягивается новый. Более того - очищаем поле с картинкой, файл продолжает отображаться....
Переоткрываем карточку - пусто, отлично! Загружаем третье фото - барабанная дробь.... видим самое первое изображение:smile:

По сему родились вопросы: как я понимаю файл висит где-то в кэше, каким образом его оттуда удалять при замене файла, либо вообще заставить туда не ложиться (в идеале); каким образом отображать свежезагруженное фото и соответственно очищать при удалении?

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

Добрый день, Константин!

Если нужно очистить профиль в BPMonline, то это можно сделать в конфигурации:

Но судя по описанию, то профиль нужно очищать в браузере.

"Арсений Белецкий" написал:

Добрый день, Константин!

Если нужно очистить профиль в BPMonline, то это можно сделать в конфигурации:

Но судя по описанию, то профиль нужно очищать в браузере.

С уважением,

Белецкий Арсений

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


Арсений, возможно я не совсем правильно разъяснил ситуацию. Проблема именно в том, что я создал поле Фото в карточке Контакта. Обработка отображения и загрузки файла выполнена по аналогии с инструкцией Наталии. Выше я описал поведение этого поля, когда клиент работает с системой. Вопрос в том, каким образом предотвратить такое неадекватное поведение?

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

Константин, попробуйте открыть карточку ContactEditPage в дизайнере страниц (в конфигурации), открыть ее процесс, и в событии ParentPageLoadCompleteAfterBaseScript

дописать предпоследней строчку кода InitializeContactPhoto();

В примере, который дала Наталья есть следующая строка

Page.AddScript(string.Format("{0}.setImage({1});", Page.ContactPhotoImage.ClientID, Json.Serialize(controlImage, new ControlImageJsonConverter())));

не понимаю Json-это namespace или класс JsonSerializer

Ольга, Json это формат обмена данными между клиентом и сервером (http://flexjson.sourceforge.net/).

просто компилятор ругается на эту строчку, я подключила Terrasoft.UI.WebControls.Utilities.Json.Converters, Newtonsoft.Json
всё равно пишет "Имя Json отсутствует в текущем контексте", вот и пытаюсь понять, где взять и что ещё подключить

Ольга, а Terrasoft.Common.Json подключен?

подключила, не ругается...спасибо

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