Добрый день.

Подскажите, пожалуйста, наиболее удобный способ конвертации из DOC/DOCX в RTF и обратно.

Желательно без дополнительного подключения внешних библиотек.

Спасибо!

Нравится

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

Без внешних сборок навряд ли получится разве что дергать онлайн сервисы наподобии google docs или microsoft office online. 

Без внешних сборок навряд ли получится разве что дергать онлайн сервисы наподобии google docs или microsoft office online. 

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

Понятно. Спасибо.

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

Пытаюсь создать объект с помощью протокола OData и метода POST.

HTTP запрос выглядит так:

<АдресБазы>/0/ServiceModel/EntityDataService.svc/PaymentsCollection/

Использую следующий XML в теле запроса:

<?xml  version="1.0" encoding="utf-8"?> 

            xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"

            xmlns:georss="http://www.georss.org/georss"

            xmlns:gml="http://www.opengis.net/gml"

            xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"

            xml:base="https://dev-maksimedia.bpmonline.com/0/ServiceModel/EntityDataService.s…">            

     

         

            0000-000001

            2019-06-11T00:00:00

            110636.25

            Кафе-кондитерская "Зефир"

            

            681c7f54-2a15-4e6e-8888-249ce691dcf6

            2019-06-11T00:00:00

            2019-06-11T00:00:00

            410006e1-ca4e-4502-a9ec-e54d922d2c00

            410006e1-ca4e-4502-a9ec-e54d922d2c00

            5fb76920-53e6-df11-971b-001d60e938c6

            0

            0

            

            

            

            

            

            

            false

            false

            34917119-1e98-11e6-a31d-14dae9b19a48

           

    

 

HTTP запрос возвращает код 201 - объект создан. И даже возвращает XML  с описанием созданного объекта, где даже id присвоен:

 

<?xml version="1.0" encoding="UTF-8"?>

        xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"

        xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"

        xml:base="<Здесь адрес базы>/0/ServiceModel/EntityDataService.svc/">

    https://dev-maksimedia.bpmonline.com/0/ServiceModel/EntityDataService.s…

    
            scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>

    
            title="Payments"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')"/>

    
            type="application/atom+xml;type=entry"

            title="CreatedBy"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/CreatedBy"/>

    
            type="application/atom+xml;type=entry"

            title="ModifiedBy"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/ModifiedBy"/>

    
            type="application/atom+xml;type=entry"

            title="Currency"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/Currency"/>

    
            type="application/atom+xml;type=entry"

            title="UsrLookupKontragentOplata"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/UsrLookupKontragentOplata"/>

    
            type="application/atom+xml;type=entry"

            title="UsrLookupOrderPP"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/UsrLookupOrderPP"/>

    
            type="application/atom+xml;type=entry"

            title="UsrTypeOperation"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/UsrTypeOperation"/>

    
            type="application/atom+xml;type=feed"

            title="InvoicePaymentsCollectionByPayment"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/InvoicePaymentsCollectionByPayment"/>

    
            type="application/atom+xml;type=feed"

            title="PaymentsFileCollectionByPayments"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/PaymentsFileCollectionByPayments"/>

    
            type="application/atom+xml;type=feed"

            title="PaymentsInFolderCollectionByPayments"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/PaymentsInFolderCollectionByPayments"/>

    
            type="application/atom+xml;type=feed"

            title="PaymentsInTagCollectionByEntity"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/PaymentsInTagCollectionByEntity"/>

    

    2019-06-20T10:21:49Z

    

        

    

    

        

            Id m:type="Edm.Guid">6952eb12-ca22-4014-8376-cad0981dd21e

            0000-000001

            2019-06-11T02:00:00

            410006e1-ca4e-4502-a9ec-e54d922d2c00

            2019-06-11T02:00:00

            410006e1-ca4e-4502-a9ec-e54d922d2c00

            0

            5fb76920-53e6-df11-971b-001d60e938c6

            2019-06-11T02:00:00

            110636.25

            0

            0

            

            

            Кафе-кондитерская "Зефир"

            

            

            

            00000000-0000-0000-0000-000000000000

            00000000-0000-0000-0000-000000000000

            

            

            false

            false

            681c7f54-2a15-4e6e-8888-249ce691dcf6

            34917119-1e98-11e6-a31d-14dae9b19a48

        

    

 

НО!!! В BPM'online объект не появляется!

При попытке найти объект по ключевым полям так же ничего не находится.

В чём может быть проблема???

Нравится

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

Здравствуйте! Возможно у Вас нет прав на данную запись. Что бы наверняка отобразилась необходимо просматривать под пользователем который входит в роль системные администраторы.

