Здравствуйте, коллеги.

Помогите разобраться в следующей проблеме: переношу пакет со среды разработки в тест. Установка пакета - ОК. В пакете настроена мини-карточка Лида и Продукта на добавление записи. После установки на тест мини-карточка Лида работает как и должна, а мини-карточка Продукта - отсутствует. В настройках раздела Продукты в среде разработки Мини-карточка включена на добавление и настроена, а на тесте - не включена и не настроена.

Подскажите решение, плс.

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

Нравится

5 комментариев
Лучший ответ

Проблема в том, что когда мастер автоматически генерирует привязки, он не проставляет в них флаг "Обязательно для обновления" и привязки ставятся только те, которых в другой среде ещё не было. Зайдите в привязки, проставьте вручную флаг "Обязательно для обновления" на все колонки кроме ключа и всё перенесётся.

Добрый вечер.

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

Посмотрите в таблице SysModuleEdit есть поле MiniPageSchemaUId. Проверьте, заполнено ли оно для Вашего раздела на деве и на тесте.

Также для решения проблемы рекомендую изучить статью по добавлению миникарточки на Академии.

Если все данные внесены, тогда можете ещё попробовать сгенерировать исходный код, скомпилировать все приложение и очистить редис и кеш браузера.

Скорее всего, при переносе с системы на систему перенесли не всё: либо не прикрепили к пакету и не перенесли какую-то схему, либо данные из таблиц, которые задают связь между разделом и мини-карточкой. Попробуйте на работающей системе менять настройки мини-карточки (включать/выключать для раздела) и смотреть в профайлере, что меняется в базе при этом в таблицах разделов и системных настроек. Примеры SQL-запросов при создании мини-карточки есть в этой статье.

Проблема в том, что когда мастер автоматически генерирует привязки, он не проставляет в них флаг "Обязательно для обновления" и привязки ставятся только те, которых в другой среде ещё не было. Зайдите в привязки, проставьте вручную флаг "Обязательно для обновления" на все колонки кроме ключа и всё перенесётся.

Спасибо, уважаемые коллеги. Буду пробовать.

Виталий Жилин пишет:

Проблема в том, что когда мастер автоматически генерирует привязки, он не проставляет в них флаг "Обязательно для обновления"

Хорошо бы это как-то поправить, чтобы управлять, не перерывая Id'шники в базе данных 

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

Всем доброго времени суток! Столкнулся со следующей проблемой. Есть БП который запускается после изменения записи, в нем есть скрипт-таск в котором определяется заголовок Origin - System.Web.HttpContext.Current.Request.Headers["Origin"], если изменение производились через карточку записи то заголовок присутствовал и процесс шел по одной ветке, если же изменение произошло кодом через интеграцию, то заголовок был пустой. Это работало до недавнего времени, сейчас же System.Web.HttpContext.Current == null.

Кто нибудь с таким сталкивался?

Нравится

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

Разобрался, в настройке начального сигнала стояло выполнять след. эл-ты в фоне. Из-за этого не читалось.

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

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

Добрый день.

Через бизнес-процесс настраивается Email. При вызове бизнес-процесса передаются параметры для подстановки в Email.



Подстановка текстовых значений - работает. Вопрос в том, возможно ли подставить в URL переменный параметр. К примеру, стороннюю ссылку.

Также, возможно ли подстановка картинки из передаваемого URL в шаблон письма?

К примеру, штрих-код.

Нравится

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

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

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

При параллельном сохранении Entity.Save() с использованием параллельных потоков Parallel.ForEach получаю ошибку:

System.Data.SqlClient.SqlException: A trigger returned a resultset and/or was running with SET NOCOUNT OFF while another outstanding result set was active.



Как установить NOCOUNT ON для объекта Entity при сохранении?

Нравится

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

Проблема возникает из-за того, что в каком-то триггере в базе данных для таблицы, связанной со схемой Entity не установлен SET NOCOUNT ON.

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

У меня, например, такая проблема воспроизводилась при попытке удалить бизнес-процесс из конфигураци и возникала для объекта Contact. Для этой таблицы в БД есть триггер завязанный на изменение (UPDATE), но в нем не было установлено SET NOCOUNT ON.

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

Суть ошибки я понимаю. Вопрос в другом имеем ли мы право вносить правки в системные триггер.

 

Добрый день, Игорь.

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

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

Узнать, что это за триггер, можно, наблюдая запросы в профайлере.

Мотков Илья,

Илья, Добрый день.

проблема в базовых триггерах таблиц Contact и Account

Это стандартная логика, связанная с поиском дублей и полем-изображением. Из трёх триггеров на событии вставки и изменения работает только один, обновляющий изображение.

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

Коновалов Игорь пишет:

Суть ошибки я понимаю. Вопрос в другом имеем ли мы право вносить правки в системные триггер.

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

Если это ошибка, тогда хотелось бы получить от поддержки Terrasoft решение.

