Помогите пожалуйста.
https://community.terrasoft.ru/forum/topic/24808

Нравится

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

Здравствуйте.
Подскажите пожалуйста в чем может быть проблема или как выявить.
В TS вызывается хранимка (в хранимка используеться транзакция, возвращаеться 0 если все хорошо, или текст ошибки), хранимка выполняеться нормально, если скажем она делаеться меньше 5 минут, TS получает ответ и идет дальше, но если делаеться больше 5 минут, TS просто висит (ждали больше часа).
Во время зависания проверил sp_who2, последняя активность соединения была в момент запуска ХП, сама ХП завершает работу успешно. В профайлере активности пользователя активности от пользователя тоже нет.
Также такое зависание бывает просто при переходе из раздела в раздел.
Пользователи работаю с TS через удаленку, т.е. TS запускается на компьютере где развернута БД.

Нравится

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

Лучше не запускать такие длительные действия в онлайн-режиме, полностью вешая систему. Есть смысл переделать логику, чтобы хранимку запускало в фоновом режиме по планировщику на уровне БД, а взаимодействие с интерфейсом осуществлялось путём записи сообщений в определённой таблице базы.

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

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

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

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

string processName = "UsrSendingReportMailByDayProcess";
//DateTime jobStartTime = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day + 1, 19, 0, 0);
AppScheduler.RemoveJob(processName + "Job","Main");
IJobDetail job = AppScheduler.CreateProcessJob(processName + "Job",
                                        "Main", processName, "Default", context.UserConnection.CurrentUser.Name);
//ITrigger trigger = new SimpleTriggerImpl(processName + "Trigger", "Main", jobStartTime);
ITrigger trigger = new CronTriggerImpl(processName + "Trigger", "Main", "0 0 19 ? * *"); //Каждый день в 19:00
AppScheduler.Instance.ScheduleJob(job, trigger);
return true;

Запланирован 22.11, процесс запускался 22.11 -26.11 точно в 19:00, завершался без ошибок. Далее в журнале процесса запусков не зафиксированно, но таблицах QRTZ_JOB_DETAILS, QRTZ_TRIGGERS записи о этом задание есть. В QRTZ_TRIGGERS в поле [PREV_FIRE_TIME] указанно время 28.11 19:00, т.е. триггер и джоб не пропал и выполнился, но процесс не запустился.
До этого были выполнены рекомендации из темы https://community.terrasoft.ru/forum/topic/12848
Также была установлена утилита о которой говориться в теме.

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

Нравится

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

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

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

