Добрый день!

Столкнулся с проблемой, когда представление в BPM наследует таблицу, выводит в интерфейсе мою добавленную колонку, но в SQL таблицу эта колонка не добавляется. Вот как это выглядит:

Добавил колонку "Специальная цена" в таблицу, которую наследует представление:
1

В представлении эта колонка отображается как унаследованная. Все верно:
2

Но в БД ее нет:
3

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

Вот и вопрос: как добавить эту же колонку в представление?

Нравится

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

Виталий,

Во View базы данных колонка добавляется ручками путем правки этого самого View.

Через конфигурацию по сути только настраивается соответствие сущности в системе и представления в БД.

Допустим так... Тогда как этими ручками добавить во View колонку? В контекстном меню ничего нет. В схеме тоже никаких команд. В дизайнере тем более. На MSDN тоже нет ни слова о добавлении во View колонки.

И еще: если доступа к базе у меня нет, а только интерфейс, получается, что я не смогу выполнить свою задачу?

Подскажите, если не трудно. Заранее спасибо!

"Виталий Марушко" написал:Допустим так... Тогда как этими ручками добавить во View колонку? В контекстном меню ничего нет. В схеме тоже никаких команд. В дизайнере тем более. На MSDN тоже нет ни слова о добавлении во View колонки.

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

Но вопрос о том, как мне это сделать, если у меня нет доступа к БД остается открытым...

Да. Все верно. Можно сделать через ALTER например.

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

Виталий

Если у вас версия 7.x сделать это можно с помощью sql-сценария в пакете
Если у вас версия 5.x то думаю стоит посмотреть в сторону класса CustomQuery.

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

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

Во View действительно добавлять колонки только руками.

"Толмачев Дмитрий Юрьевич" написал:Через конфигурацию по сути только настраивается соответствие сущности в системе и представления в БД.

это тоже потом только ручками?

1. Добавляете во View колонку через БД
2. В конфигурации в объект добавляете колонку с тем же именем и типом, публикуете

Объект в конфигурации и View в БД связываются благодаря одинковому названию и наличию галки «Представление».

"Зверев Александр" написал:В конфигурации в объект добавляете колонку с тем же именем и типом, публикуете

bpm мог бы научиться сам считывать колонки View, конечно...

Иногда View вместо таблицы используют в особых случаях, со сложными union и join, триггерами. Там нельзя просто так взять и добавить колонку, нужно думать.

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

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

Нравится

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

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

Элемент "Отправить email" не умеет отправлять сообщения с незаполненным полем "Тело".

Для решения:
1) заполните тело письма
2) уберите признак "Игнорировать ошибки отправки".

В случае, если первый пункт не поможет, то в журнале процессов Вы сможете увидеть ошибку. Предоставьте ее.

