Добрый день!

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

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

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

Нравится

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

Проверьте лог обновлений! ( \tmp\PackageInstallation\Log\install.log)

Те в логе установки посмотрите что ваши схемы объекты и тд попали в пакет и успешно импортировались, что в нем нет ошибок....

Проверьте есть ли в конфигурации объекты с признаком требует генерации в БД.

Попытайтесь перекомпилировать конфигурацию (Всю) или накатить пакет повторно

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

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

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

 

Проверьте лог обновлений! ( \tmp\PackageInstallation\Log\install.log)

Те в логе установки посмотрите что ваши схемы объекты и тд попали в пакет и успешно импортировались, что в нем нет ошибок....

Проверьте есть ли в конфигурации объекты с признаком требует генерации в БД.

Попытайтесь перекомпилировать конфигурацию (Всю) или накатить пакет повторно

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

При звонке из задачи нажимаю ПОЗВОНИТЬ. Звоню, звонок сохраняется, но к задаче не привязывается (не появляется на вкладке Звонки и SQL запросом видно, что ActivityId = NULL).

При этом на сервере разработки ОК, на проде - не работает привязка. 

Чего не хватает7

Нравится

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

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

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

У меня 7.11.2 

Если дело не в доработках на тесте, попробуйте обновиться.

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

Добрый день!

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

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

Список создал для менеджеров, что у них на дашбордах отображалась ТОЛЬКО одна запись на текущий момент. Но по текущей логике менеджер может нажать "Показать больше" и взять в работу другой элемент списка (например, список по лидам)

Можно убрать ссылку Показать больше из списка? Насколько я помню, в более старых версиях данной ссылки не было

Заранее благодарю!

Нравится

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

Эта логика реализована в схеме ChartModule:

/**
 * Loads data into grid with pageble options.
 * @protected
 */
loadMore: function() {
	this.loadGridData();
},

 И ниже:

}, {
"name": chartId + "_loadMore",
"itemType": Terrasoft.ViewItemType.BUTTON,
"caption": {"bindTo": "Resources.Strings.LoadMoreButtonCaption"},
"click": {"bindTo": "loadMore"},
"controlConfig": {
"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
"imageConfig":  {"bindTo": "Resources.Images.LoadMoreIcon"}
},
"classes": {"wrapperClass": ["load-more-button-class"]},
"visible": {"bindTo": "CanLoadMoreData"}
}]

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

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

Добрый день!

Никто не сталкивался с задачей, что нужно настроить доступ к отдельным записям справочника? (например есть справочник "Специальность" и часть записей в нём нужно скрыть от пользователей определённой функц. роли)

Нравится

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

А такая же настройка доступа к объекту по записям не работает?



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

А такая же настройка доступа к объекту по записям не работает?



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

Да, для объекта справочника можно так же включить администрирование по записям, как и для другой таблицы. При этом автоматически в базе должна создаться таблица Sys...Right. Поскольку справочник не зарегистрирован как раздел, добавить в неё записи можно через базу. Либо попробовать через БП, при помощи блока «Изменить права доступа».

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

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

У меня запускается некоторый БП, в котором почти на старте открывается страница на редактирование, соответственно там создается задача с заголовком, который я прописываю.

Необходимо отлавливать момент, когда пользователь, не сохранив страницу пытается еще раз запустить этот же БП.

Я пытался сделать это по задаче, но она никак не ссылается на страницу/объект редактирования. 

Как быть?

Нравится

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

БП запускается как по сигналу по какому то действию оператора?

Самое простое решение перед открытием окна менять статус задачи (как вариант добавить в объект какой то признак Передан в работу) И не запускать (или завершать) БП у которых этот признак установлен.

Те

старовый сигнал

проверка что признак не установен

и либо выход

либо установка признака и затем открытие  странички редактирования!

БП запускается как по сигналу по какому то действию оператора?

Самое простое решение перед открытием окна менять статус задачи (как вариант добавить в объект какой то признак Передан в работу) И не запускать (или завершать) БП у которых этот признак установлен.

Те

старовый сигнал

проверка что признак не установен

и либо выход

либо установка признака и затем открытие  странички редактирования!

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

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

Можно, но очень не советую вам на них завязыватся. Они активно изменяются от версии к версии.

