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

Exception Message: Value cannot be null.
Parameter name: key
Exception Type: System.ArgumentNullException
Exception Source: mscorlib

Exception Stack Trace:
at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value)
at Terrasoft.Core.Entities.EntityColumnValueCollection.GetByName(String name)
at Terrasoft.Core.Entities.Entity.GetTypedColumnValue[TResult](String valueName)
at Terrasoft.WebApp.BaseModuleEditPageEventsProcess`1.ScriptPageLoadCompleteExecute(ProcessExecutingContext context)
at Terrasoft.Core.Process.ProcessScriptTask.InternalExecute(ProcessExecutingContext context)

Я понимаю, что Value cannot be null, но вопрос в том какое? Что он хочет? Обязательные поля заполнены,
какого ему надо?

Нравится

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

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

а я вам сразу скажу что проверять - смотрите для объекта "системные колонки" - "отображаемое значение", оно скорее всего не назначено (ищем в свойствах объекта выбрав параметр "все")

Етить ту дивизию, японский городовой, я идиёт! :lol:
Проклятый склероз!!
Вопрос закрыт.

Тёзка, я ваш должник! :wink:

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

BPM Succcess Portal -- по ходу вас проблемы ;-)

Date: 06.08.2013 6:24:07
Date (UTC): 06.08.2013 3:24:07

Exception Message: There is not enough space on the disk.

Exception Type: System.IO.IOException
Exception Source: mscorlib

P.S. Вот захочешь десяточку поставить как настоящий "happy customer" -- дык не дадуть....:lol:

Нравится

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

Александр, спасибо за комментарий.

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

На текущий момент, работа портала возобновлена.

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

Коллеги, здравствуйте!

Я доработал карточку продукта,а именно добавил ряд новых числовых/справочных полей. Но теперь мне необходимо что бы эти новые поля использовались при создании печатных форм в MS Word. Если Вы уже сталкивались с этой задаче, то прошу поделиться своим опытом как это сделать и что нужно донастроить.

Спасибо!

Нравится

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

Здравствуйте, Сергей! Уточните пожалуйста версию продукта по которому задан вопрос.

Здравствуйте, BPMonline 7.

Здравствуйте, Сергей! Постарался проделать весь алгоритм, Ваших, действий с добавлением новых полей в карточку продукта. Инструкцию по добавлению печатных форм прикрепил файлом. Рекомендую обратить внимание на раздел "Настройка печатных форм MS Word" в справочнике BPMonline. Там очень детально расписана процедура добавления. Если у Вас возникнут вопросы, пожалуйста обращайтесь, рад буду помочь Вам!
pechatnye_formy.rar

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

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

Каким образом в BPMonline вызывается надпись "Загрузка" во время выполнения долгих операций, например, при сохранении схемы или при переходе из модуля в модуль? И каким образом можно ее вызвать в определенный момент?

Нравится

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

Тоже долго бился над эти вопросом, и вот ответ:

выбрать галочку "отображать загрузку" у события.

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

А кто нибудь пробовал сделать прогресс бар для длительных операций хотя бы в духе "Обработано хх из уу записей" (чтобы число обновлялось по мере выполнения обработки)?
В 3.х для того чтобы прорисовывалось изменяющееся число в окне при выполнении цикла можно было использовать System.ProcessMessages.
А то при длительной обработке (массовая операция с записями в моем случае) висящее сообщение "загрузка" как то некрасиво выглядит... пользователю гораздо приятнее будет видеть прогресс выполнения.

Александр, можно поступить также как реализован поиск дублей: в MessagePanel в реестре данных выводится сообщение, которое обновляется по мере выполнения процесса:

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

Дмитрий, спасибо за ответ! Сейчас посмотрю реализацию

Сделал вроде бы аналогично, но выдается сообщение только в самом конце - 100% :smile:
Проблемка как бы осталась - очень хочется получить "бегущие" значения от 0 до 100... в 3ке повторюсь это решалось путем добавления System.ProcessMessages, в результате перерисовывался в цикле текст сообщения. Тут нужно что-то похожее - перерисовка визуального компонента происходит уже после срабатывания всего цикла (он естественно в элементе задание-сценарий), и несмотря на наличие в сценарии throwevent, оно может и пробрасывается, но вот именно экранная форма и не перерисовывается...

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

Если не получится - думаю нужно посмотреть в сторону запуска клиентских javascript функций (по работе с элементами страницы), с помощью которой (getElementById) менять значение label'a.

"Олейник Дмитрий" написал:Если не получится - думаю нужно посмотреть в сторону запуска клиентских javascript функций (по работе с элементами страницы), с помощью которой (getElementById) менять значение label'a.

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

Александр, вот здесь я вызываю alert по нажатию на "ОК" в карточке:

http://www.community.terrasoft.ru/forum/topic/9711#comment-41436

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

Думаю, причина в том, что запрос(POST back) на клиент отправляется не после каждого прохода цикла, а после завершения всего метода. Наверное стоит попробовать добавить call-back в js функцию, т.е. написать еще одну функцию, которая будет выполнятся после выполнения первой. Можно Ваш код на js-e что-бы протестировать.

на Init окна:

Page.AddScript("function UpdateProgress(ProgressValue) {document.getElementById(\"PageContainer_Label1\"").innerHTML = ProgressValue;}"");

Александр, у меня получилось так:

Init:

Page.AddScript("function test(param) { alert(\"Hello World!\"" + param); } "");

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

Александр, суть в том, что функция все таки вызывается 10 раз.
Вот так сделайте:

Ext.get('ext-gen847').dom.innerText = 'тест';

можно так:

Page.AddScript("function UpdateProgress(ProgressValue) {Ext.get(\"PageContainer_Label1\"").dom.innerText = ProgressValue;}"");

Где ext-gen847 id label (там не должно быть Page_Container).

Дело в том, что:

Page.AddScript("function UpdateProgress(ProgressValue) {Ext.get(\"ext-gen55\"").dom.innerText = ProgressValue;}"");

Я не добавлял "тяжелый" цикл. Просто добавил console.log:

for (int i = 0; i < 10; i++)
{
	Page.AddScript("test("+i+");");
	Page.AddScript("console.log("+i+");");
}

И получил:

Так что должно перерисовывать...

Тяжелый цикл я так и не придумал, сделал на js-e чтобы тикала точка каждые 0,5 сек в течении 5 сек, может пригодится.

Init:

Page.AddScript("function progress() { 	var i = true; 	var doProgress = setInterval(function() { 		if(i) { 			Ext.get('ext-gen847').dom.innerText += '.'; 		} 	}, 500); 	setTimeout(function() { i = false; }, 5000); } ");

ButtonOKClicked:

Page.AddScript("Ext.get('ext-gen847').dom.innerText = '';");
 
Page.AddScript("progress()");

Внутри видео:
23-01-2014_17-34-09.rar

Спасибо, Дмитрий! Буду разбираться, видео увидел.... у меня пока не заработало...

Заодно вопрос такой, чтобы не создавать новую тему - при длительном исполнении скрипта несколько раз "ловил" в конце выполнения штатное окно "Внимание" - В работе приложения возникла ошибка.... Время ожидания выполнения запроса истекло. ActionId: Click; ControlId: PageContainer_ButtonStart; SubmitAjaxEventConfig: {"config": {"viewStateMode": "include", "extraParams":{}}}
Контрол тот, клик по которому вызывает выполнение длинного скрипта... При этом скрипт насколько я понял отрабатывает полностью. Можно ли как то избежать появления этого окна?

Александр, не думаю. Это окно - ядровая обработка "клиентских" свалов. При этом они могут быть и не критичными (т.к. 99% логики - серверная).
По поводу загрузки, можно написать мой вариант (с точками полностью на js), к примеру на 20 секунд, а по окончании выполнения скрипта, скрывать этот лейбл. Даже если он выполнится за 12 секунд, "тики" видно уже не будет. При старте действия - лейбл отображать.

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

Александр, если возникнут доп. вопросы - обращайтесь!

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

В системе BPMonline On-Demand реализована функция поиска контактов на фейсбук. Только с некоторой категорией контактов необыкновенная магия - выкидавет огромные списки, но ни один не подходит. Причем что человек может уже быть у меня в друзьях и его легко можно найти через строку поиска в фейсбук http://screencast.com/t/HrDXPF7TO
И тут начинаются танцы: перестановка местами имени, фамилии, пробел после фамилии, поиск только по фамилии и т.д. и т.п.

Это все занимает много времени и часто не приносит никаких успехов.

Если у кого есть более успешные методы - напишите.
Буду благодарна!

Нравится

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

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

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

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

Я понимаю, что Вы ищите по API.
Но Вы выдали функцию, которая работает недосконально. Если осуществляется поиск по API, почему не искать сразу же нужную страницу - вписывая аккаунт ID ?

Юлия, Facebook для интеграции с другими приложениями предоставляет свой API. BPMonline для поиска использует Facebook API, т.е. использует методы, предоставленные Facebook для интеграции с другими приложениями. Поэтому, со стороны BPMonline, мы не влияем на результаты поиска, а выводим данные, которые предоставил Facebook.

"Резвов Роман" написал:

Юлия, Facebook для интеграции с другими приложениями предоставляет свой API. BPMonline для поиска использует Facebook API, т.е. использует методы, предоставленные Facebook для интеграции с другими приложениями. Поэтому, со стороны BPMonline, мы не влияем на результаты поиска, а выводим данные, которые предоставил Facebook.

С уважением,

Роман Резвов

Специалист службы поддержки II линии

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

То есть, вы не можете найти пользователя по его адресу в Facebook?
Или отобразить в списке найденных результатов этот адрес (или фото и другие данные)?

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

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

Добрый день!!!
У меня сразу три вопроса:
1. Я изменил содержимое страници в студии и хотел сохранить, но мне сказало что файл только для чтения, но я всеравно его изменил, после зафиксировал изменения в хранилище и в бд, но после. отключения useFileContent изменений в бд не произошло. Как дебажить ? Так как и в 5-ке только JavaScript ?
2. Добавлять ивенты к контролам ? какие контролы есть ? Где это можна посмотреть? Есть что-то наподобие БП как было в 5 к страницам ?
3. Как правильно просмотреть свойства объекта, методы ? В VS не то показывает

Нравится

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

Добрый день.

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

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

Отладка и просмотр свойств объектов происходит на клиенте в консоли браузера.

Процессов для страниц как в 5.4. нет. Вся логика в *.js файле страницы. Ивенты на контролы можно добавлять. К примеру OnChange:

{
	type: Terrasoft.ViewModelSchemaItem.ATTRIBUTE,
	name: 'JobTitle',
	columnPath: 'JobTitle',
	dataValueType: Terrasoft.DataValueType.TEXT,
	visible: true,
	dependencies: ['Job'],
	methodName: 'jobChanged'
}
...
this.methods.jobChanged = fucntion { }

Контролы:

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

Какой то бред происходит.
Создаю объект для справочника от базового.
Создаю страницу редактирования для этого объекта справочника от базовой.
Создаю реестр тоже от базового реестра справочника.
Прописываю все это в разделе "Справочники", получаю вопрос добавить ли его в текущую группу, отвечаю Да и......справочника нет.
Нигде, ни в какой группе, вообще нет в справочниках.
А в БД в представлении [VwSysLookup] есть.
Это как понимать?

Нравится

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

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

А по поводу проблемы: в другом браузере смотреть не пробовали?
Если добавить повторно такую же запись, система ругается на дубликат?

Это все лирика к делу не относится.
Смотрел в др бразуерах то же самое.
Если повторно добавить такой же, не ругается, но и не создает тоже ничего, а в БД в таблице SysLookup появляется еще одна запись с таким же значением столбца Name.

И кстати, так оно себя ведет с любым справочником......они в SysLookup появляются, а в Справочниках не показываются. При этом при создании колонки объекта типа справочник, этот справочник можно выбрать списке.

Короче, глюк конкретный.

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

Кстати, такой вопрос:
- таблицу SysLookup вижу
- таблицу SysLookupFolder вижу
А вот таблицу SysLookupInFolder не вижу......
Так надо?

Да, это нормально - в SysLookup есть колонка SysLookupFolder.

Запрос

select a.Name, b.Name from SysLookup a
inner join SysLookupFolder b
on a.SysFolderId = b.Id
where a.Name = 'Ваш справочник'

возвращает результаты?

SELECT a.Name, b.Name FROM SysLookup a
INNER JOIN SysLookupFolder b
ON a.SysFolderId = b.Id
WHERE a.Name = 'Состояния заявки'

возвращает:
Состояния заявки Все справочники
Состояния заявки Заявки

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

Все это уже делал.
Жду подключения.

Александр, в продолжение удаленного подключения, проблема была в том, что схемы объекта не существовало в основной(default) конфигурации.

Спасибо большое за помощь.

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

Не передергивайте. Это все к больному:wink: вопросу о документации...

Справочники можно регистрировать в какой угодно конфигурации. Но перед этим их объекты и страницы надо перенести на корневую. И желательно там скомпилировать.

Хорошо. Уточнение принято. Но про это тоже не написано. :smile:

Александр, спасибо. Передам информацию документаторам :)

Я рад :smile: Искренне, за идущих за нами....

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

Здравствуйте
создаю новый раздел в BPMonline 7.0.0.167, не отображаются данные в разделе.
карточка есть, заполняю, сохраняю, в разделе не отображаются, хотя в БД записи создаются

делал по схеме:
1. Создать объект раздела.
2. Создать схему представления раздела (название - [ИмяОбъекта]Section, к примеру ProductSection);
3. Создать схему представления карточки (название - [ИмяОбъекта]Page, к примеру ProductPage);
4. Выполнить скрипт по регистрации раздела

прилагаю скрины






Нравится

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

Добрый день.

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

Проблему решил сам, нужно было создать еще объекты [ИмяОбъекта]Folder и [ИмяОбъекта]InFolder :cool:

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

Нигде не могу найти описание метода. Хотелось бы увидеть его - какие параметры, примеры и так далее...

Или это какой-то созданный метод? Он используется в очень многих местах.

AccountPage.js

callServiceMethod.call(scope, scope.ajaxProvider, 'FindAccountDuplicates', function(responce) { .... }

CardViewModelGenerator.js

this.callServiceMethod.call(this, 'SysSettingsService', 'GetIncrementValueVsMask', function(responce) {.... }

Нравится

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

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

После обновления BMPonline 7 (бинарники и пакеты через консоль) с 138 версии на 206, при попытке зайти на сайт CRM вылазит ошибка:

"Ошибка сервера
500 - внутренняя ошибка сервера.
Проблема с запрашиваемым ресурсом; ресурс не может быть отображен."

Судя по описанию ошибки в инете проблема скорей всего с правами на сервере или настройками IIS, но пока устранить не получилось...

Может кто сталкивался? или сможет подсказать куда копать хотя бы?
Самое странное что это произошло после обновления террасофта (настройки iis не менялись, папка тоже =\ просто тупо заменили файлы в старой папке на новые и отредактировали файлы Web.config и ConnectionString в корне и после накатили пакеты через консоль)
*возможно кроме Web.config'а и ConnectionString'а в корневой папке нужно править еще какие-нить файлы?

Буду раз за любую информации по данному вопросу!

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

Нравится

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

Добрый день!
давайте по порядку.

сейчас, постараюсь описать все, что не касается самих бинарников, а только IIS, предполагаю, что Вы все сделали правильно и загвоздка именно в нем.

1) Пул приложений

2) Handler Mappings

3) Authentication

4) проверить привязки сайта, ссылаются ли они в нужные места:

кажется все.
Перепроверьте, проблема должна уйти, если нет - жду скрин-шот :)

Тему можно закрывать
Спасибо за ответ Сергей, но мы как оказалось сами накосячили...
когда файл новой версии редактировали с настройками Web.config в Notepade++ сохранили его не посмотрев КАК он его сохранил ) в итоге сохранение файла прошло в ANSI, вместо Unicode и строчка

<add name="UserNameMask" value="Пользователь {0}" />

превратилась в

<add name="UserNameMask" value="???????? {0}" />

и сервер воспринимал это как ошибку в структуре xml =\ о чем и написал нам при попытке посмотреть настройки приложения в IIS

отлично! приятной работы ;)

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