Добрый день, имеется развернутый локально Creatio. Хочу добавить лэндинг(чтобы можно было к примеру перейти на localhost/landing/index.aspx) с формой, у которой есть поле phone и данные введенные в поле будут попадать в контакты -> мобильный телефон уже к имеющемуся контакту.
Что уже сделал?
Сейчас контакт выглядит следующим образом

Как описано в документации добавил лэндинг. Сжато он выглядит так:

После чего в папке ../0/Nui/ создал папку Landing с файлом index.aspx в котором лежит следующий код:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <!--ШАГ 2-->
    <!--Эту часть необходимо скопировать из поля ШАГ 2 страницы редактирования лендинга-->
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script src="https://webtracking-v01.bpmonline.com/JS/track-cookies.js"></script>
    <script src="https://webtracking-v01.bpmonline.com/JS/create-object.js"></script>
    <script>

    var config = {
        fields: {
            "Subject": "#subject-field",
            "Email": "#email-field",
            "Name": "#name-field",
            "MobilePhone": "#phone-field",
        },
        landingId: "54a57d16-e7b6-4c7d-9c38-237cfcf6512d",
        serviceUrl: "http://localhost/0/ServiceModel/GeneratedObjectWebFormService.svc/SaveWebFormObjectData",
        redirectUrl: "yandex.ru"
    };

    function createObject() {
        landing.createObjectFromLanding(config)
    }
    </script>
    <!--ШАГ 2-->
</head>
<body>
<h1>Landing web-page</h1>
<div>
    <h2>Case form</h2>
    <form action="localhost/0/ServiceModel/GeneratedObjectWebFormService.svc/SaveWebFormObjectData" method="POST" class="mainForm" name="landingForm" onSubmit="createObject(); return false">
        Subject:<br>
        <input type="text" name="subject" id="subject-field"><br>
        Email:<br>
        <input type="text" name="Email" id="email-field"><br>
        Name:<br>
        <input type="text" name="Name" id="name-field"><br>
        Phone:<br>
        <input type="text" name="Phone" id="phone-field"><br><br>
        <input type="submit" value="Submit">
        </font>
    </form>
</div>
</body>
</html>

Если я правильно понял для того чтобы POST запрос прошел корректно должен отработать файл GeneratedObjectWebFormService.svc. Нужно ли его создавать по документации или он является дефолтным? При попытки отправки запроса возникает 403 ошибка. Как сделать это рабочим и какие ошибки я совершил?

Нравится

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

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

 

Как минимум, у Вас неправильный адрес стандартного веб-сервиса GeneratedWebFormService, к которому пытались обратиться со страницы. Поскольку он анонимный, там не нужен /0/. См. тут, как выглядит и где настраивается путь к нему.

 

Если нужно сделать отдельную страницу на сервере с этой формой, можно поднять в IIS ещё один сайт из одной HTML-страницы, где и настроить по инструкции связь с лендингом.

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

 

Как минимум, у Вас неправильный адрес стандартного веб-сервиса GeneratedWebFormService, к которому пытались обратиться со страницы. Поскольку он анонимный, там не нужен /0/. См. тут, как выглядит и где настраивается путь к нему.

 

Если нужно сделать отдельную страницу на сервере с этой формой, можно поднять в IIS ещё один сайт из одной HTML-страницы, где и настроить по инструкции связь с лендингом.

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

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

Нет, дело не в этом. Посмотрите второй абзац прошлого ответа.

Зверев Александр,
исправил без /0/ теперь следующую проблему не могу побороть 

политика CORS дефолтная и выглядит так:

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

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

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

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

 

Кейс: 

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

 

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

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

Заранее спасибо за помощь!

 

Нравится

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

Дмитрий, причина отсутствия колонок в изначальном вопросе в том, что в раздел можно выводить с детали только обобщённые значения: количество, сумму, среднее, минимум, максимум.

Дмитрий Анисько пишет:
то на мой взгляд проще добавить строковое поле в объект Контрагент и обновлять его на все нужные события для поддержания актуальности данных.

Лучше всего именно так. На уровне встроенного БП объекта детали или отдельным БП заполнять новое текстовое поле в объекте раздела. Можно ещё триггером в базе, но это Вам не подойдёт.

Дмитрий Анисько пишет:
Может быть Вы знаете, как можно добавить колонку в реестр именно на этапе формирования вью-модели?

 Даже если такое возможно, рисков больше, чем преимуществ. От большей нагрузки на сервер и базу, когда для каждой видимой в реестре строки будет отдельный запрос, до неполной функциональности, когда такая колонка не будет полноценно работать в выгрузке в Excel, итогах, печатных формах, OData и прочих интеграциях.

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

 

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