Добрый день, как отметил Григорий лучше иметь признак запуска процесса, но вы можете просматривать текущие задачи по процессам они отображаются у клиента из таблицы  SysProcessElementToDo или через js найти и распарсить элемент(если он есть) такого типа там вшит id записи к которой относится страница редактирования id="ProcessDashboardSchemaNotificationContainer-cce9076d-fa47-49a3-bec5-e53450fc421b-ViewModule_RightSideBarModule_ProcessDashboardModule"

В начале БП свяжите процесс с записью. И затем можно искать такие связи

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

Коллеги, простенький вопрос :)

задача: автоматически создать контакт по входящему email.

Создала БП. Сигнал=входящий email, читаем данные из Активности, тип Email

Необходимо получить отдельно email и отдельно ФИО отправителя.

К сожалению, вижу только одно поле [От кого], которое объединяет данные - SenderEnum

Пример: Сергей Петрович Петров ; 

Подскажите, как прочитать отдельно ФИО и отдельно email ?

Пыталась читать объект [Email] - данные не вычитываются. Спасибо.

Нравится

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

Милова Марина Федоровна,

Действитель, забыл using)

должно быть так:

Можно попробовать в скрипт-таске обработать результат:

var senderEnum = @"TEST TESTER <test@test.ru>";
var mail = Regex.Match(senderEnum, "<.*>").Captures[0].Value.Replace("<", "").Replace(">", "");
var user = Regex.Match(senderEnum, "^.*?<").Captures[0].Value;
user = user.Substring(0, user.Length - 2);

 

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

Спасибо. К сожалению, не являюсь разработчиком. В каком элементе БП добавить скрипт-таск? [Добавить данные]?

В смысле «в элементе добавить скрипт-таск»? Скрипт сам по себе является элементом. Читаете из одного параметра, пишете в другой и третий. Как в коде работать с параметрами, описано тут.

А ещё можно попробовать эту логику вставить в элемент-формулу. Отдельно формулы для имени и для адреса.

Милова Марина Федоровна,

Ок. Упростим задачу.

1) Создайте 3 переменные в БП (строки). В SenderEnum с помощью Формулы передавайте значение поля (которое считываете из активности/письма)

2) Добавьте задание-сценарий (script-task)

3) Вставьте туда код (копипаста).

var senderEnum = Get<string>("SenderEnum");
var mail = Regex.Match(senderEnum, "<.*>").Captures[0].Value.Replace("<", "").Replace(">", "");
var user = Regex.Match(senderEnum, "^.*?<").Captures[0].Value;
user = user.Substring(0, user.Length - 2);
 
Set("User", user);
Set("Email", mail);
return true;

Выглядеть в итоге должно так:

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

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

И все свалится если не добавлять using в БП, а как это сделать и не все программисты найдут :)

Коллеги, уже писала, что не программист. У меня сейчас вот такой процесс

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

Вставила задание-сценарий. Идет публикация

Григорий, жду, чем закончится 

Ну вроде не всё так страшно

В журнале процессов зафиксировано, что задание сценарий не выполнилось.

По совету Григория добавьте в Usings значение «System.Text.RegularExpressions». Usings находится на вкладке «МЕТОДЫ» свойств процесса.

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

Пространство имен?

 

Публикую

Марина, а зачем Вы написали в Usings свою фамилию?

Поле обязательное для заполнения. Не знала что написать. Могу изменить :)))

Милова Марина Федоровна,

Действитель, забыл using)

должно быть так:

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

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

Коллеги всем доброго времени суток. Нужна Ваша помощь.

В БП есть элемент Web-сервис в  котором есть массив - http://prntscr.com/kyim63.

Данный массив объектов состоит из двух полей Number и Description - http://prntscr.com/kyimnk

Данные поля необходимо заполнять по следующему правилу из двух выборок - http://prntscr.com/kyin8y

Правила заполнения реализовал следующим образом через тернальные выражения в формуле поля - http://prntscr.com/kyio17http://prntscr.com/kyioa3

Но при отработке элемента Web-сервис видим что массив Communications пустой - http://prntscr.com/kyip7z

Если же посмотреть на данные трассировки двух элементов из которых должна осуществляться выборка видим:

Идем в "Читать Контакты СТО в платформе" - http://prntscr.com/kyiq70 здесь по нулям следовательно логике должно брать значение из другого элемента, идем в "Читать Основной контакт Контрагента" - http://prntscr.com/kyir2v, здесь данные есть, вопрос почему не заполнились в веб-сервисе?

Заранее благодарю за ответ.

Нравится

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

Нужно ещё больше ссылок на prntscr.com.angry

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

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

Добрый день. 

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

Далее идет элемент Задание-сценарий(точно выполнился без ошибок на основе логирования), в котором устанавливается параметр процесса, и от него развилка на основе данного параметра либо на выход либо на отправку сигнала

Причем элемент Задание-сценарий выполен в Журнале процессов, а новый элемент не создается, процесс остался в статусе Выполняется.

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

Нравится

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

Посмотрите все ветвления возвращают true

(Те в конце стоит return true)

да, в конце задание-сценария стоит логирование и потом return true

Евгений В.,

А выходов раньше нет? Логирование срабатывает?  Может на нем сваливается. 

Какой статус экземпляра БП если завершен то у вас не идет на генерацию сигнала а идет на выход! Смотрите в сторону с определением условия и его проверке в условном потоке.

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

элементы выполнены, но процесс завис на скринею

В условии [#EmailRequestItsalive#]==true, EmailRequestItsalive тоже булевый. 

Не видя логики скрипта, сложно сказать. Можно попробовать добавить ещё один блок скрипта после первого, пустой (только return true;). И посмотреть, застревает на нём или на предыдущем.

Если дело не в скрипте, то что-то не то в условиях. Может, не нужно «[#EmailRequestItsalive#]==true»? Например, в стандартном процессе «Поиск данных в соц. сетях» проверка параметра  делается просто как «GotoMessage» и «!GotoMessage».

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

Добавил после Задание-сценария элемент Читать данные (Активности) по Id из сигнала. 

В результате БП завис на элементе отправить сигнал. (сигнал произвольный).

Также в Журнале процессов есть тот же процесс в статусе Завершен, причем сигнал отправил спустя 6 часов после чтения данных. 

 

Нужно отлаживаться или дальше экспериментировать со структурой процесса. Свои предположения оставил в комментарии выше.

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

Добрый день!

В процессе выполнения этой задачи выяснил, что в документации по Terrasoft.controls.Grid отсутствуют упоминания о нескольких методах этого элемента управления, например onKeyDown, goToPreviousRow, gotToNextRow (именно так, с "ошибкой") и несколько других.

Как теперь с этим знанием существовать? :)

Нравится

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

"Как теперь с этим знанием существовать? :)" — я с этим вопросом существую с 2016 года. Пришел в конфигурацию 7.6-7.7, знатно прифигел от количества параметров в diff-конфигах некоторых элементов, пошел на sdk, увидел шиш с маслом.

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

Сколько ещё открытий чудных ждет Вас впереди ;-)

А, если серьезно, напишите в support - они передадут данную информацию техписателям.

"Как теперь с этим знанием существовать? :)" — я с этим вопросом существую с 2016 года. Пришел в конфигурацию 7.6-7.7, знатно прифигел от количества параметров в diff-конфигах некоторых элементов, пошел на sdk, увидел шиш с маслом.

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

Согласен пока об этом не знали и не думали как то а что теперь делать?

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

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

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

В детали на карточке редактирования нажимается кнопка +, открывается новая карточка того же объекта (Договор) с предзаполненными значениями, взятыми из исходного договора, в частности, номер.

Попытался переопределить базовый метод детали следующим образом:

addRecord: function() {               

                this.callParent(arguments);

                this.set("Hyperlink", "abc");

            }

но при открытии нового договора поле Гиперссылка пустое.

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

Нравится

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

Может сначала модифицировать а потом вызывать родителя?

те попробуй так

addRecord: function() {               
   this.set("Hyperlink", "abc");
   this.callParent(arguments);
 
}

 

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

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

На карточке объекта, которую открываете нажатием на "+" в детали переопределите onEntityInitialized. Если нужно, то поставьте еще и проверку IsAddMode и isCopyMode

onEntityInitialized: function() {
this.callParent(arguments);
 if (this.isAddMode() || this.isCopyMode()) {
    //esq или что хотите
    //this.set("Hyperlink", "123");
 }
}

 

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