Решением будет удаление некорректных сторонних доработок, которые ломают стандартную логику триггеров раздела. В конфигурации вообще использование Parallel.ForEach минимально, только один раз при работе с сервисом рассылок.

Илья, вопрос к триггерам таблицы

- Контрагент:

TRILqybnWrGVlAZ250EZZORaS6GAIU

TRILqybnWrGVlAZ250EZZORaS6GJAD

TRAccountID

- Контакт:

TRContactID

TRILE9Mk5tdkf4ii5Xu52IJW7JlLAD



Все они являются базовыми и все содержат строку

SET NOCOUNT ON

Игорь, это стандартные триггеры. Без крайней необходимости их менять не стоит. Адаптируйте свой код, чтобы он не вызывал сбоев.

Мотков Илья,

Я обрабатываю большой объем данных. Без применения

Parallel.ForEach данная выгрузка займет несколько дней.

Базовые триггеры прерывают данный процесс.



 

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

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

Добрый день!

Версия продукта: 7.14.1.935

Bpm Online Service

Если на странице есть 2 поля типа справочник, которые опираются на разные объекты, то можно ли для них настроить фильтрацию друг от друга только на уровне js (например, за счет использования filtration)?

Или требуется пересаживать их на новый объект, который содержит в себе значения обоих полей (скажем, join этих объектов + объекта, который содержит в себе описание связей)?

Нравится

5 комментариев
Лучший ответ

Александр Кулиш,

Мне ранее помогали коллеги из Сообщества Террасофт c фильтрацией по группе ответственных и Сервису. Возможно что-то пригодится Вам для реализации Вашей задачи. Посмотрите следующий пост:

https://community.terrasoft.ru/questions/kak-nastroit-filtr-po-servisu-i-gruppe-otvetstvennyh

Добрый день!

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

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

Напишите подробнее, какую задачу пытаетесь решить.

Алла Савельева,

Добрый день!

Извините за задержку с ответом. Ожидал оповещения на почту в случае комментариев, но видимо они уже не ходят.

На карточке обращения есть поля:

1) группа исполнителя

2) исполнитель

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

Григорий Чех,

 

Добрый день!

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

Александр Кулиш,

Мне ранее помогали коллеги из Сообщества Террасофт c фильтрацией по группе ответственных и Сервису. Возможно что-то пригодится Вам для реализации Вашей задачи. Посмотрите следующий пост:

https://community.terrasoft.ru/questions/kak-nastroit-filtr-po-servisu-i-gruppe-otvetstvennyh

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

Добрый день.

Настроил сайт на выгрузку исходников для отладки согласно инструкции

https://academy.terrasoft.ru/documents/technic-sdk/7-14/instrumenty-otl…

В основном конфиге

Во внутреннем:



 

Выполнил полную компиляцию, исходники не появились.

На прошлых версиях отлично выгружались при аналогичном конфиге.

Подскажите, в чем может быть проблема?

Нравится

5 комментариев
Лучший ответ

Цитирую поддержку террасофта:

"Добрый день, Данила.

Получил обратную связь от команды разработки. Параметр CompilerSourcesTempFolderPath больше не используется. По умолчанию исходный код конфигурации выгружается в Terrasoft.WebApp\Terrasoft.Configuration\Src. Если включен РФС, то для выгрузки необходимо выполнить действие "Download packages to file system"."

Грубо говоря, с  7.14.4 все схемы разносятся по Terrasoft.WebApp\Terrasoft.Configuration (в src - исходники, obj - символы, lib - библиотеки и т.п.) не зависимо от настроек  ̶и̶ ̶н̶а̶ш̶е̶г̶о̶ ̶м̶н̶е̶н̶и̶я̶

Проверьте что на каталог 

"Путь_к_локальному_каталогу" 

есть права на запись у пользователя от которого запускается IIS пул

Подробнее тут

Цитирую поддержку террасофта:

"Добрый день, Данила.

Получил обратную связь от команды разработки. Параметр CompilerSourcesTempFolderPath больше не используется. По умолчанию исходный код конфигурации выгружается в Terrasoft.WebApp\Terrasoft.Configuration\Src. Если включен РФС, то для выгрузки необходимо выполнить действие "Download packages to file system"."

Грубо говоря, с  7.14.4 все схемы разносятся по Terrasoft.WebApp\Terrasoft.Configuration (в src - исходники, obj - символы, lib - библиотеки и т.п.) не зависимо от настроек  ̶и̶ ̶н̶а̶ш̶е̶г̶о̶ ̶м̶н̶е̶н̶и̶я̶

Григорий Чех,

Права на папку были, дело не в них

Варфоломеев Данила,

Спасибо большое, очень помогло. Пришлось бы долго искать. В документации об этом ничего не сказано

Коллеги, получается, что начиная с 7.14.4 единственный инструмент разработки / отладки исходного кода - это РФС?

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

Добрый день!