Вариантов решения такой задачи несколько, например:

1. Добавляем view с 2 колонками - Guid и string. Средствами sql формируем запрос, который в первую колонку будет возвращать Id контрагента, во вторую все "склеенные" в одну строку имена относящихся к нему контактов

2. В контрагенте добавляем колонку-справочник на нашу view (не забываем про галочку контроля целосности)

3. На событии OnInserting контрагента копируем значение колонки Id в колонку из п.2

4. Дальше пользуемся базовой настройкой колонок

 

Манипуляции из пп. 2-3 нужны для того, чтобы сохранить прямую связь

Лопатин Константин,

Большое спасибо за ответ, но указанный способ не подходит.
Нужно сохранить поддержку всех 3-х субд, а создавать View для каждой - не очень удобно. Да и если идти подобным путем, то на мой взгляд проще добавить строковое поле в объект Контрагент и обновлять его на все нужные события для поддержания актуальности данных.

 

Может быть Вы знаете, как можно добавить колонку в реестр именно на этапе формирования вью-модели? Может вы знаете, что можно попробовать переопределить, чтобы изменить стандартное поведение?

 

Дмитрий, причина отсутствия колонок в изначальном вопросе в том, что в раздел можно выводить с детали только обобщённые значения: количество, сумму, среднее, минимум, максимум.

Дмитрий Анисько пишет:
то на мой взгляд проще добавить строковое поле в объект Контрагент и обновлять его на все нужные события для поддержания актуальности данных.

Лучше всего именно так. На уровне встроенного БП объекта детали или отдельным БП заполнять новое текстовое поле в объекте раздела. Можно ещё триггером в базе, но это Вам не подойдёт.

Дмитрий Анисько пишет:
Может быть Вы знаете, как можно добавить колонку в реестр именно на этапе формирования вью-модели?

 Даже если такое возможно, рисков больше, чем преимуществ. От большей нагрузки на сервер и базу, когда для каждой видимой в реестре строки будет отдельный запрос, до неполной функциональности, когда такая колонка не будет полноценно работать в выгрузке в Excel, итогах, печатных формах, OData и прочих интеграциях.

Коллеги, большое спасибо за ответы.
Принимая во внимание лишнюю нагрузку на бд, есть смысл остановиться на варианте со строковым полем.

Дмитрий Анисько пишет:

Коллеги, большое спасибо за ответы.
Принимая во внимание лишнюю нагрузку на бд, есть смысл остановиться на варианте со строковым полем.

Дело, конечно же, Ваше, но я, если честно, так и не понял каким образом уменьшится нагрузка на БД если сравнивать view и обновление колонки после каждого чиха на событийном слое

 

Нужно сохранить поддержку всех 3-х субд, а создавать View для каждой - не очень удобно

Тоже не вижу особой проблемы с учетом того, что синтаксис аналогичный.

Лопатин Константин пишет:
Дело, конечно же, Ваше, но я, если честно, так и не понял каким образом уменьшится нагрузка на БД если сравнивать view и обновление колонки после каждого чиха на событийном слое

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

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

Всем привет. 

Продукт bpmn SDE 7.13.2.934

Подскажите, пожалуйста, каким образом реализовать выбор Сервиса в зависимости ото выбранной КЕ. 

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

Нравится

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

В разделе фильтрация одного поля по другому делается при помощи бизнес-правил. Они настраиваются в мастере раздела. Стандартно КЕ не фильтруется по сервису, как и наоборот, их можно выбирать в любом порядке. Сервис блокируется бизнес-правилом при пустом сервисном договоре.

Зверев Александр, есть ли примеры настройки подобного(фильтрация) БП ?  

Достаточно переключиться в мастере раздела на нужную вкладку и посмотреть существующие бизнес-правила. Либо см. документацию. Их бывает 4 разновидности, в том числе и фильтрация:

scr_section_wizard_rules_designer_action.png

В целом, вопрос решён, важна была подсказка о том, что для решения кейса стоит использовать бизнес-правило в разделе "Обращения". 

Для реализации задуманного нужно сделать следующее - задать всем КЕ при импорте "тип" и добавить суррогатное поле "тип КЕ" в каталоге услуг. 

После этого сравнивать два поля. Выглядит это примерно следующим образом: 

Кстати, разрабам на заметку - подписи "Если" , "То", а также сама инфографика, при выборе фильтра значений, сбивают с толку.

Коллеги, спасибо за помощь. 

 

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