Права уже полнее некуда. Попробовал через фидлер делать запрос. Та же история. Сообщает об успешности создания, даже даёт ссылка на переход к новому элементу. Но после перехода по ссылке

<АдресБазы>/0/ServiceModel/EntityDataService.svc/PaymentsCollection(guid'a1e115fc-70f6-414e-a506-e535dba00fba')

выдает: 

<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" class=" FB_FW_ext Bco">

<code>4</code>

<message xml:lang="">

Resource not found for the segment 'PaymentsCollection'.

</message>

<innererror>

<message>

Resource not found for the segment 'PaymentsCollection'.

</message>

<type>System.Data.Services.DataServiceException</type>

<stacktrace>

at System.Data.Services.Providers.DataServiceExecutionProviderWrapper.GetSingleResultFromRequest(SegmentInfo segmentInfo) at System.Data.Services.DataService`1.CompareETagAndWriteResponse(RequestDescription description, IDataService dataService, IODataResponseMessage responseMessage) at System.Data.Services.DataService`1.HandleRequest()

</stacktrace>

</innererror>

</error>

 

Проблема по прежнему не решена.

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

А если на уровне объекта вставка происходит, а реально в базе записи не появилось, дело может быть в какой-то встроенной в БП объекта логике на Saving, либо в базе на триггере instead of insert на вставку в эту таблицу. Либо запись на мгновение вставляется, но потом удаляется логикой БП по сигналу вставки или по таймеру.

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

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

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

Неоднократно задавал тут вопрос: возможно ли применить функционал расширенного фильтра к объекту "справочник".

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

на самом деле мне удалось этого добиться, правда не совсем стандартным способом...

  1. Создал раздел внутренними механизмами BPM
  2. Дропнул тейбл раздела в БД
  3. Создал представление (с inner join из 2 таблиц) с таким же названием в БД из п.2.
  4. Внес изменения в объект в БПМ - создал columns точь-в-точь как в представлении + установил признак "представление БД" (!)
  5. Закастомил страницу реестра.

Правда теперь не понимаю может ли эти изменения как-то негативно повлиять на работу приложения в целом?

Нравится

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

Использовать схемы на основе view вполне допустимо, парой сообщений ниже Алла Савельева как раз предлагает такое для решения вопроса с графиком.

Только обычно создают в обратном порядке: сначала — схему с установленной галкой, потом — view в базе с такими же полями. Таблицы при этом не создаётся.

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

По поводу негативного влияния, всё зависит от кода view. Если он содержит ошибки или при наложении каких-то фильтров получится очень тяжёлый запрос на выборку, то база может «задуматься».

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

ключевое слово - расширенный фильтр.

К справочнику его не применить.

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

Случайно обнаружил: подобное действие с разделом привело к ошибке (см. принт-скрин).

  УРЛ https://[url_app]/0/ServiceModel/EntityDataService.svc/ для меня крайне важен...

Значит, у нового раздела на основе view получилось совпадающее с существующим значение названия или чего-подобного. В результате при попытке системы построить список объектов, доступных по OData натыкается на пару дублей и не может однозначно выбрать.

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

Коллеги, приветствую!

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

Благодарю заранее.

Нравится

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

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

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

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

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

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

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

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

Добрый день, коллеги.

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

Заранее благодарю :)

Нравится

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

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

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

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

Как скомпилировать код cs, который расположен в папке Files?

Нравится

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

Создайте в Visual Studio проект [Class Library (.NET Framework)]  подключите нужные библиотеки Terrasoft.*.dll и ваши файлы из папти Files, скомпилируйте ваш проект и полученную dll загрузите во внешние сборки пакета.

Подробнее тут

Создайте в Visual Studio проект [Class Library (.NET Framework)]  подключите нужные библиотеки Terrasoft.*.dll и ваши файлы из папти Files, скомпилируйте ваш проект и полученную dll загрузите во внешние сборки пакета.

Подробнее тут

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

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

Нравится

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

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

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

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

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