и ещё ошибка в третьем блоке - данные ответственного нужно считать из Контакта, а не из Активности. Также для подстановки Email в поле "Кому" нужно считывать Email из "Средства связи контакта" ,а не использовать напрямую (http://www.community.terrasoft.ru/forum/topic/12272)

"Антон Кравченко" написал:

Также для подстановки Email в поле "Кому" нужно считывать Email из "Средства связи контакта" ,а не использовать напрямую (http://www.community.terrasoft.ru/forum/topic/12272)

Либо осуществлять проверку на заполнение поля "Email" через условные потоки.

"Антон Кравченко" написал:

Также для подстановки Email в поле "Кому" нужно считывать Email из "Средства связи контакта" ,а не использовать напрямую (http://www.community.terrasoft.ru/forum/topic/12272)

Либо осуществлять проверку на заполнение поля "Email" через условные потоки.

"Антон Кравченко" написал:

и ещё ошибка в третьем блоке - данные ответственного нужно считать из Контакта, а не из Активности. Также для подстановки Email в поле "Кому" нужно считывать Email из "Средства связи контакта" ,а не использовать напрямую (http://www.community.terrasoft.ru/forum/topic/12272)

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

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

Дмитрий, добрый день!

Элемент [Таймер] использует целое число в качестве входящего значения и прибавляет его к текущему времени. Информацию записывает в планировщик и процесс продолжится в указанное время. Для решения задачи установите значение в таймере – 259200 (3 дня).
Кроме того благодарим за обратную связь, Ваше пожелание будет учтено при реализации следующих версий продукта.

"Зарицкий Олег Васильевич" написал:

Дмитрий, добрый день!

Элемент [Таймер] использует целое число в качестве входящего значения и прибавляет его к текущему времени. Информацию записывает в планировщик и процесс продолжится в указанное время. Для решения задачи установите значение в таймере – 259200 (3 дня).

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


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

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

Добрый день!

Вопрос по BPMonline Realty 5.4

Подскажите, как правильно настроить автоматическую синхронизацию BPM с почтой. Требуется получение электронных писем с почтового сервера gmail (к примеру). Если синхронизация настраивается, то можно ли задать периодичность/расписание? Возможно, есть какие-то примеры.

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

Нравится

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

Добрый день!

вопрос по bpm online realty версии 5.4.1.728

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

Нравится

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

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

Вопрос по bpm online realty 5.4.1.728

Интересует возможность настройки синхронизации с gmail (для входящих писем). Какие существуют способы настройки синхронизации, возможно ли задавать расписание на автоматическое получение входящих писем?
Спасибо!

Нравится

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

Доброго дня!
Мне надо знать как сделать вот так:
1. Надо выбрать все листинги с параметрами(обязательно, так основные данные хранятся там) у которых Тип равен (Тип1 или Тип2). По сути должно быть не сложно в документации по SDK есть инфа, но все упирается во второй пункт.
2. Всё таки как дебажить? Так как кода надо будет писать очень много(формировать xml и отправлять на внешний сервис, обрабатывать ответ. )
Версия 7.6

Это вес будет делаться из БП.
Но каждый раз для теста его запускать не очень удобно.
Как можно протестировать класс без него?

Нравится

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

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

Вы можете самостоятельно выполнить отладку, ознакомившись со следующими статьями:
1. Отладка серверного кода.
2. Отладка клиентского кода.

Не совсем корректно тестировать отдельные части системы, ведь по отдельности все может работать корректно, а вместе - не очень. Сам класс Вы можете протестировать отдельно в Visual Studio.


1. Откройте папку с бинарными файлами приложения bpm'online и отредактируйте конфигурационные файлы приложения-загрузчика и Terrasoft.WebApp.

В файле Web.config основного приложения-загрузчика для настройки compilation установите значение атрибута debug равным true:


Нет у меня такого(
Как получить?
У нас BPM крутится на сервере террасофт. Нам сказали что локально получить данную crm нельзя.

Как вариант на каждом шаге Вы можете поставить try catch и выводить результат в консоль браузера.

"Сенько Виктор" написал:

Нет у меня такого(

Как получить?

У нас BPM крутится на сервере террасофт. Нам сказали что локально получить данную crm нельзя.


Никак, для on-demand возможности отладки серверного кода нет. Остаётся только выпросить/купить возможность развернуть копию сайта локально для разработки.

Или отлаживать класс отдельно и перенести в систему в готовом виде. Или вообще реализовать всю логику как отдельный веб-сервис на другом сервере, с bpm'online работающий по OData.

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

Добрый день.

Ситуация следующая:
1. был переопределен существующий объект на Сервер1, и добавлена колонка Колонка1
2. в фильтре и в настройках колонок на конфигурации, где это сделали колонка отображается
3. выгрузили пакет, установили на другом сервере Сервер2 (база другая), колонка отображалась как в п.2
4. внесли иные правки, вновь выгрузили пакет и установили на Сервер2, но Колонка1 пропала! Она заполняется, в базе она есть, но в фильтрах и в настройках её нет.

В результате сравнения js, который приходит клиенту, удалось выяснить, что есть разница между описанием колонки, на Сервер2 это выглядит так:

Column1
{  
            uId:'d1f7db3b-29c5-429a-a842-ab3979955ff2',
            name:'Column1',
            caption:'',
            dataValueType:Terrasoft.DataValueType.TEXT,
            usageType:0,
            isValueCloneable:true,
            size:250
}

А на Сервер1, поле caption не пустое и заполнено текстом. При этом больше никаких изменений нет, Заголовок в конфигурации заполнен на обоих серверах.

Версия bpmonline - 7.2, iis перезапускали, redis чистили, браузер чистили.

Просьба подсказать, в чем может быть дело? Может быть где-то нужно какую-то галочку указать?
И где хранится описание колок у схемы описывающей объект? Где-то в базе, или в исходном коде только?

Нравится

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

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

Поле Caption отвечает за подпись колонки на странице редактирования (а также в реестрах и фильтрах). Если данное свойство не указано, то поле будет без названия. Caption колонки по умолчанию подтягивается из объекта, но может быть переопределен на странице (как в данном случае). Также здесь указано свойство usageType. В системе есть три режима использования поля:
1) Обычный
2) Расширенный
3) Никогда.

При режиме использования "Никогда" - поле не отображается в настройках реестра и в фильтрах. Проверьте режим использования в объекте, а также заполните caption на странице редактирования.

Алексей, спасибо за ответ.
Судя по js файлам, получается, что usageType это значение типа:

var entitySchemaColumnUsageType = {
	General: 0,
	Advanced: 1,
	None: 2
};

И именно это вы и описали в виде списка режимов.
При этом, если посмотреть файл CustomFilterViewModel.js, в котором как раз и формируется список колонок для фильтрации (насколько я понимаю):

function getSimpleFilterColumnList(filters, list) {
	list.clear();
	var columnList = {};
	var columnNames = [];
	var columns = this.entitySchema.columns;
	Terrasoft.each(columns, function(column) {
		if (column.dataValueType !== Terrasoft.DataValueType.GUID &&
			column.dataValueType !== Terrasoft.DataValueType.TIME &&
			column.dataValueType !== Terrasoft.DataValueType.BLOB &&
			column.dataValueType !== Terrasoft.DataValueType.IMAGELOOKUP &&
			column.usageType !== ConfigurationEnums.EntitySchemaColumnUsageType.None) {
			columnNames.push({
				name: column.name,
				caption: column.caption
			});
		}
	});
	var sortedColumnNames = columnNames.sort(function(a, b) {
		if (a.caption === b.caption) {
			return 0;
		} else {
			return a.caption > b.caption ? 1 : -1;
		}
	});
	Terrasoft.each(sortedColumnNames, function(item) {
		var column = columns[item.name];
		columnList[column.name] = {
			value: column.name,
			displayValue: column.caption,
			dataValueType: column.dataValueType,
			referenceSchemaName: column.referenceSchemaName
		};
	});
	list.loadAll(columnList);
}

Получается, что поле должно быть в списке, а его - нет. Как такое может быть?

"Демьяник Алексей Олегович" написал:При режиме использования "Никогда" - поле не отображается в настройках реестра и в фильтрах

А есть то же самое для деталей (объектов)?

"Владимир Соколов" написал:

А есть то же самое для деталей (объектов)?

Логика объектов распространяется как на разделы, так и на детали.

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

Поэтому прошу подсказать, из-за чего такое может быть? Может быть какая-то магическая галочка? Какие-то метаданные? Что могло привести к подобному?

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

Зависимости пакетов на двух серверах одинаковы?

Алексей - да, все идентично (насколько может судить).
С одного сервера выгрузили схему, и на другой сервер установили эту схему.

Лучше всего будет написать на support@terrasoft.ru, либо на портал и продолжить решение данного вопроса в рамках тех. поддержки.

Такая же проблема, в схеме, которая скачивается с http://../0/configuration/entityschema/cacf779edcdb6ce860b02cf51ad442b4/...js
у колонки пустой caption и эта колонка не отображается в фильтре. в выгруженном md заголовок присутствует.

js:

clientOrderId:{uId:'9c5ec7e0-49f7-42f5-bc7e-fbc483adb5dd',name:'clientOrderId',caption:'',dataValueType:Terrasoft.DataValueType.TEXT,usageType:0,isValueCloneable:true,size:50}

md:

\n+ MetaData.Schema.D2 {\"UId\"":\""9c5ec7e0-49f7-42f5-bc7e-fbc483adb5dd\""

Здравствуйте, Юрий!

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

"Павел Баштовой" написал:

Здравствуйте, Юрий!

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


данное поле не является системным. это строка 50 символов.
просто в bpmonline есть какая-то проблема с получением caption колонки, в тех случаях, когда используется замещение объектов.

Юрий, доброе утро!

В случае, если наблюдается такая ситуация с полем в замещенном объекте, и описанные выше варианты были проверены, лучшим выходом для решения этой проблемы будет обратится в техническую поддержку через портал, или написав запрос на адрес support@terrasoft.ru. Для решения необходимо проитзводить анализ на определенном сайте.

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

Здравствуйте. При попытке регистрации почты Gmail постоянно выдаёт ошибку: Имя или пароль пользователя неверны. Хотя всё верно пишу и пароль и уже несколько вариантов с именем перепробовал. Подскажите с чем может быть связана эта ошибка, если кто-то сталкивался? Имя пользователя ставил и саму почту, и без концовки, и имя, и имя с фамилией ни в какую. Буду весьма благодарен за помощь. Настройки провайдера заводские ничего не менял.
Спасибо

Нравится

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

Здравствуйте Дмитрий!

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

Также, в bpm'online версии 7.7, ошибка может быть связана с параметрами почтового провайдера Gmail, заданными в системе. В секции "Параметры логина", по умолчанию, выбрано значение "Использовать имя пользователя в качестве логина". Для некоторых ящиков нужно изменить его на "Использовать email как логин". Настраивается в настройках почтовых провайдеров, провайдер - Gmail.

Еше это проверьте (less secure apps):

https://support.google.com/accounts/answer/6010255?hl=en

Версия 7.6. Что самое интересное, проверил на другой платформе такие же параметры Gmail, пароль и логин те же и всё подключается нормально. А вот тут выдаёт ошибку. Доступ для ненадёжных источников был дан и всё равно такая же проблема возникает - Имя или пароль неверны.

Дмитрий, а доступ по IMAP в настройках Gmail включен?

А в системных настройках SmtpUserName в конце с @gmail.com?

"Демьяник Алексей Олегович" написал:

Дмитрий, а доступ по IMAP в настройках Gmail включен?

Да доступ в в настройках почтового ящика к IMAP включён.

"Владимир Соколов" написал:

А в системных настройках SmtpUserName в конце с @gmail.com?

Нет там пусто вообще. По умолчанию строка пустая

Для решения рекомендую обратиться в службу поддержки, описав проблему в письме на ящик support@terrasoft.ru или на портале.

"Демьяник Алексей Олегович" написал:

Для решения рекомендую обратиться в службу поддержки, описав проблему в письме на ящик support@terrasoft.ru или на портале.

Спасибо

Проблема была решена в базовых настройках Smtp была убрана галочка с использования протоколов SSL. Порт так и остался - 587

Еще одно замечание - bpm (по крайней мере 7.6) использует и 25-й порт для работы с почтой (хотя, явно это нигде не указано). Поэтому если он закрыт, то не получится посылать письма

Здравствуйте! В одном акаунте гугл поменял пароль. После этого нужно поменять в СРМ-ке. Захожу, меняю - а оно мне пишет логин или пароль неправильный или нет доступа к ненадежным приложениям.
Все эти пункты проверил - и все там правильно. В чем может быть проблема? Причем если я на етого менеджера прописую другой ящик - работает? Может гдето закешировался старый пароль?

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

Может сервер попал в список непонятных устройств. Попробуйте этот линк:
https://accounts.google.com/b/0/DisplayUnlockCaptcha

Он очистит список устройств, которым заблокирован доступ к почте.

Всеравно пишет тоже самое. Другие акаунты принимает - только вот этот не хочет.

Решили удаленно.
Проблема была в настройках логина. В случае корпоративной почты в качестве логина необходимо использовать email.

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

Есть стандартный бизнес-процесс поиска клиента системой. Поиск осуществляется только среди Контактов и Контрагентов. Как реализовать такой же поиск у Лидов? Есть ли возможность замещения стандартного бизнес-процесса?

Нравится

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

Здравствуйте! Процессы не замещаются, но в версии 770 их можно отключить. Уточните, пожалуйста, название процесса, который Вы хотите заместить?

SysCustomerIdentificationProcess

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

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

От техподдержки как-то была получена следующая инструкция по замене БП:
вариант деактивации БП - выполнение запроса к БД следующего вида:

update SysSchemaProperty set Value = 'False' --для активации заменить False на True
where SysSchemaId = (select id from sysschema where name ='YourProcessName') -- тут название схемы БП
and Name = 'Enabled'

инструкция по копированию и изменению БП
1. В разделе "Конфигурация" экспортируем процесс, который нужно скопировать.
2. С помощью текстового редактора (лучше использовать более "продвинутый", чем стандартный Блокнот в Windows, например, Notepad++) открываем полученный файл.
3. Нам необходимо поменять 3 параметра: UId - по всему файлу, Name - в 2х местах и Caption - в одном месте.
3.1. Меняем UId. Чтобя сгенерировать новый UId можно перейти на сайт http://www.guidgenerator.com/ или аналогичный и сгенерировать идентификатор. Затем меняем по всему файлу существующее значение на новое. Должно быть куча замен.
3.2. Меняем Name. Параметр Name должен представлять собой строку, содержащую только символы латинского алфавита без пробелов, например, CreditCardRegistrationTest. Заменить нужно в 2х местах в строках:
"Name": "CreditCardRegistrationByUserCustom",
и
\n \"A2\"": \""CreditCardRegistrationByUserCustom\""

Это позволило заменить родительский БП на свой с минимальными трудозатратами. Главное, если это в пакет включать, добавлять скрипт на деактивацию БП.
Замечу, что инструкция относится к 7.2, может в более новых версиях как-то поменялось.

Валентин,

Чтобы решить задачу

"Медведев Валентин Николаевич" написал:задача добавить в этот БП поиск и среди Лидов.
Вам необходимо:

1. В БП создать метод, который будет выполнять поиск лидов по средству связи и записывать результат в [CTISearchResult]
В качестве примера реализации используйте SearchAccounts/SearchContacts.

2. В тело БП добавить элемент "Задание-сценарий", в котором вызвать созданный на предыдущем шаге метод поиска лидов. Пример кода следует посмотреть в SearchAccountsStartsWithNumberScriptTask.

Обратите, пожалуйста, внимание, что "Задание-сценарий" нужно добавить в три ветки:

Наталия, так и сделал. Но так как БП системный, создал новую системную настройку, в которой вызываю модифицированный SysCustomerIdentificationProcess. так же заместил CtiCustomerInfoUtilities и подправил код там.

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

Всем привет!
Изучаю сейчас бизнес процессы, и остановился на Скрипт-сценарии(СС).
Вроде как бы это и C# но какой то странный (перемеренные определяются как в js).
Полноценной документации я не нашел(
Возникли такие вопросы:
1. Есть перед СС у меня блок чтение данных, где я выбираю все записи нужного раздела по нужным мне критерием. Как передать их в СС?
2. Логика будет довольно обширная, и я думаю создать отдельный класс в Конфигурации. Как мне создать экземпляр данного класса?
3. Поддерживает ли СС вызов стандартного для c# GET/POST запроса к удаленному сервису? Если нет, то поддерживает ли класс созданный в конфигурации?

Нравится

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

Добрый день, скрипт-сценарий в бизнес-процессе, это полноценный C#. Вас наверно смутило объявление переменных через ключевое слово var, поясню, это фича языка называется "неявная типизация" https://msdn.microsoft.com/ru-ru/library/bb384061.aspx и появилась она лет 10 тому назад, в версии языка C# 3.0.
Документации по самому языку, и прекрасных книг, предостаточно.
По поводу самих бизнес-процессов на академии целый раздел.
По поводу вопросов:

1. Можно через имя элемента чтения + "." + "ResultEntityCollection" обратится к ним, если вы вбираете множество записей, или через "." + ResultEntity если выбираете одну. Но если вы уж будете писать свой класс, то наверное проще использовать для получения данных EntitySchemaQuery http://academy.terrasoft.ru/documents/docs/technic/SDK/7.6.0/UsingEntit… а не элемент "Чтение данных".

2. Создавайте свой класс, как схему «Исходный код», примеров в конфигурации достаточно. Вот мой пример.

namespace MyNamespace
{
	using System;
	using System.IO;
	using System.Net;
	using System.Text;
	using System.Collections.Specialized;
 
	public class MyClass
	{
		public void SendText(string text)
		{
			using(WebClient client = new WebClient())
			{
				var reqparm = new System.Collections.Specialized.NameValueCollection();
				reqparm.Add("value", text);
				byte[] responsebytes = client.UploadValues("http://localhost:3231/api/values", "POST", reqparm);
				string responsebody = Encoding.UTF8.GetString(responsebytes);
			}
		}
	}
}

В любом случае это полноценный C#. И в бизнес процессе, в СС его экземпляр создается самым обычным способом, по его полному имени, или по укороченному если его namespace описан в using's. Вот так я создаю экземпляр своего класса-примера, и вызываю его метод:

var myClass = new MyNamespace.MyClass();
myClass.SendText("Hello World!");

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

Огромное вам спасибо!
Все четко и понятно!

А еще вопрос.
Допустим мой класс отработал, и мне надо вывести в сообщении юзеру его результат(то что вернет определенный метод).
Какое действие в Дизайнере БП за это отвечает? Или может можно это сделать напрямую с СС?

Вот тут было видео, но его уже нет(
http://www.community.terrasoft.ru/blogs/10619

удалено

Из того что видно по приведенному коду, первая ошибка в том что вы создаете экземпляр как
new WebCity.SendListingForIpoteka, хотя в исходном коде немспейс называется не WebCity а Ecco.
Следовательно и создавать нужно так:

var test = new Ecco.SendListingForIpoteka();

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

По поводу вопроса касательно сообщения пользователю. Из СС это можно сделать следующим образом: http://www.community.terrasoft.ru/forum/topic/11784#comment-56699 либо по логике БП специальным элементом "Вопрос пользователю".

Я это и заметил и пост удалил)
Все работает спасибо!
Вот сморите, класс отработал. И сформулировал Стрингу. Мне ее надо записать в поле Договора(на нем по сигналу срабатывает БП)

Плиз хелп!

Если вы получили интересующее вас значение и оно в скрипте СС, вы можете записать его в параметр БП, и в следующем элементе, "изменение данных", или "создание данных" записать туда, куда вам нужно.
Для этого параметры и нужны, для общения между частями БП. Как записывать и читать в параметр вы уже интересовались выше.

Так же вы можете манипулировать данными прямо по коду C#, в своем СС, используя Update, Insert, Delete, множество примеров использования вы можете найти в вашей конфигурации, к примеру, на схеме Account из пакета Base, нажмите второй кнопкой, и выберите "Исходный код" -> "Открыть". Там, среди прочего, можно будет увидеть варианты использования вышеописанных классов.

...
if (removeRelationship && relationshipId != Guid.Empty) {
	Delete deleteRelationshipQuery = new Delete(UserConnection);
	deleteRelationshipQuery.From("Relationship");
	deleteRelationshipQuery.Where("Id").IsEqual(Column.Parameter(relationshipId));
	deleteRelationshipQuery.Execute(executor);
} else {
	if (relationshipId != Guid.Empty) {
		Update updateRelationshipQuery = new Update(UserConnection, "Relationship");
		updateRelationshipQuery.Set(parentAccountColumnName, Column.Parameter(parentId));
		updateRelationshipQuery.Where("Id").IsEqual(Column.Parameter(relationshipId));
		updateRelationshipQuery.Execute(executor);
	} else {
		Insert insertRelationshipQuery = new Insert(UserConnection);
		insertRelationshipQuery.Into("Relationship");
		insertRelationshipQuery.Set("Active", Column.Parameter(true));
		insertRelationshipQuery.Set("AccountBId", Column.Parameter(accountId));
		insertRelationshipQuery.Set("RelationTypeId", Column.Parameter(relationTypeId));
		insertRelationshipQuery.Set("AccountAId", Column.Parameter(parentId));
		insertRelationshipQuery.Set("ReverseRelationTypeId", Column.Parameter(reverseRelationTypeId));
		insertRelationshipQuery.Execute(executor);
	}
}
...

Спасибо!
Еще такой вопрос!
Вот я читаю данные с одной записи, и мне надо знать поле checkSumm. Блок чтения называется ReadObj. Хочу получить в сценарии результат с этого блока. Я так понял это будет: var tempvar = ReadObj.ResultEntity.get("checkSumm"). Верно?

И еще, параметр в который я буду записывать результат работы класса какое у него должно быть Поведение? Я так понимаю Результирующий, верно?

1. Этот момент уже обсуждался на форуме, достаточно поискать по ключевому слову "ResultEntity".
var myString = ReadObj.ResultEntity.GetTypedColumnValue("Name");
При условии что у сущности которую вы читаете есть колонка Name.

2. Можете оставить его по умолчанию Направление: "Входящий/исходящий", и не ставить галочку "Результирующий" и спокойно использовать его по мере работы процесса. Признак результирующий нужен если вы хотите указать, что процесс завершился с определенным результатом.
Подробнее в академии: Использование параметров процесса.

Большое спасибо!

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