В какой то момент пропали настройки журнала изменений по контакту.
Как можно отследить изменение настроек аудита? Кто, когда?

Нравится

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

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

Обычно такие задачи решаются с помощью самого журнала аудита (не журнала изменений). Но сейчас в системе не логируется изменение настроек журнала изменений (я создала соответствующую идею в беклоге профильной команды). Список логируемых операций можно посмотреть тут: https://academy.terrasoft.ru/documents/studio/7-12/razdel-zhurnal-audita

В качестве обходного решения можно сделать следуюшее:

1. Для анализа текущей ситуации проанализировать логи приложения (там должны быть видны соответсвующие запросы) и сравнить с данными по сессиям пользователей.

2. На будущее реализовать собственный тригер на уровне БД, который будет писать в лог, если кто-то будет менять настройки журнала изменений.

Старун Юлия,
спасибо за развернутый ответ!

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

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

        {
          "UId": "736c30a7-c0ec-4fa9-b034-2552b319b633",
          "Name": "Name",
          "CreatedInSchemaUId": "11ab4bcb-9b23-4b6d-9c86-520fae925d75",
          "ModifiedInSchemaUId": "4cbdc6f3-625d-4639-92bf-bb19d4c9d58e",
          "CreatedInPackageId": "66e9e705-64b4-4dda-925e-d1e05a389eb6",
          "DataValueTypeUId": "ddb3a1ee-07e8-4d62-b7a9-d0e618b00fbd",
          "RequirementType": 1,
          "IsTrackChangesInDB": true,
          "IsLocalizable": true
        },

Но вот на уровне базы данных это уже хранится в колонке MetaData таблицы SysSchema в не таком удобном виде. Там следует искать код Е16, чтобы понять, колонка с каким UID логируется:

Таким образом, триггер нужно вешать на таблицу SysSchema на колонку MetaData по тому объекту, который вы хотите отследить. И сохранять весь текст метаданных, а потом уже анализировать его вручную. Наверное, можно даже посмотреть, какой запрос отправляет система в БД при открытии страницы настроек журнала изменений - там наверняка есть встроенные механизмы парсинга этих данных.

В общем я постараюсь повысить приоритет реализации логирования этих изменений через журнал аудита средствами системы :)

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

Подскажите, пожалуйста, возможно ли в конфиге отфильтровать набор данных для Lookup по определенному полю. В моем случае - "BTNumber".
Вот текст конфига:
var config = {
entitySchemaName: "BTVwPCManifest",
multiSelect: true
};

Нравится

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

Разобралась самостоятельно :exclaim:
Возможно, кому-то пригодится эта информация.

Это можно реализовать таким образом:
var config = {
entitySchemaName: "BTVwPCManifest",
multiSelect: true,
sortedColumns: [{
name:"BTNumber",
orderPosition: 0,
orderDirection: Terrasoft.OrderDirection.ASC
}]
};

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

Друзья!

Мы объявляем старт регистрации на первый Хакатон по разработке приложений и бизнес-процессов на платформе bpm’online, который пройдет в рамках Форума сообщества Terrasoft.

32 часа непрерывного соревнования, командной работы и нетворкинга для создания лучших решений под руководством ведущих экспертов-менторов из Terrasoft.

2 потока:

  • Хакатон для разработчиков - создание приложений, расширяющих базовые возможности bpm’online, а также интеграций bpm’online с другими сервисами и приложениями.
  • Хакатон для аналитиков - создание готовых, исполняемых процессов, направленных на покрытие конкретных бизнес-задач пользователей, без применения навыков разработки.

Ознакомиться с правилами Хакатона и призовым фондом вы можете здесь.
Собирайте команду, готовьте идеи и регистрируйтесь, чтобы победить!

Какие проекты можно реализовать? Любые! Вот лишь некоторые примеры:

Приложения и интеграции:

  • Автоматическое формирование документов и отчетов из элементов системы
  • Эффективный project-менеджмент (канбан, календарь, диаграмма Ганта)
  • Интерактивные опросы
  • Расширение возможностей базы знаний
  • Инструменты лидогенерации (трекеры email-адресов, обогащение данных, скоринг)
  • Инструменты AI (анализ данных, виртуальный ассистент)
  • Интеграции с облачными сервисами
  • Интеграции с онлайн-месседжерами, чатами и чат-ботами
  • Интеграции с социальными сетями
  • Интеграции с финансовыми и платежными системами