Версия продукта: 7.14.1.935

Bpm Online Service



Идет доработка формы реклассификации в разделе обращений.

"Схема карточки редактирования действия реклассификации"

Был создал замещающий клиентский модуль.

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

 

Нравится

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

В этой карточке ReclassificationEditPage аналогичная логика реализована для полей из объекта обращения ServicePact, ServiceItem и Category. Попробуйте для своих полей сделать в коде подобным образом.

Зверев Александр,

Добрый день!

Извините за задержку с ответом. Ожидал оповещения на почту в случае комментариев, но видимо они уже не ходят.

Да, спасибо. Так и делал.

Только не все действия удалось вычленить из того кода. 

Можете подсказать, какая логика в реклассификаторе отвечает за первоначальное заполнение полей при открытии консоли?

Попытки корректировки логики именно в этой части к успеху пока не привели.

О какой консоли речь?

Зверев Александр,

Есть карточка Обращения. В ней заполнены необходимые поля.

Далее открываю консоль Реклассификации.

Вопрос: куда копать, чтобы найти логику заполнения полей консоли Реклассификации при ее открытии?

Ранее коробочный js-файл консоли реклассификации крутил, но не смог верным образом изменить заполнение новых полей.

Смотрите код ReclassificationEditPage. Что такое «консоль реклассификации» — увы, не знаю, стандартно такого механизма в системе нет. Возможно, это дополнение или проектная доработка.

Зверев Александр,

Возможно я неверно выразился.

Из карточки заявки выбираем действие: "Реклассифицировать обращения"

js-страница: ReclassificationEditPage

Ее я и называл консолью.

В CasePage вижу нечто похожее на искомое:

/**
 * Prepares Reclassification properties name.
 * @protected
 * @virtual
 * @return {Array} Reclassification properties name.
 */
prepareReclassificationPropertyNames: function() {
	return ["Id", "Contact", "Account", "Category", "ServiceItem", "ServicePact", "ServiceCategory"];
},
.....
/**
 * Returns Reclassification default values.
 * @protected
 * @virtual
 * @return {Array} Reclassification default values.
 */
getRunReclassificationDefaultValues: function() {
	var defaultValues = [];
	var propertyNames = this.prepareReclassificationPropertyNames();
	Terrasoft.each(propertyNames, function(name) {
		this.addDefaultValue(defaultValues, name);
	}, this);
	return defaultValues;
},
 
.....
/**
 * Returns run Reclassification config.
 * @protected
 * @virtual
 * @return {Array} Run Reclassification config.
 */
getRunReclassificationConfig: function() {
	var defaultValues = this.getRunReclassificationDefaultValues();
	return {
		"schemaName": "ReclassificationEditPage",
		"operation": "add",
		"primaryColumnValue": null,
		"moduleId": this.sandbox.id + "_ReclassificationEditPage",
		"isSeparateMode": false,
		"isInChain": true,
		"defaultValues": defaultValues
	};
},

 

Зверев Александр,

Огромное спасибо!

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

Добрый день!

Версия продукта: 7.14.1.935

Bpm Online Service



Идет доработка формы реклассификации в разделе обращений.

"Схема карточки редактирования действия реклассификации"

Был создал замещающий клиентский модуль.

Добавляю кастомное поле и для него

attributes "isRequired":true

но на выходе не вижу звездочки около поля.

Это стандартная ситуация или все же логика должна отрабатывать?

Нравится

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

Всем доброго времени суток. Подскажите есть ли возможность у bpm'online интегрироваться с RabbitMQ, а именно подписываться на сообщения?

Благодарю.

Нравится

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

Как минимум, в механизме глобального поиска он используется. Нужно смотреть документацию по этому ПО, как устроены стандартные библиотеки для взаимодействия с ним, есть ли они под JS и C# и можно ли ими воспользоваться в конфигурации bpm'online.

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

Добрый день.

Интересуют лучшие практики по поводу следующего вопроса.

Велась разработка (в большей степени через дизайнер) в своем пакете и переносили пакет через SVN, но в следствии неопытности много косяков и артефактов появилось, в том числе и в SVN. Сейчас есть задача по кардинальным изменениям и хочу организовать это в новом пакете и в перспективе наследовать объекты сразу от базовых. Но есть НО.

Есть лид с двумя страницами (и артефактами) нужно чтобы пользователь по результату нового проекта получил лид с тремя страницами (2 старые и 1 новая), но избавится от артефактов и чтобы они не оказались в новом пакете. И остальные объекты (БП, схемы) должны остаться в функционале.

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

 

Спасибо

Нравится

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

Может, проще будет выгрузить все схемы в файлы, а затем на чистой системе, где нет этой функциональности, выбрать тот пакет, куда будут загружать, затем загрузить по одной все схемы, учитывая порядок зависимостей между ними (объекты справочников, объекты разделов, объекты деталей, в конце страницы, БП и прочие схемы).

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