Алексей, спасибо.
Нашел ошибку "Object reference not set to an instance of an object."
Лог:
2016-11-27 19:00:00,133 [BPMonlineQuartzScheduler_Worker-1] INFO IIS APPPOOL\BPMonline Terrasoft.Core.Scheduler.RunProcessJob Execute - ProcessStart [processSchemaName:UsrSendingReportMailByDayProcess, processElementUId , userName:dmkrotov, workspaceName:Default, workspaceBaseUrl:http://crm.euro-stan.com:88/, timeZoneId:]
2016-11-27 19:00:00,149 [BPMonlineQuartzScheduler_Worker-1] INFO IIS APPPOOL\BPMonline Terrasoft.Core.Scheduler.RunProcessJob Execute - ProcessFail [processSchemaName:UsrSendingReportMailByDayProcess, processElementUId , userName:dmkrotov, workspaceName:Default, workspaceBaseUrl:http://crm.euro-stan.com:88/, timeZoneId:, Exception:System.NullReferenceException: Object reference not set to an instance of an object.
at Terrasoft.Core.ManagerItemCollection`1.FindByUId(Guid uid)
at Terrasoft.Core.Process.ProcessSchemaManager.FindInstanceFromMetaData(Guid schemaUId)
at Terrasoft.Core.SchemaManager`1.GetInstanceFromMetaData(Guid schemaUId)
at Terrasoft.Core.Process.ProcessSchemaManager.GetIsCreatedInInterpretableVersion(ISchemaManagerItem`1 managerItem)
at Terrasoft.Core.Process.ProcessSchemaManager.GetCanUseFlowEngine(UserConnection userConnection, ISchemaManagerItem`1 managerItem)
at Terrasoft.Core.Scheduler.RunProcessJob.RunProcess(UserConnection userConnection, String processSchemaName, JobDataMap dataMap, Dictionary`2 predefinedEntries)
at Terrasoft.Core.Scheduler.RunProcessJob.Execute(IJobExecutionContext context)]

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

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

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

Версия 7.7.0.2284

Тех. поддержка ответила: "Трудно определить источник проблемы “Object reference not set to an instance of an object.” без отладки. Описанное поведение могло возникнуть:
а) в момент запуска процесса – пул приложения выключен
б) после ручного перезапуска сайта некорректно генерировался исходный код

Обе проблемы исправлены в версии 7.8. Для решения задачи необходимо обновить приложение до последней релизной версии 7.8."

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

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

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

Что значит обновить приложение?

Добрый день!
Подразумевается обновить приложение с версии 7.7 до 7.8.4 или 7.9.
На академии есть инструкция по обновлению - https://academy.terrasoft.ua/documents/instrukciya-po-obnovleniyu-bpmon…
У поддержки можно запросить необходимые дистрибутивы.

Добрый день!

Коллеги, может кто-то знает, чем гарантируется (если гарантируется) запуск процесса через планировщик Quartz?

Например, рассмотрим кейс, когда на следующую неделю на среду на 17:00 через планировщик запланирован запуск некоторого бизнес-процесса.

Начиная с вечера пятницы предыдущей недели никто в системе до четверга следующей недели не работал (предположим, были такие длинные праздники). Получается, что в системе никто не работает пятница - четверг. Будет ли в таком случае запущен бизнес-процесс по расписанию в среду в 17:00?

Ведь, процесс w3wp.exe, по всей видимости, будет перезапущен в этом периоде несколько раз? Пусть, для простоты, мы говорим только про on-cloud.

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

Без дополнительных настроек процесс запущен не будет. Для решений on-demand (cloud) используется сервис, который каждые 5 минут "опрашивает" главную страницу. Это позволяет "разбудить" приложение, если пул приложения был перезапущен (у IIS есть свойство перезапускаться каждые сутки).

Для решения on-site есть ряд утилит, которые выполняют аналогичное действие. Пример утилиты можно найти на msdn:
https://social.msdn.microsoft.com/Forums/en-US/8b3258e7-261c-49a0-888c-…

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

Правильно ли я понимаю, что в момент запуска домена приложения, например при "пинге" как вы указали по ссылке выше, запускается процесс w3wp и планировщик QUARTZ запустит и отработает все "просроченные" задачи, не выполненные из-за того, что активных сессий с момента перезапуска IIS не было?

Здравствуйте!
Все верно. Job'ы в планировщике, которые не отработали вовремя изменяют свое состояние, становятся в очередь и ожидают запуска пула приложения.

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

Создал деталь, унаследовался от FileDetailV2, при обновлении страницы (с очисткой кеша, или без - не имеет значения) файлы не отображаются, выдает ошибку:
GET http://***************/1/Nui/Terrasoft/ImageListViewModel.js?_dc=1480419... 404 (Not Found)
Помогает только релогин, или обновление страницы, на которой нет этой детали.
Такая же проблема наблюдается в стандартной EmailFileDetailV2. Подскажите возможно ли решить.
Версия 7.5.0.1328
P.S. Варианты ответов вроде "в 7.8 такой проблемы нет" не являются решением проблемы.

Нравится

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

Уточните каким образом была создана данная деталь (по возможности прикрепите исходный код схем детали).

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

Добрый день.

У меня выскакивает ошибка при загрузке пакета в систему с помощью WorkspaceConsole. В конфигах настроено подключение к БД. Вот скрин:

Нравится

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

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

Необходимо убрать лишние пробелы в *bat файле:
"- operation" = "-operation..."
"- destinationpath" = "-destinationpath"
и.т.д.

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

Необходимо убрать лишние пробелы в *bat файле:
"- operation" = "-operation..."
"- destinationpath" = "-destinationpath"
и.т.д.

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

Добрый день.

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

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

Насколько я понял, необходимо на странице редактирования каким-то образом переопределить метод getDashboardItemsConfig. Но как это сделать, и что там указывать совсем непонятно.

Нравится

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

Легкий вариант:

diff: /**SCHEMA_DIFF*/[
{
	"operation": "remove",
	"name": "EmailMessageTab"
},
{
	"operation": "remove",
	"name": "SocialMessageTab"
}
],/**SCHEMA_DIFF*/

В SectionActionsDashboard. Однако удалит иконки вообще во всех разделах

Спасибо.

Именно то, что нужно.

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

Здравствуйте! При переходы на страницу "Счет" в консоле возникает следующая ошибка рис. 1. Подробнее рис. 2. Подозреваю, что это связано с деталями "Связи.
Помогите, пожалуйста, решить проблему"

Нравится

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

Предположительно Вы не правильно реализовали деталь "Связи". Т.е. у Вас некорректно заданы свзяи между объектами invoice и document (в коробке этого нет). Видимо Вы что-то хотите сделать. Возникает вопрос: что за бизнес-задача?

Я создал свой раздел «Акт» на его странице хотел разместить свою деталь «Связи» рис. 1.
Для этого я сделал следующие действия.
1) В объект раздела добавил справочники на нужные мне обєкты:
 Договор
 продажа
 проект
2) После чего открыл метаданные объекта «Акт». Взял UId - объекта раздела рис. 2

И полей справочников разделов которые я добавил рис. 3

После чего сделал insert в таблицу EntityConnection

И после этого при переходе на раздел «Счета» у меня начала возникать ошибка. Подскажите, пожалуйста, как решить данную проблему.

Подробнее смотрите документ doc_2

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

"Садовский Дмитрий Михайлович" написал:Подскажите, пожалуйста что делаю не так.

Если вы задались целью сделать простую деталь, то зачем столько манипуляций?
1) Создаёте объект, с полями (id, Акт, Договор, Продажа, Проект)/Наследуетесь от базового объекта и докидываете нужные поля (Акт, Договор, Продажа, Проект). Ничего в Объект "Акт" добавлять не надо.
2) Создаёте схему под деталь, наследуетесь от базовой с полями, entitySchema биндите на только что созданный объект + Скорее всего нужно будет через diff разместить поля.
3) В страницу Акта вставляете деталь (по аналогиии с др. деталями: В diff - деталь, в details - конфиг)
4) Опционально: можно её зарегистрировать.

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

Здравствуйте, Дмитрий!

Рекомендую обратиться в службу поддержки, написав по адресу support@terrasoft.ru, если раздел "Счета" не работает.

Ваша задача может быть решена добавлением обычной группы полей. Далее на группу полей достаточно вывести существующие поля объекта. Такая группа полей не будет отличаться от детали "Связи".

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

Здраствуйте! Хочу изменить деталь "Файлы и примечания" для одного из разделов, а именно на "Счета".
Для этого я создал "Схему модели представления детали с реестра". Родительский обьект указал: FileDetailV2. Скопировал код из схемы FileDetailV2 в свою созданную схему. после очистки кеша получил следующую ошибку рис. 1.
Подскажите пожалуйста в чем проблема.

Нравится

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

Если правильно понял суть задачи, то для замещения объекта “DataGrid” необходимо сначала использовать операцию «remove», а затем «insert».
Пример прикрепилdobavitkolonkunadetal-fayly-.doc

Здраствуйте еще раз
Добавил поле в об'экт файлов(UsrCeritificateFile) рис.2
Хочу отобразить его на реестре, но получаю такое(рис.1)

"listedConfig": {
                        "name": "DataGridListedConfig",
                        "items": [
                            {
                                "name": "UsrIsActualListedGridColumn",
                                "bindTo": "UsrIsActual",
                                "position": {
                                    "column": 1,
                                    "colSpan": 2
                                }
                            },
                            {
                                "name": "NameListedGridColumn",
                                "bindTo": "Name",
                                "position": {
                                    "column": 3,
                                    "colSpan": 14
                                },
                                "type": Terrasoft.GridCellType.LINK
                            },
                            {
                                "name": "CreatedOnListedGridColumn",
                                "bindTo": "CreatedOn",
                                "position": {
                                    "column": 15,
                                    "colSpan": 2
                                }
                            }
                        ]
                    },

Вам необходимо заместить метод getGridDataColumns с добавлением в его переменную gridDataColumns своей колонки (добавленной в listedConfig).

Код метода из FileDetailV2:

getGridDataColumns: function() {
	var baseGridDataColumns = this.callParent(arguments);
	var gridDataColumns = {
		"Type": {
			path: "Type"
		},
		"Version": {
			path: "Version"
		}
	};
	return this.Ext.apply(baseGridDataColumns, gridDataColumns);
},

"Мотков Илья" написал:Вам необходимо заместить метод getGridDataColumns с добавлением в его переменную gridDataColumns своей колонки (добавленной в listedConfig).

Код метода из FileDetailV2:

getGridDataColumns: function() {
        var baseGridDataColumns = this.callParent(arguments);
        var gridDataColumns = {
                "Type": {
                        path: "Type"
                },
                "Version": {
                        path: "Version"
                }
        };
        return this.Ext.apply(baseGridDataColumns, gridDataColumns);
},


А возможно сам listedConfig менять динамически?

Добрый день, Евгений!

К сожалению, динамически менять listedConfig не получится.

Подскажите, пожалуйста, а есть тогда какие-либо возможности динамического создания простого грида?
Например:

var grid = Ext.create("Terrasoft.Grid", config);
grid.render(container);

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

Полная документация по js есть в sdk, конкретно в этом случае подойдет статья:
https://academy.terrasoft.ru/jscoresdk/#!/api/Terrasoft.controls.Grid

Вопрос, близкий к теме - а можно ли сделать деталь Файлы и ссылки с редактируемым реестром, как вот здесь: https://academy.terrasoft.ru/documents/technic-sdk/7-8/sozdanie-detali-… ?

То есть, если я хочу добавить к объекту детали ещё несколько колонок (к примеру, на скриншоте вывел колонку заказа - но она есть по умолчанию и служит для связи со страницей) и заполнять их уже вручную? Это могут быть какие-либо дополнительные сведения о файле и тд

Попробовал просто перенести содержимое diff и прочее из примера- вылезает ошибка, что CreatedOn уже существует.

Денис, к сожалению, такой функционал реализовать не выйдет, так в системе нет соответствующей колонки для хранения файлов.

"Кот Владимир Владимирович" написал:

Денис, к сожалению, такой функционал реализовать не выйдет, так в системе нет соответствующей колонки для хранения файлов.

Владимир, спасибо, понятно.

Уточняющий момент, только - это только для файлов, или вообще для ссылок?

Если я например в простой детали с реестром (не FileDetail, а обычной) вот по такой схеме: http://www.community.terrasoft.ru/forum/topic/25377#comment-68061 сделаю какую либо колонку ссылкой (пусть даже ссылкой на файл, или какой-либо другой ресурс) - то можно ли будет на эту деталь редактируемый реестр навесить, или нет?

Для примера - в Заказе есть деталь График поставок, она с редаткируемым реестром, ну и там ссылки, правда колонка справочная.

Добрый день Денис.

В базовой реализации грида за ссылки отвечает метод addColumnLink из GridUtilitiesV2.

Пример замещения метода:

addColumnLink: function(item, column) {
	if (column.columnPath === "UsrColumn1" || column.columnPath === "UsrColumn2") {
		var onColumnLinkClickName = "on" + column.columnPath + "LinkClick";
		item[onColumnLinkClickName] = function() {
			return {
				caption: item.get(column.columnPath),
				target: "_blank",
				title: item.get(column.columnPath),
				url: "https://test.ru" + item.get(column.columnPath)};
		};
	} this.callParent(arguments);
},

где UsrColumn1 и UsrColumn2 - имена текстовых колонок в бд.

В свойство url Вам необходимо добавить ссылку по аналогии с ссылкой формируемой деталью файлы и ссылки на сервис FileService.

Пример ссылки: http://localhost/bpmonline7100SalesEnterprise_Marketing_CustomerCenter_…

Илья, спасибо.

Был ещё вопрос, можно ли деталь с такими ссылками сделать деталью с редактируемым реестром, то есть деталью такого типа: https://academy.terrasoft.ru/documents/technic-sdk/7-8/sozdanie-detali-… ?

Ведь по идее эта колонка изначально может быть обычной строкой.

Уже не надо - ответ на мой же вопрос: да, возможно. Для этого надо помимо переопределения методов добавить в values DataGrid детали:

"useLinks": true,

Метод addColumnLink выполняется и для детали с редактируемым реестром. Предоставленный раннее код какраз для текстовых колонок.

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

Использовал код из сообщения http://www.community.terrasoft.ru/forum/topic/24805#comment-65796

Все сработало колонки добавились, только пришлось удалить метод getGridDataColumns т.к., ловил ошибку

message: Uncaught Terrasoft.ItemAlreadyExistsException: Элемент с ключём "CreatedOn" Уже существует .

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

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

Добрый день!

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

Нравится

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

Поделюсь ответом поддержки:

"Разбивание длинных заголовок на несколько строк происходит по причине css стилей, применяемых к карточкам. Для изменения данного поведения, Вам необходимо применить свои css стили к схемам, на которых Вы планируете изменить ширину лэйблов. Особое внимание обратите на css селектор .label-wrap, к которому применен следующий стиль: max-width: 15em."

Добавление пользовательских стилей подробно обсуждалось в следующей статье на комьюнити:
http://www.community.terrasoft.ru/forum/topic/16386

Владимир, спасибо!

Возьмем на вооружение :)

С уважением,
Дмитрий

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

Нужно вытащить из базы 4 таблицы по 8-10 полей, прав на каждую у пользователя нет, это нужно сделать для отчета(fast report). какие у кого идеи есть?

Нравится

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

Классическая задача :)
Создайте view на сервере с выборкой нужных данных. На view право чтения для public. В terrasoft соответствующий по структуре и названию объект таблица, только не сохраняйте его в базу данных. Далее стандартно, sq_, ds_

Огромное спасибо, выручили!

"Александр Кудряшов" написал:оздайте view на сервере с выборкой нужных данных.

это можно применить к разделу звонков от Webitel?

"Радчук Виталий Владимирович" написал:это можно применить к разделу звонков от Webitel?

Точнее к чтению данных из таблиц - вполне можно. Лицензия на раздел у пользователя проверяется на уровне попытки в системе использования любых сервисов из соответствующего модуля. А таблицы на сервере доступны, лишь бы права на их чтение были у того, из под кого делается запрос.

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