Бизнес-процессы:

  • HR-процессы (рекрутинг, on-boarding и обучение персонала, внутренние переводы)
  • Закупки (заявка на приобретение оборудования, согласование закупки, заявка на оплату)
  • Сервисные процессы (распределение обращений, проверка оборудования, обработка жалоб)
  • Маркетинг и коммуникации (планирование и проведение мероприятий, поздравление клиентов, обработка идей)
  • Организационные процессы (визиирование документов, согласование бюджетов, оформление доверенностей)
  • Отраслевые процессы (отслеживание доставки, формирование отгрузки, взыскание задолженности)

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

Мы с радостью ответим на все вопросы в ленте либо по почте:
Виталий Айзен, v.aizen@terrasoft.ru
Евгений Колосов, e.kolosov@terrasoft.ru

Удачи!

Нравится

Поделиться

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

Подписываюсь за Разработка -> Интерактивные опросы.

Тоже обязательно будем участвовать командой от ИнТех.

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

Столкнулся со следующей проблемой в BPMOnline ServiceDesk 5.4:
- Необходимо в Аналитике сделать ПОЧАСОВОЙ график регистрации инцидентов.

Но при настройке графика для поля "Дата/время" предлагается только форматы "Год, Месяц, Неделя, День". Соответственно вопрос каким образом добавить формат "Час"??

Нравится

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

Решил проблему сам путем добавления в объект SysDateTimeFormat следующей строчки:

insert into SysDateTimeFormat(Name,Code) values('Час','Hour')

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

Рады сообщить о появлении нового видеоурока по настройке лендингов в bpm'online.

В данном видеоуроке представлена общая информация о назначении посадочных страниц, а также доступна пошаговая инструкция по настройке такой страницы: ее связывании с bpm'online; настройке сопоставления полей веб-формы лендинга и страницы лида; настройке заполнения значениями по умолчанию полей страницы лида.

Видео доступно по ссылке: https://youtu.be/H90KifSqz4M?list=PLDp-M9ZGnvgH5uPrXsjxblaSWMmQ17Xt9

Больше видеоуроков смотрите на сайте Академии Terrasoft.

Нравится

Поделиться

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

Рады сообщить о выходе нового обучающего видео-ролика по настройке мобильного приложения.

Заходите на сайт Terrasoft Academy и узнайте, как добавить рабочее место, раздел и деталь в мобильном приложении.

Видео доступно по ссылке: Мастер мобильного приложения.

Еще больше видео-уроков по настройке здесь.

Нравится

Поделиться

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

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

/0/Nui/ViewModule.aspx#SectionModuleV2/LookupSection/LookupEditPage/edit/bad6d2ba-9a7f-43c1-ba79-52f20347a195

(message: Uncaught Terrasoft.UnsupportedTypeException: Тип DataValueType.GUID не поддерживается )

Нравится

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

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

Для исправления данной ошибки необходимо в замещенной схеме LookupEditPage (Схема страницы редактирования раздела "Справочник") закомментировать или удалить diff SysEntitySchemaUId и diff SysPageSchemaUId:

/*{
		"operation": "insert",
		"name": "SysEntitySchemaUId",
		"values": {
			"layout": {
				"column": 0,
				"row": 5,
				"colSpan": 12,
				"rowSpan": 1
			},
			"bindTo": "SysEntitySchemaUId",
			"caption": {
				"bindTo": "Resources.Strings.SysEntitySchemaUIdCaption"
			},
			"enabled": true
		},
		"parentName": "Header",
		"propertyName": "items",
		"index": 4
	},
	{
		"operation": "insert",
		"name": "SysPageSchemaUId",
		"values": {
			"layout": {
				"column": 0,
				"row": 6,
				"colSpan": 12,
				"rowSpan": 1
			},
			"bindTo": "SysPageSchemaUId",
			"caption": {
				"bindTo": "Resources.Strings.SysPageSchemaUIdCaption"
			},
			"enabled": true
		},
		"parentName": "Header",
		"propertyName": "items",
		"index": 5
	} */

Или же удалите замещенную схему, сгенерируйте исходный код и скомпилируйте конфигурацию.

Если Вы хотите узнать ID конкретного справочника, то выполняйте запрос на уровне БД:

Select * from Lookup
Where Name='Категории контрагентов'

так как подобная информация должна храниться и отображаться только на уровне БД, чтобы избежать подобных ошибок.
Если Вам необходимо все таки отобразить ID объекта, то выведите соответствующую колонку в реестре раздела «Справочники» (Рис. 1).

"Вильшанский Дмитрий" написал:закомментировать или удалить diff SysEntitySchemaUId и diff SysPageSchemaUId

Спасибо, Дмитрий!

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