Добрый день!

Создаю процесс, который в деталь добавляет Результат выборки по объекту. 

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

Можно ли как-то ограничить количество добавляемых записей при добавлении результата выборки (например, свойство, где указывается количество добавляемых записей - 10, 20 и т.д.)?

Нравится

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

В элементе БП 'Добавить данные' такая возможность отсутствует.

Выбрать точное количество записей запроса можно в элементе БП 'Читать данные'. Для этого нужно перейти в расширенный режим параметров элемента бизнес-процесса и найти параметр 'Количество записей для чтения':

Вы можете решить Вашу задачу таким образом.

1. С помощью элемента 'Читать данные' вычитать нужное количество записей.

2. В параметры бизнес-процесса добавить параметр с типом "Коллекция объектов'  и там же указать, что в него должен поместиться результат выборки из элемента 'Читать данные'.

3. После элемента 'Читать данные' добавить элемент 'Задание-сценарий' и уже в нём скриптом вставить нужные данные коллекции из параметра бизнес-процесса.

Или же просто реализовать всю логику в элементе 'Задание-сценарий'.

В элементе БП 'Добавить данные' такая возможность отсутствует.

Выбрать точное количество записей запроса можно в элементе БП 'Читать данные'. Для этого нужно перейти в расширенный режим параметров элемента бизнес-процесса и найти параметр 'Количество записей для чтения':

Вы можете решить Вашу задачу таким образом.

1. С помощью элемента 'Читать данные' вычитать нужное количество записей.

2. В параметры бизнес-процесса добавить параметр с типом "Коллекция объектов'  и там же указать, что в него должен поместиться результат выборки из элемента 'Читать данные'.

3. После элемента 'Читать данные' добавить элемент 'Задание-сценарий' и уже в нём скриптом вставить нужные данные коллекции из параметра бизнес-процесса.

Или же просто реализовать всю логику в элементе 'Задание-сценарий'.

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

Добрый день. Как правильно добавлять в BPM ссылку на внешнюю службу asmx?

Обычно в VS необходимо добавить ссылку и ввести url службы, но при вызове службы Terrasoft.Configuration.Dev.НазваниеСлужбы приложение не компилируется.

ERROR: The type or namespace name 'Dev' does not exist in the namespace 'Terrasoft.Configuration' (are you missing an assembly reference?) FILE: ICLObject.ICL_Entity.cs LINE: 27

Нравится

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

Там где параметры БП, есть вкладка методы в самом вверху этой вкладки есть Using, возле нее жми + и добавляй свой assembly reference.

Так же посмотри на статью Вызов веб-сервисов из бизнес-процессов

 

 

 

Там где параметры БП, есть вкладка методы в самом вверху этой вкладки есть Using, возле нее жми + и добавляй свой assembly reference.

Так же посмотри на статью Вызов веб-сервисов из бизнес-процессов

 

 

 

А если не из БП вызывать,а из событийного процесса объекта?

То есть я не хочу указывать сборку в using, а только url сервиса

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

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

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

Сервис типа soap, по нему не нашел документации.

Если у сервиса есть возможность обратиться к нему по URL, то используйте соответствующий элемент БП.

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

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

Появилась необходимость добавить смайлики к модулю HtmlEditModule (используется для написания email внутри bpm'online, а так же в различных текстовых полях вроде Примечаний). Насколько удалось докопаться, данный модуль реализован с помощью CKEditor, на оф.сайте которого предлагается уже разработанный аддон Smiley. В принципе, понятно каким образом можно его добавить для системы, развёрнутой on-site, поскольку необходимо всего лишь поместить соответствующие файлы с оф.сайта в папку CKEditor ([директория установки экземпляра bpm'online]\Terrasoft.WebApp\Resources\ui\CKEditor) и произвести необходимые замещения в модулях системы. Но возникает вопрос, каким образом этот аддон можно установить на системе, развёрнутой в облаке? Terrasoft предоставляет подобный сервис или же для облачных систем такая кастомизация в принципе невозможна?

И, раз уж на то пошло, если у кого-нибудь был опыт работы с аддонами CKEditor, не могли бы вы поделиться советами по данному вопросу?

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

Нравится

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

Запросите у поддержки возможность обновить CKEditor  для вашего сайта в облаке....

Запросите у поддержки возможность обновить CKEditor  для вашего сайта в облаке....

Если есть тестовый локальный сайт, можно протестировать на нём, а потом передать в поддержку готовые файлы и инструкцию, куда их класть.

Но, например, добавление шрифтов в CKEditor делается без доступа на сервер, чисто в конфигурации. Возможно, и аддон Smiley можно добавить похожим образом.

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

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

