Добрый день. Подскажите пожалуйста! Создал БП с условиями - простой и запланированной выдачи, где все действия происходят на преднастроенной странице, все отрабатывает нормально, но есть одно но при запланированной выдаче вернуться на преднастроенную страницу я могу только тогда когда сработает таймер(дата на которую планировал выдачу), а мне надо реализовать возможность попасть туда раньше времени для того чтобы что либо поменять или отменить. Если вызывать новый БП и передавать туда данные то старый процесс так и будет висеть до определенной даты. Подскажите как мне быть в этой ситуации.
Сейчас попасть на мою страницу в БП могу только благодаря вопросу пользователю. А должен еще при нажатии на кнопку.
Задачу можно решить следующей настройкой процесса.
1. Создать служебную запись. В дальнейшем эта запись будет триггером для перехода на преднастроенную страницу. Условно – создать активность.
2. Элемент [Исключающее ИЛИ по событиям].
Одно ветка ведет к таймеру.
Вторая ветка ведет к элементу [Обработка сигнала]. Ожидает изменения в объекте, где Id = Пункт 1. Id
3. Исключающее ИЛИ. Принимает на вход обе ветки.
5. Преднастроенная страница.
В результате – преднастроенная страница откроется когда наступит время, указанное в таймере, или будет изменена служебная запись.
1. Создать служебную запись. Подразумевается – создать запись в любом объекте. Например, элемент [Добавить данные] в объект Активность. В дальнейшем изменения в этой записи приведут к тому, что процесс сразу перейдет к выполнению преднастроенной страницы (не дожидаясь таймера).
2. В случае с приведенным примером (когда служебная запись представлена в виде активности) – в элементе [Обработка сигнала] необходимо ожидать изменения записи в объекте Активности, где Id = Пункт 1.Id
В результате – преднастроенная страница откроется если прошло время, указанное в таймере, ИЛИ будет изменена активность.
У нас возникла проблема. При настройке системы все изменения сохраняются в созданный нами пакет "Roscap_Main". В какой-то момент название этого пакета в списке стало выделено черным цветом и не получается заблокировать ряд элементов для фиксации изменений в хранилище. Всплывает ошибка "Для заданного локального пути не указан путь к хранилищу". Подскажите, пожалуйста, что значит выделение названия пакета черным цветом и почему оно не снимается? И как можно исправить ошибку блокирования элементов для фиксации их в хранилище.
Добрый день!
На странице редактирования лида при вводе в поле контакт имени контакта система предлагает создать новый. И если нажать на "Создать", то сразу же создастся контакт с введенным именем в поле.
Стоит задача, что бы после нажатия "создать" открывалась страница контакта, и можно было дополнять данные уже на странице контакта.
Немогу словить в каком модуле реализовано создание контакта, да и в модуле ли вообще оно реализовано? ВОзможно кто-то решал подобное?
Есть конечно один вариант, при котором будет открываться страница контакта - это в обьекте Контакт сделать какое-то поле обьязательным на уровне приложения. Но это не выход...
Функциональность создания новой записи из справочника реализована в LookupQuickAddMixin.
В последней релизной версии уже встроена функциональность открытия карточки перед созданием объекта, в методах tryCreateEntityOrOpenCard->openPageForNewEntity.
За эту функциональность отвечает фича UseSilentCreation.
Функциональность создания новой записи из справочника реализована в LookupQuickAddMixin.
В последней релизной версии уже встроена функциональность открытия карточки перед созданием объекта, в методах tryCreateEntityOrOpenCard->openPageForNewEntity.
За эту функциональность отвечает фича UseSilentCreation.
Ольга, спасибо!
Я, как раз перед Вашим ответом нашел нужный модуль LookupQuickAddMixin :smile:
Заместил его, и добавил необходимое условие, чтобы срабатывал метод openPageForNewEntity.
Все работает корректно!
Здравствуйте, на карточке “группы” есть поле “гид” и деталь “контакты группы”. Необходимо при изменении поля “гид” пройтись по всем контактам в детали и используя значение поля “сделка” из каждого контакта, изменить поле “гид” для всех соответсвующих сделок этих контактов в разделе “сделки”.
Реализовали данную задача с помощью БП, но меняется только одна запись, подскажите пожалуйста, как можно читать всю выборку записей из детали и для множества соответствующих записей в другом разделе менять поле.
Судя по описанию необходимо работать одновременно с коллекцией данных, а не первой выбранной записью.
Пока с коллекцией может работать только элемент "Добавить данные" в режиме выборки.
Для решения вашей задачи можно использовать [Задание-сценарий], написать в нем интересующий запрос.
Или создать циклический процесс, который будет обрабатывать 1 контакт за 1 итерацию в цикле.
Спасибо, с помощью сценария сделали, чтобы процесс повторялся столько раз, сколько контактов в детали
[code]
int count = Get("count");
int count2 = count - 1;
Set("count", count2);
return true;
[/code]
но изменение срабатывает несколько раз для одной и той же записи, не подскажите, пожалуйста, как в цикле перебрать все контакты?
Алгоритм следующий:
А. Добавить в объект Контакты служебное поле с типом Логическое, например ForCycle.
Б. Первый процесс запускается по нужному событию и устанавливает для всех контактов ForCycle = true.
В. Второй процесс циклический:
1) читать кол-во контактов, у которых ForCycle = true
2) поток по умолчанию ведет к завершению процесса
3) условный поток: [Читать кол-во записей] > 0 - ведет к элементу Читать первый контакт, где ForCycle = true. На этом этапе мы получим Id первого интересующего контакта - > обрабатываем контакт - > устанавливаем ForCycle = false -> в конце поток перехода ведет к Пункт 1
В результате процесс будет обрабатывать по одной записи до тех пор, пока записи с нужным условием существуют.
Если Вам необходимо управлять доступностью (enabled) или видимостью (visible) вы биндите их на атрибут (который предварительно создаете) и в последующем меняя значение атрибута - управляете соответствующим значением. И все таки... (ради спортивного интереса, и для более углубленно понимания системы и применяемых в ней механизмов)
Каким образом в коде можно подступиться до элемента/поля и воздействовать на его свойства ?
(Это же компоненты Ext.JS насколько я понимаю)
Ну естественно я говорю не о том чтобы получить DOM-объект по имени компонента или по CSS-селектору (Ext.get() / Ext.getCmp()) и применить к нему стили инлайново.
Я про то как доступиться до конфига, изменить и инициализировать изменения ?
PS: Есть где ни будь кстати материал по разработке и внедрению кастомных элементов ? (быстрое гугление по форуму не помогло, хотя возможно я некорректно формулировал поисковый запрос :))
Помимо ExtJs в bpm'online также используется библиотека BackboneJs. Если на момент построение модели в ViewModel генераторе не были определены биндинги - изменить значение какого-либо свойства в рантайме Вы уже не сможете. Разве что писать свой пользовательский генератор.
Документации по написанию пользовательских контролов на данный момент нет. Только по аналогии с уже существующими или же наследуясь от них.
В дизайнере системы - Настройка рабочих мест, обнаружен занятный баг интерфейса:
Если у рабочего места большой список разделов (более 10 шт.) то пункты свыше 10-го скрываются под cut "Показать больше", по клику на который открывается список целиком, там у элементов присутствуют пункты "стрелки", нажимая на которые можно определить позицию раздела.
Так вот если вы открыли кат и единожды подняли или опустили пункт в открывшемся списке, кат снова закрывается, таким образом если вам необходимо поднять пункт с последнего места (а на него по умолчанию становятся все вновь добавленные разделы), если у вас например 16 разделов, то Вам придется 6-ть раз открывать кат, по идее кат не должен скрываться если идет взаимодействие с кнопками регулирующими положение, да и сами кнопки в идеале должны поддерживать "залипание" (чтобы не 16-ть раз кликнуть а зажать и ждать пока пункт поднимется на нужную позицию)
Если складываете View для активностей с группировкой, например, по началу и концу и при этом есть процессные активности, у которых начало расчитывается как временной интервал между now и некоей датой, можете получить проблемы с секундами и милисекундами. Поэтому при группировке активностей по дате лучше всего применять вот такой каст в sql:
Добрый день! Возник такой вопрос - после нажатия на кнопку Печать в Счете система просит открыть или сохранить печатную форму Счет на оплату, имея определенное название (смотреть вложенный файл). Как можно изменить название печатной формы при сохранении документа?
Если в настройках браузера активна функция "Спрашивать куда сохранять файл перед скачиванием", то при скачивании ПФ у Вас будет появлятся окно, где Вы указываете путь сохранения файла и можете изменить его название (см. скриншоты). Также, Вы можете изменить название ПФ в справочнике "Печатные формы".
Если это isCopyMode то id от кого скопировались узнать можно так:
this.get("SourceEntityPrimaryColumnValue")
Если isAddMode, то понятно, что нет никакого источника.
"Юсупов Марат" написал:как я понимаю пока еще нет же созданной записи в БД?
Все верно, данной записи еще нет в бд, но вы можете вызвать:
this.save({silent:true}) что сохранит данную запись в бд, не закрывая карточку. После чего можно будет добавлять в неё и записи деталей.