Если есть доступ в базу, можно делать выборку по полю Source таблицы SysSchemaSource (для C#-кода) и Content таблицы SysSchemaContent (для JS-кода).

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

Доброго времени суток!

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

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

Нравится

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

По какой причине не сохраняются изменения через мастер, Вы можете посмотреть в консоли браузера (вызывается нажатием на F12).

Скорее всего в ней будет написан текст ошибки.

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

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

Какая версия. если  7,14 , то нужно обратится в техподержку за получением патча (обходного решения)

По какой причине не сохраняются изменения через мастер, Вы можете посмотреть в консоли браузера (вызывается нажатием на F12).

Скорее всего в ней будет написан текст ошибки.

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

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

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

Уточни, пожалуйста, в версии 7.14 есть какая-то ошибка, связанная с этой функциональностью?

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

Версия 7.12

А ещё в первую очередь попробовать перезапустить сайт и очистить Redis.

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

Я сейчас в пробной версии работаю, узнаю все. 

Нужно согласовать документ, но доступны разделы "Договор" и "контракт", да и "закупки".

Хотелось бы брать документ для согласования из раздела "Документы".

Как это сделать? Если можно, максимально простыми словами, т.к. в кодах пока еще не разбираюсь.

Спасибо!

Нравится

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

Добрый день!

В bpm'online studio нет раздела "Документы". Вам нужно:

- использоваться bpm'online sales,

- либо ставить дополнение Docs из маркетплейс

- либо самому добавить раздел

Добрый день!

В bpm'online studio нет раздела "Документы". Вам нужно:

- использоваться bpm'online sales,

- либо ставить дополнение Docs из маркетплейс

- либо самому добавить раздел

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

Terrasoft.Common.DbOperationException: The INSERT statement conflicted with the FOREIGN KEY constraint "FKmCHVieuE4OQALQKNVhLvr9q9YI0". The conflict occurred in database "048295-crm-bundle", table "dbo.Contract", column 'Id'.

The statement has been terminated. ---> System.Data.SqlClient.SqlException: The INSERT statement conflicted with the FOREIGN KEY constraint "FKmCHVieuE4OQALQKNVhLvr9q9YI0". The conflict occurred in database "048295-crm-bundle", table "dbo.Contract", column 'Id'.

The statement has been terminated.

   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)

   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)

   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)

   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)

   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)

   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)

   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()

   at Polly.Policy.<>c__DisplayClass119_0`1.b__0(Context ctx, CancellationToken ct)

   at Polly.Policy.<>c__DisplayClass129_0`1.b__0(Context ctx, CancellationToken ct)

   at Polly.Policy.<>c__DisplayClass103_0.b__1(Context ctx, CancellationToken ct)

   at Polly.NoOp.NoOpEngine.Implementation[TResult](Func`3 action, Context context, CancellationToken cancellationToken)

   at Polly.Policy.<>c.b__103_0(Action`2 action, Context context, CancellationToken cancellationToken)

   at Polly.Policy.ExecuteInternal[TResult](Func`3 action, Context context, CancellationToken cancellationToken)

   at Polly.Policy.Execute[TResult](Func`3 action, Context context, CancellationToken cancellationToken)

   at Polly.Policy.Execute[TResult](Func`1 action)

   at Terrasoft.DB.MSSql.MSSqlExecutor.FailoverExecute[TResult](DbCommand command, Func`1 func)

   at Terrasoft.Core.DB.DBExecutor.ExecuteCommand[TResult](Func`2 commandExecutionCallback, String sqlText, QueryParameterCollection queryParameters, CancellationToken cancellationToken)

   at Terrasoft.Core.DB.DBExecutor.Execute(String sqlText, QueryParameterCollection queryParameters)

   at Terrasoft.Core.Entities.Entity.InsertToDB(Boolean skipLookupColumnValues, Boolean validateRequired)

   --- End of inner exception stack trace ---

   at Terrasoft.Core.Entities.Entity.InsertToDB(Boolean skipLookupColumnValues, Boolean validateRequired)

   at Terrasoft.Core.Entities.Entity.InternalSave(Boolean validateRequired, Boolean setColumnDefValue)

   at Terrasoft.Core.Entities.Entity.Save(Boolean validateRequired, Boolean setColumnDefValue)

   at Terrasoft.Core.Process.ProcessEngineImpl.AddProcessListener(Entity entity, Guid processElementUId, String conditionData, String changedColumns, EntityChangeType entityChangeType)

   at Terrasoft.Core.Process.Configuration.ApprovalUserTask.InternalExecute(ProcessExecutingContext context)

   at Terrasoft.Core.Process.ProcessActivity.ExecuteElement(ProcessExecutingContext context)

   at Terrasoft.Core.Process.ProcessActivity.Execute(ProcessExecutingContext context)

Нравится

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

Здравствуйте. Это ошибка на уровне бд по внешнему ключу ссылающемуся на договор(Contract). Простыми словами нет договора 

Если выбрать все зависимости и отфильтровать по названию ключа, ссылка на договор пыталась добавиться из таблицы ContractVisa (что логично, если сбой в визировании).

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