Появился вопрос насчёт разделения прочитанных и непрочитанных email сообщений в соответствующем разделе коммуникационной панели. Возможно ли как-то визуально разделять email по прочитанности в этом списке? Подтягивается ли этот параметр каждого письма через интеграцию с почтой или в контексте bpm'online возможно разделение только на обработанные и необработанные письма?

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

Нравится

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

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

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

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

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

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

Видимо так. Только как это сделать? Был бы рабочий пример, боюсь что собственными силами не осилю.

Для уведомлений есть дополнение, но это не письма и не по интеграции.

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

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

Добрый день!

Подскажите, как реализовать задачу?

При выборе строки в гриде модального окна Распределение продуктов устанавливать фокус в поле Количество, выделять значение, после изменения по нажатию кнопки Enter сохранять и, при необходимости, переходить на следующую строку.

Изображение удалено.

Окно вызывается в графике оплат и поставок на вкладке Паспорт в Заказе.

Нравится

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

Борис Леонов,

Немного лень экспериментировать, но я бы в функции onGridClick подменил target. а-ля:

onGridClick: function(event, target) {
	var newDiv = target.parentElement.children[5]; //берём div нужного элемента. 5 - номер колонки
	target = newDiv.children[0]; //проваливаемся в span
	.....
}

 

Как минимум лепить какой-нибудь ConfigurationGridV2.

В нем переопределять onGridClick (чтобы по клику в фокус попадало только поле количество), переопределять keyMap (там сейчас Tab классно работает, даже ряд создает. осталось всё это перенести на enter), ну и вызывать AddNewRow на клиенте по enter-ивенту из грида.

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

я знал что вы ответите :)

а можно пример onGridClick с назначением фокуса конкретному полю?

Борис Леонов,

Немного лень экспериментировать, но я бы в функции onGridClick подменил target. а-ля:

onGridClick: function(event, target) {
	var newDiv = target.parentElement.children[5]; //берём div нужного элемента. 5 - номер колонки
	target = newDiv.children[0]; //проваливаемся в span
	.....
}

 

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

Идея понятна, большое спасибо!

 

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

Коллеги, добрый день! С чем может быть связана проблема, что при запуске импорта (12, 5 тыс строк всего то) импорт просто висит часами на 0% и ничего не происходит.

Маленькими порциями (10) этот пакет заходит.

 

 

Нравится

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

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

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

Если маленькими порциями импортуется то возможно на какой то записи затыкается? Нужно смотреть логи импорта и потом возможно дебажится. Или внимательно просмотреть источник данных для импорта, скорее всего эксель, может что то бросится в глаза!

И просмотрите рекомендации по подготовке файла для импорта данных

 

 

 

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

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

чется).

 

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

Коллеги всем доброго времени суток!

Столкнулся со следующей проблемой, обработки исключений возвращаемых при запросе к внешнему API.

Делаю запрос через WebClient

 

public void Patch(string method, Dictionary<string, string> parameters)
        {
            try
            {
                NameValueCollection parametersValues = new NameValueCollection();
 
                foreach (var parameter in parameters)
                {
                    if (String.IsNullOrEmpty(parameter.Value))
                    {
                        parametersValues.Add(parameter.Key, null);
                        continue;
                    }
                    parametersValues.Add(parameter.Key, parameter.Value);
                }
 
                string uri = $"{abUrl}{method}";
                using (WebClient webClient = new WebClient())
                {
                    string credentials = Convert.ToBase64String(
                        Encoding.ASCII.GetBytes(LoginDev + ":" + PassDev));
                    webClient.Headers[HttpRequestHeader.Authorization] = $"Basic {credentials}";
                    webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
                    byte[] result = webClient.UploadValues(uri, "PATCH", parametersValues);
                    var response = Encoding.UTF8.GetString(result);
                }
 
            }
            catch (WebException e)
            {
                var exceptionMessage = e.Message;
                if (e.Status.Equals(WebExceptionStatus.ProtocolError))
                {
                    if (e.Response is HttpWebResponse)
                    {
                        var sr = new StreamReader(e.Response.GetResponseStream());
                        var response = sr.ReadToEnd();
                        sr.Close();
                        sr.Dispose();
                    }
                }
            }
        }

Когда пытаюсь обработать WebException в Bpm то мне записывает в логи - http://prntscr.com/kr7aja

 

При выполнении данного кода через консольное приложение обработка срабатывает корректно - http://prntscr.com/kr7baj

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

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

Нравится

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

Попробуйте, вместо public void Patch сделать public string Patch, объявите переменную, например result и в catch, сделайте result += e.Message, ну и по итогу соответственно return result

