Вопрос

Добрый день. После обновления до версии 7.13.3 при компиляции получаю ошибку:

The type or namespace name 'Http' does not exist in the namespace 'System.Net' (are you missing an assembly reference?) FILE <Название пользовательского Web сервиса>

Данное пространство имён есть в .NetFramework 4.7.

Кто с таким сталкивался?

У меня такой же вопрос

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

Добавьте в ваш пользовательский сервис

using System.Net.Http;

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

На эту строчку и ругается компилятор.

Коновалов Игорь,
В 7.13 правда не нахожу библиотеки System.Net.Http.
Могу посоветовать скачать ее и добавить во внешние сборки

Попробовал добавить библиотеку во внешние сборки, система скомпилировалась без проблем

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

О компании

LvBS – школа с европейскими ценностями и подходами, которая развивает открытое и ответственное бизнес-сообщество. Цель Львовской бизнес-школы — содействовать развитию визионеров, которые будут строить украинскую бизнес-среду. Основываясь на уникальном симбиозе бизнес-школы и католического университета, Львовская бизнес-школа берет за основу международность как главный принцип школы, с фокусом на личностном развитии каждого участника программ и мероприятий.

 

Предпосылки внедрения

До внедрения bpmonline сотрудники компании использовали несколько закрытых разрозненных клиентских баз. Это создавало хаотичность хранения информации и делало невозможным стандартизацию процесса. Сложно было собрать информацию об участниках мероприятия, за которое отвечало несколько менеджеров.  Кроме того, это влияло на взаимодействие с клиентами: сотрудники не могли оперативно начать коммуникацию, так как затрачивали дополнительное время на сбор и подготовку информации.

 

Для создания единой среды для обработки информации о взаимодействии с клиентами, ведения мероприятий, сделок и маркетинговых активностей была выбрана платформа bpmonline. Львовская бизнес-школа сделала выбор в пользу сразу двух продуктов — bpmonline sales и bpmonline marketing.

 

Основные задачи внедрения bpm’online:  

  • автоматизация процесса получения новых потребностей клиентов;
  • ведение длинных сделок;
  • выполнение маркетинговых кампаний и рассылок;
  • систематизация наследования информации сотрудниками при смене позиции в компании;
  • составление общей картины работы бизнес-школы для разработки стратегии развития.

 

Выполненные настройки

В первую очередь кастомизирован раздел [Контакты]. С помощью дизайнера страниц созданы колонки для фиксации стоимости обучения для клиента и его реквизиты. Добавлена специальная колонка для менеджеров, в которой содержится информации о правилах расчета и внесения платежей. Добавлены детали «Паспортные данные», «Программы обучения» для добавления информации о программах обучения, стоимости программ, сумме оплаты и остатке необходимого платежа. Деталь «Платежи» позволяет вносить информацию об оплатах клиента.

Деталь «История обучения» собирает всю информацию о курсах и программах клиента, а также их статусы.

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

Короткая продажа предусматривает работу только с лидом, а по кейсу долгосрочного обучения, кроме кейса в лиде, реализован кейс в разделе [Продажи]. Кроме этого, bpmonline автоматически создает продажу на соответствующей стадии лида в зависимости от кейса. 

Case Management призван упрощать работу пользователей. Благодаря этому инструменту при выборе той или иной потребности менеджер знает, что в bpmonline будет предусмотрен алгоритм действий.

В разделе продажи разработаны алгоритмы в зависимости от существующего образования клиента.  

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

 

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

 

Результат

В результате внедрения bpmonline Львовская бизнес-школа получила возможность использовать инструменты продаж и маркетинга в единой ИТ-экосистеме, что решает задачу объединения результатов работы из разных систем. Теперь в истории клиентов содержится как информация о сделках и потребностях клиента, так и об источниках потребностей и другая маркетинговая информация.

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

 

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

в карточке контрагента при выстраивании взаимосвязей в виде диаграммы система выдает ошибку SqlException

Из-за чего может быть такое поведение?

У меня такой же вопрос

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

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

Используйте профилировщик sql запросов для нахождения причины SqlException и ее устранения

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

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

Как выяснилось, у контрагента в поле Parent был внесён его собственный идентификатор, в результате запрос иерархии взаимосвязей вызывал исключение: "Выполнение инструкции прервано. Максимальная рекурсия 100 была использована до завершения инструкции."

Для исправления ошибки достаточно удалить ссылку на родителя в контрагенте (подставить свой Id):

update Account
  set ParentId = null
  where Id = N'665E1BDF-54FA-4231-BE2D-9D4305D91BE3'

 

Да, это решило проблему. Спасибо.

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

Добрый день, Коллеги!

Подскажите, пожалуйста, как в раздел продажи вынести быстрый фильтр по датам (как в активности с - по), который будет фильтровать по полю дата создания ИСТОРИИ СТАДИИ в карточке продажи. 
Как настроить такой фильтр по полю дата в самом разделе знаю, но как именно по полю дата в детали этого раздела.
Т.Е, я хочу в этом фильтре фильтровать записи (продажи) у которых за заданный период есть в истории стадий стадии

