Здравствуйте! Возможно ли временно отключить зависимость полей от других полей, объявленных через dependencies?
Есть 8 полей, которые завязаны друг на друга. Как можно исключить лишние вычисления?
Но если Вы обновите систему до версии 7.3.0.2100+, например, на последнюю релизную версию 7.3.0.2567, то у Вас появится возможность в любой функции снять флаг IsEntityInitialized:
this.set("IsEntityInitialized", false);
Но затем, после выполнения необходимых Вам действий, обязательно активируйте его повторно, т.к. на него завязано множество логики:
Проблема заключается в следующем: при добавлении записи она отображается в гриде 2 раза (после обновления страницы все выводится верно). При изменении детали все хорошо.
Как избежать повторного отображения строки в гриде при добавлении новой записи, используя updateDetails()?
функция Subscriber необходима, т.к. в детали реализована дополнительная логика и её нужно обновлять после любого изменения.
Деталь реализует предложения. По логике может быть только 1 исполнитель(булево поле). Если в какой-то записи уже выбран исполнитель, то в БД делается update. После этого мне необходимо обновить реестр детали в разделе.
Возможно ли как-то обновить значения в детали используя другие методы либо предотвратить дублирование записей при добавлении?
Здравствуйте, Александр.
Для корректного обновления детали и использования кода предоставленного Вами в обращении Вам необходимо обновить версию приложения до последней релизной версии 7.3.0.х которая имеет исправления касающиеся базовой логики обновления детали, получить которую Вы можете обратившись в техническую поддержку.
Добрый день. BPMOnline 7.4. Столкнулся с похожей проблемой. Для Детали реализована кнопка "Выбрать". Пользователь выбирает запись нажимает кнопку и запись обновляется. Для обновления детали(чтобы запись отображалась как выбранная) вызываю код
this.updateDetail(this.config);
В итоге в реестре детали отображаются две одинаковые записи. Одна старая, вторая обновленная. Может есть другой способ обновить деталь из кода самой детали?
Описанное Вами поведение детали может возникать по ряду причин:
1) Деталь некорректно размещена в контейнере. Можно посмотреть на diff детали и сравнить с другимим - на предмет правильной принадлежности её к Tab контейнеру, посмотреть на ParentName.
2) В config может передаваться некорректные значения, то есть старая деталь неправильно отображается.
3) Деталь загружается нестандартными методами, например не через diff, а в LoadDetailModule.
Эмин, в любом случае необходима отладка, думаю, что из всех перечисленных мной Выше пунктов - второй самый реалистичный.
Игорь, здравствуйте!
Подобная логика реализована в разделе «Контрагенты» на детали «Контакты» при добавлении нового контакта.
В методе ModifyAddPageParameters прописывается:
openPageParameters["CloseMessage"] = "ContactEditPageClosed";
В процессе детали реализована обработка сообщения ContactEditPageClosed с последующим выполнением скрипта:
public virtual bool ScriptContactEditPageClosedExecute(ProcessExecutingContext context) {
Page.TreeGrid.RefreshData();
return true;
}
Я вставку в журнал роблю в скрипті обробки події MeDeadUnblockRecord на BaseServiceRequestInBPMonlineEditPage.
В RecordAllChangesGridPage добавив у метод ModifyAddPageParameters рядок
Игорь,
в данном случае Вам нужно генерировать сообщение из карточки на странице детали.
Необходимо передать идентификатор процесса детали ListenerPageProcessUId в страницу при загрузке. Если такой параметр процесса не существует – создать .
В процессе карточки BaseServiceRequestInBPMonlineEditPage реализовать вызов сообщения процесса детали RecordAllChangesGridPage в обработчике MeDeadUnblockRecord
if (string.IsNullOrEmpty(ListenerPageProcessUId)) {
return;
}
var process = UserConnection.ProcessEngine.FindProcessByUId(ListenerPageProcessUId);
if (process != null) {
process.ThrowEvent(process.InternalContext, “IncidentEditPageClosed”);
}
string listenerPageProcessUId =(string) UserConnection.SessionData["IncidentListenerPageProcessUId"];if(!string.IsNullOrEmpty(listenerPageProcessUId)){
var process = UserConnection.ProcessEngine.FindProcessByUId(listenerPageProcessUId);if(process != null){
process.ThrowEvent(process.InternalContext, "ChangeLogIncidentEditPageClosed");}}
Я замінив IncidentEditPageClosed на ChangeLogIncidentEditPageClosed, щоб не вийшло повторень.
ChangeLogIncidentEditPageClosedScriptTaskExecute:
Page.TreeGrid.RefreshData();
По сигнальних записах у файл видно, що ListenerPageProcessUId успішно проходить через усі скрипти, але ChangeLogIncidentEditPageClosed так і не спрацьовує.
Игорь,
В данной реализации необходимо записывать:
UserConnection.SessionData["IncidentListenerPageProcessUId"] = context.Process.UId;
Где context - параметр ScriptTask
Ну да, значення відрізняється.
В початковому варіанті поточне значення Guid доповнювалося кодом "PageContainer$IncidentsModulePage"
То яке ж має бути значення робочого ListenerPageProcessUId,
просто Guid,
чи
Guid + "PageContainer$IncidentsModulePage"
чи й взагалі
Guid + "PageContainer$RecordAllChangesGridPage" ?
Игорь,
В случае БП следует применять первый вариант.
Для встроенных процессов карточек необходимо использовать
UserConnection.SessionData["IncidentListenerPageProcessUId"] = Page.Process.InstanceUId;
Тепер виникло інше запитання.
При спробі отримати значення одного з об"єктів в скрипті ChangeLogIncidentEditPageClosedScriptTaskExecute:
Page.TreeGrid
Page.DataSource
виконання скрипта припиняється (видно по сигнальних записах у файл).
На кнопку "OK" спрацьовує стандартний алгоритм запису в журнал змін ("Изменение"),
а на "Отмена" та [x] має записуватися в журнал змін запис типу "Открытие".
З кнопкою "Отмена" простіше, а от на [x] доводиться включатися на рівні обробки "MeDeadUnblockRecord".
Та й, власне, на даний момент записи в журнал здійснюються, тільки після "OK" виконується автоматичне оновлення реєстру деталі журналу змін, а після "Отмена", [x] поки що ніяк не вдається заставити реєстр оновитися.
Зараз думаю, що, можливо, краще з BaseServiceRequestInBPMonlineEditPage ініціалізувати подію для реєстра звернень. Як, наприклад, зміна активного звернення викликає оновлення реєстра журналу змін.
Попробуйте, но ведь BaseServiceRequestInBPMonlineEditPage — отдельное окно, а изменение активного обращения происходит в окне грида, встроенном в окно раздела.
В реєстрі звернень однією з деталей є журнал змін, який представлений "RecordAllChangesGridPage"
Якщо відкрити звернення і натиснути "[OK], то в журнал змін буде внесено запис "Изменение" і сам журнал на деталі буде оновлено.
Мені потрібно, щоб при натисненні "Отмена" чи [x] в журнал змін вносився запис "Открытие" і журнал на деталі так само оновлювався.
Я в обробник для "MeDeadUnblockRecord" вставив код, який створює запис "Открытие" в журналі.
Але після закриття вікна звернення (по [Отмена] чи [x]) журнал не оновлюється.
Отже задача: Заставити оновлюватися журнал на деталі в реєстрі звернень після закриття звернення по [Отмена] або [x]
Игорь, по результату телефонного разговора ждем от Вас описания поведения при применении блока try/catch в теле скрипта ChangeLogIncidentEditPageClosedScriptTaskExecute
Спасибо
Задача решилась путем добавления
В метод ModifyAddPageParameters:
openPageParameters["CloseMessage"] = "IncidentPageClosed";
В метод ModifyEditPageParameters:
openPageParameters["CloseMessage"] = "IncidentPageClosed";
Обратил внимание, что в последней строке Set-Cookie на 1 год меньше текущей даты (30-Sep-2013)
Произошло это после перезапуска сайта на сервере iis и очистки кэша.
Нашел источник проблемы.
При перезапуске пула приложения в значение кэшируемой системной настройки попало значение null.
При авторизации система пыталась его преобразовать в Guid.
Необходимый параметр найден следующим запросом (из результата смотрим, какой из них пустой)
SELECT SV.SysAdminUnitId, S.Name, SV.Id
FROM [dbo].[SysSettings] as S
JOIN dbo.SysSettingsValue as SV on SV.SysSettingsId= S.Id
WHERE
ValueTypeName ='Lookup'and
S.IsCacheable=1
Исправлено
update dbo.SysSettingsValue
set SysAdminUnitId ='A29A3BA5-4B0D-DE11-9A51-005056C00008'--все пользователи
where id ='2347BD06-7C30-4A3F-819E-60539FB1B42E'-- id строки, которую нужно править
Какая ошибка то? Невозможно создание объекта сервером программирования объектов? Значит COM не зарегистрирован в системе.
Переменная не определена? Напишите var xmlhttp = new ActiveXObject("MSXML2.ServerXMLHTTP.6.0");
А, и если вы это делаете из браузера - то по умолчанию насколько я помню браузер запрещает создавать ActiveX объекты. Необходимо отдельно включать такую опцию.
Uncaught ReferenceError: ActiveXObject is not defined SOAPClient.js:183
user: Supervisor/7f3b869f-34f3-4f20-ab4d-7480a5fdf647
file: http://softex-iis:8896/0/configuration/c1a08ef0172dd11fc04cad296e761a3e/SOAPClient.js
line:183
message: Uncaught ReferenceError: ActiveXObject is not defined
date: Fri Sep 19201415:25:30 GMT+0400(Московское время (зима))
try{if(window.XMLHttpRequest){
var req =new XMLHttpRequest();// some versions of Moz do not support the readyState property and the onreadystate event so we patch it!if(req.readyState== null){
req.readyState=1;
req.addEventListener("load",
function (){
req.readyState=4;if(typeof req.onreadystatechange=="function")
req.onreadystatechange();},
false);}return req;}if(window.ActiveXObject)returnnew ActiveXObject(SOAPClient._getXmlHttpProgID());}catch(ex){}thrownew Error("Your browser does not support XmlHttp objects");
У ActiveX есть метод .setOption(2, 13056) который отключает проверку SSL сертификатов.
Есть ли аналог для объекта созданного следующим образом
var req = new XMLHttpRequest();
Здравствуйте! При попытке отправить запрос на получение данных (обращение идет по https)
возникает следующая ошибка.
XMLHttpRequest cannot load https://www.crediweb.lv/axis2/services/Info?wsdl. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://softex-iis:8896' is therefore not allowed access.
Здравствуйте! При попытке отправить запрос на получение данных (обращение идет по https)
возникает следующая ошибка.
XMLHttpRequest cannot load https://www.crediweb.lv/axis2/services/Info?wsdl. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://softex-iis:8896' is therefore not allowed access.
Добавил со звездочкой.
Появилась ещё одна ошибка.
ошибка 1
Uncaught InvalidStateError: Failed to execute 'send' on 'XMLHttpRequest': The object's state must be OPENED. SOAPClient.js:194
ошибка 2
XMLHttpRequest cannot load https://www.crediweb.lv/axis2/services/Info?wsdl. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://softex-iis:8896' is therefore not allowed access.
т.е. это надо делать не на softex-iis, а на crediweb.lv.
Что происходит: вы отправляете HTTP запрос в домен crediweb.lv от домена softex-iis. Веб-сервер на crediweb.lv не настроен на прием кросс-доменных запросов (считается не безопасным), поэтому такие запросы отбрасываются, а вам приходит ERROR с текстом из первого поста.
Кстати, из текста ошибки ясно, что сервер таки разрешает кросс-доменные запросы, но вашего локального доменного имени в списке нет. И это правильно, с точки зрения безопасности. Скорее всего, если домен будет не локальным, а чтото вроде tscrm.com - то все будет ОК.
Добрый день.
Скажите, если я прописал данный параметр в конфиге на сервере, должна ли отображаться строка вида "Acces-Control-Allow-Origin: *" в Response Headers запроса?
Как можно добавить данный параметр в заголовок запроса?
Если так, то почему в Responce Headers данный параметр не приходит? Возможна ли ситуация, что заголовки переопределяются после составления запроса. Если да, то как это можно исправить?
Request URL:https://www.crediweb.lv/axis2/services/Info?wsdl
Request Headers
Provisional headers are shown
Origin:http://softex-iis:8896
Referer:http://softex-iis:8896/0/Nui/ViewModule.aspx
User-Agent:Mozilla/5.0(Windows NT 6.2; WOW64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36
X-DevTools-Emulate-Network-Conditions-Client-Id:662B2ABF-4722-49B7-90FA-3857A590FF58
Query String Parametersview sourceview URL encoded
wsdl:
вопрос у меня следующего характера. на сайте http://www.bryntum.com/products/gantt/ приобрел исходники Диаграммы ганта для ExtJS. Теперь вопрос. Подскажите куда мне правильно выложить исходники в формате ExtJS чтобы я смог воспользоваться функциями Диаграммы ганта и создать отдельную страницу посвященную диаграмме ганта. помогите пожалуйста с данным вопросом.
пока предполагаю что нужно создать каталог в директории \...\Terrasoft.WebApp\Resources\ui\ и положить туда исходники. но пока не пробовал, хотел уточнить на правильном я пути или нет. Спасибо!!!
Вам нужно эти исходники перенести в конфигурацию в виде модулей. Затем, создать страницу для отображения и подключив к ней модули исходников ганта использовать их.
У вендроа диаграмы есть документация: http://www.bryntum.com/docs/
Подскажите, пожалуйста, как мне для справочника (страница реестра и страница карточки оставляю пустыми при создании справочника) включить сортировку по возрастанию по полю Тип для всех пользователей???
Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу
Если вопрос по новому интерфейсу, то программная сортировка доступна только для полей с выпадающим списком, для этого необходимо на странице с полем справочного типа, в блоке атрибутов задать lookupListConfig, например сортировка по имени для поля Ответственный:
Не получается добавить иконку для раздела. При сохранении получаю следующее сообщение: "Изменения применены с ошибкой. Невозможно получить значение колонки SourceControlLogin, так как она не была загружена"
В чем может быть проблема?
Вам следует отказаться от использования закоммиченного в хранилище пакета в качестве текущего. Создайте пользовательский пакет для нужд мастера разделов, не публикуйте его в хранилище и установите текущим в системных настройках.
Спасибо, помогло! А таким же принципом для редактирования уже созданных разделов можно?
При попытке их редактирования не сохраняются сделанные изменения. Приходится все делать вручную.