Литвинко Павел,

я в самом методе Patch в блоке catch логирую 

e.Message - http://prntscr.com/kr838h

в Bpm у меня метод Patch возвращает string. Суть в другом почему в catch обрабатывается Too many redirects, а при выполнении данного метода из консольного приложения обрабатывается корректно, то что возвращает сервер к которому запрос был.

Нигрескул Алексей,

А в консоли, на этом прерывается выполнение? Повторно не вызывается? Возможно он просто неоднократно вызывается и по итогу в лог попадает конечная ошибка

Литвинко Павел,

В консоли - при выполнении кода вылетает в catch и потом на выход метода 

При выполнении метода из консоли запустил fiddler запрос ушел один раз - http://prntscr.com/kr8oum

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

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

Задача - на островах Контакт и Контрагент в Лиде сделать функционал, аналогичный Квалификации (ну не устраивает кнопка Квалификация((...)

Т.е. при нажатии на кнопку Добавить должен создаться Контрагент с данными из группы полей Регистрационные данные.

Подскажите как  привязать  процесс к кнопке Добавить? Что то не можем до нее добраться).

спасибо!

 

 

Прикрепленные файлы

Нравится

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

Смотри BaseProfileSchema  метод addRecord

Смотри BaseProfileSchema  метод addRecord

Григорий, спасибо! попробуем)

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

Как включается режим использования bundle-схем в версии 7.12.3?

Включил UseIncludeDependenciesSource во внутреннем веб-конфиге, но ничего не получается.

Компиляции и перезапуски ИИС или пула так же ничего не меняет.

Нравится

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

В 7.11 это настраивалось в web.config (папка Terrasoft.WebApp) приложения в секции "appSettings" строкой

"add key="SeparatedJsFiles" value="true" /"

SeparatedJsFiles это одно, и оно у меня не добавлено, т.е. файлы не Separated, но при этом они не объединены в Bundle-ы. У клиента на проде все дефайны разбиты по бандлам, у меня на тесте нет, как результат тестирование не совсем полное, могут быть нюансы, которые лучше бы отлавливать и исправлять до передачи пакетов.

Вы имеете введу выгрузку исходного кода клиентских схем?

Тогда смотри тут

Нет, про выгрузку в файловую систему я ничего не писал.

Версии на проде и тесте совпадают?

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

Да.

 

Отключите UseIncludeDependenciesSource  и добавьте во внутрений web.config (папка Terrasoft.WebApp) в секцию "appSettings" строкой

<add key="SeparatedJsFiles" value="true" />

Перезайдите в систему

Григорий Чех

Повторюсь, включать SeparatedJsFiles я умею. Вопрос совсем не об этом.

Сергей, в таком случае выключите SeparatedJsFiles, это решит и Ваш вопрос. Либо же опишите более подробно, что у Вас сейчас и что хотите получить.

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

Пытаюсь добавить вторую картинку с таким же функционалом как у основной картинки в контрагента.

В статье https://academy.terrasoft.ru/documents/technic-sdk/7-12/dobavlenie-poly… описано добавление картинки в раздел где нет картинки до этого

Если делаю всё как там - то поля получаются связаны, насколько я понимаю, из-за того что существует только одна системная колонка изображения, на которую они оба ссылаются

Собственно, как мне добавить независимое поле картинки на страницу контрагента с таким же функционалом (изменение, удаление) как и у первой? В конечном итоге обе картинки должна подтягивать печатная форма

Нравится

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

Ну а добавить вторую системную колонку в объекте? Но по мне это тупиковый вариант, лучше настроить деталь файлы и ссылки на плиточное представление. Удалить при необходимости примечания. Добавить к картинкам в плиточном представлении ваши 2 контрола и вуаля.

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

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

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

Хотелось бы иметь такое же поле как логотип, но отдельное

Ну а добавить вторую системную колонку в объекте? Но по мне это тупиковый вариант, лучше настроить деталь файлы и ссылки на плиточное представление. Удалить при необходимости примечания. Добавить к картинкам в плиточном представлении ваши 2 контрола и вуаля.

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

благодарю за ответ, попробую сделать так.

Григорий Чех пишет:

Ну а добавить вторую системную колонку в объекте?

А как можно в объект добавить вторую системную колонку?

В данном случае речь идет о колонке, которая отображается только в расширенном режиме отображения схемы таблицы: https://prnt.sc/l9xi52

А как можно в объект добавить вторую системную колонку?

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

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

Я тоже так думаю. Возможно, в ответе подразумевалось что-то другое - решила уточнить.

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