У меня такой же вопрос

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

Смотрите документацию по применению расширенных фильтров

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

Тут фильтр на поля самого раздела, вопрос в том как в разделе добавить этот фильтр но фильтровать по записям детали (по полю дата в детали)

Тогда нужно вам писать свой фильтр который будет отбирать записи с иторией стадий попадающий в диапазон дат

Калушка Д.,

Напишите sql-запрос, который будет выбирать нужные значения из таблицы продаж, а потом этот запрос 'переведите' в програмный код понятный bpm'online.

Его потом и пропишите в конфиге для быстрых фильтров.

По идее код должен выглядеть таким образом:

 define("OpportunitySectionV2", ["BaseFiltersGenerateModule"], function(BaseFiltersGenerateModule) {
    return {
        entitySchemaName: "Opportunity",
        methods: {
            initFixedFiltersConfig: function() {
                var fixedFilterConfig = {
                    entitySchema: this.entitySchema,
                    filters: [
                        {
                            name: "PeriodFilter",
                            caption: "",
                            dataValueType: this.Terrasoft.DataValueType.DATE,
                            startDate: {
                                columnName: "[OpportunityInStage:Opportunity:Id].StartDate",
                            },
                            dueDate: {
                                columnName: "[OpportunityInStage:Opportunity:Id].StartDate",
                            }
                        },
                    ]
                };
                this.set("FixedFilterConfig", fixedFilterConfig);
            }
        }
    };
});

Но это не будет работать, так как FixedFilterViewV2 не позволит создать элемент с таким id.

Могу предложить 2 варианта:
1) переопределить FixedFilterViewV2 и исправить этот метод. В 7.13.х переопределять модули сложно, но можно
2) настроить и сохранить расширенный фильтр

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

Добрый день!

 

Работаю в файловом режиме.

После неловких моих движений стала появляться следующая ошибка:

Exception Message: Операция является недопустимой из-за текущего состояния объекта. Exception Type: Terrasoft.Common.TopologicalSorterLoopsException`1[Terrasoft.Core.Packages.Package] Exception Source: Terrasoft.Common Exception Stack Trace: в Terrasoft.Common.ListGraphNodeUtilities.OrderByTopology[T](IList`1 source) в Terrasoft.Core.Packages.WorkspaceUtilities.GetTopologyPackagePositions(UserConnection userConnection, Guid workspaceId) в Terrasoft.Core.SchemaManager`1.GetTopologyPackagePositions(Guid workspaceId) в Terrasoft.Core.SchemaManager`1.InitializeItems(Guid itemUId) в Terrasoft.Core.Entities.EntitySchemaManager.InitializeItems(Guid itemUId) в Terrasoft.Core.SchemaManager`1.InitializeItems() в Terrasoft.Core.Entities.EntitySchemaManager.Initialize(SchemaManagerProvider provider, SchemaManagerProviderConfigurationElement configuration) в Terrasoft.Core.SchemaManagerProvider.InitializeSchemaManager(String managerName) в Terrasoft.Core.SchemaManagerProvider.GetManager(String managerName) в Terrasoft.Core.UserConnection.GetSchemaManager(String schemaManagerName) в Terrasoft.Core.UserConnection.get_EntitySchemaManager() в Terrasoft.Core.DB.DBSecurityEngine.FindEntitySchemaNameByUId(Guid entitySchemaUId) в Terrasoft.Core.DB.DBSecurityEngine.GetEntitySchemaOperationsRightLevels(String schemaName) в Terrasoft.Core.DB.DBSecurityEngine.GetEntitySchemaOperationsRightLevel(String schemaName) в Terrasoft.Core.DB.DBSecurityEngine.GetIsEntitySchemaDeletingAllowed(String schemaName) в Terrasoft.WebApp.WorkspaceExplorerModule.CheckRights() в Terrasoft.WebApp.WorkspaceExplorerModule.Page_Load(Object sender, EventArgs e) в System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) в System.Web.UI.Control.OnLoad(EventArgs e) в System.Web.UI.Control.LoadRecursive() в System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Остановил приложение, затем пул приложений, очистил базу Redis. Запустил все обратно - ошибка не исчезла. Перезапустил службу IIS, то же не помогло. Восстановил резервную копию, так же не помогло. (попробую еще раз)

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

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

У меня такой же вопрос

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

Во второй раз восстановил базу из другой резервной копии. Вышло сообщение о том что рабочее пространство Default не инициализировано. Скомпилировал приложение, пока все работает. 

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

select spd.syspackageid, sp.name, spd.dependonpackageid, sp2.name, spd2.dependonpackageid, sp3.name from SysPackageDependency spd 
inner join syspackage sp on sp.id = spd.syspackageid 
inner join syspackage sp2 on sp2.id = spd.dependonpackageid
inner join SysPackageDependency spd2 on spd2.syspackageid = spd.dependonpackageid
inner join syspackage sp3 on sp3.id = spd2.dependonpackageid where sp.name = 'название менявшегося пакета'

 

Спасибо, Александр, за поддержку! Да, я заметил по логам что компиляция стала уходить в цикл. Решил посмотреть логи продуктовой базы (июнь 2018), нашел там похожее сообщение о том что есть зацикленность в пакетах и успокоился на этом. Но ваш пост пролил свет на путь решения проблемы, буду разбираться дальше.

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

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

Переименовывал кто-то орг. роль all employees? Будут последствия для системы? 

У меня такой же вопрос

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

Добрый день!
По сути орг. роль - это запись в таблице SysAdminUnit.
И должна быть связка по Id. Так что проблем быть не должно.

PS: поиск по "all emploees" по исходным кодам результата не дает

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

Добрый день!

Не удается передать веб-сервису параметры методом POST, БП просто запускается, но не получает параметры. При использовании метода GET ошибок не возникает. использую строку /0/ServiceModel/ProcessEngineService.svc/UsrAddContragentPDZ/RunProcess

 public static void SendData()
        {
            var Request = HttpWebRequest.Create(processServiceUri) as HttpWebRequest;
            Request.Method = "POST";
            Request.Accept = "application/json";
            Request.ContentType = "application/json";
            Request.CookieContainer = AuthCookie;

            CookieCollection cookieCollection = AuthCookie.GetCookies(new Uri(processServiceUri));
            string csrfToken = cookieCollection["BPMCSRF"].Value;

            Request.Headers.Add("BPMCSRF", csrfToken);

            using (var requestStream = Request.GetRequestStream())

            {
                using (var writer = new StreamWriter(requestStream))
                {
                    string json = new JavaScriptSerializer().Serialize(new
                    {
                        BossID = "GBO_048845",
                        StatusPDZString = "007C2385-2EDC-402A-B40A-E74625E0E6DD",
                        PDZString = "4098,56"
                    });
                    writer.Write(json);
                    writer.Flush();
                    writer.Close();
                }
            }

Где может быть ошибка?

У меня такой же вопрос

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

Спасибо, Александр.

Все работает.

Также была ошибка в http-запросе - там не нужно имя схемы.

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

Стала проблема получения списка всех Id записей в реестре.

this.getGridData().collection.keys.toString(); - вот это возвращает Id, но возвращает только те, которые видно в реестре, можно ли как то получить все айдишки, которые есть в реестре?

У меня такой же вопрос

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

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

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

Например, можете собрать все Id с помощью запроса esq следующего вида:

var ids = "";
 
var esq = this.getGridDataESQ();
this.initQueryColumns(esq);
this.initQuerySorting(esq);
this.initQueryFilters(esq);
this.initQueryEvents(esq);
 
esq.getEntityCollection(function(response) {
	if (response.success) {
		response.collection.each(function(item) {
			ids += item.get("Id") + ";";
		});
	}
}, this);

 

Войдите или зарегистрируйтесь, чтобы комментировать

Коллеги, добрый день!

 

Подскажите, пожалуйста, как в визировании (в бизнес-процессе) при отказе сделать причину отказа обязательной для заполнения?

 

Без средств программирования, пожалуйста.

У меня такой же вопрос

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

Как подготовка к аттестации в целом? 

Попробуйте через мастер детали настроить такое бизнес-правило обязательности поля 'Причина отказа' от статуса визы.

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

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

Добрый день!

Возникла необходимость поменять карточку объекта на новую. Я создал новую схему, наследованную от BaseModulePageV2, и подставил её Uid из таблицы SysSchema в столбец CardSchemaUid таблицы SysModule. Но, к сожалению, этого оказалось недостаточно, по прежнему запись в разделе открывается в старой карточке. Подскажите, пожалуйста, что мне ещё необходимо сделать чтобы всё корректно заработало.

У меня такой же вопрос

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

Аналогично нужно сделать в таблице

SysModuleEdit

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

Сделал, как Вы сказали. Теперь ругается на параметр "operation":

На всякий случай обобщу свои действия:

1. Создал схему модели представления карточки, с родительским объектом BaseModulePageV2 (ESN).

2. Наполнил её:

define("MyEntityPage", [], function() {
    return {
        entitySchemaName: "MyEntity",
        attributes: {},
        modules: {},
        details: {},
        businessRules: {},
        methods: {},
        dataModels: {},
        diff: [{}]
    };
});

3. Получил UId из таблицы SysSchema, записал его в поле CardShemaUid таблиц SysModule  и SysModuleEdit.

Видимо, что-то ещё упустил.

Иван Небеддаг,

Какое именно сообщение об ошибке и когда оно возникает

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

Там была прикреплена картинка, но она куда-то исчезла. Может быть, в этот раз мне повезёт:

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

Господа, сталкивался ли кто-то с такой проблемой? И если да, то как вы её решили? Есть ли какая-то последовательность действий, которая поможет заменить карточку в разделе?

Войдите или зарегистрируйтесь, чтобы комментировать