Добрый день!

Почему система проверяет префиксы уже существующих колонок на предмет равенства с системной настройкой "Префикс названия объекта"? С недавнего времени поменяли эту системную настройку так, чтобы она соответствовала аббревиатуре названия компании. Подскажите, пожалуйста, как обойти эту проверку?

Нравится

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

Руслан Хасанов,

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

Только убрать префикс в системной настройке "Префикс названия объекта", что делать не рекомендую

Какое ваше мнение по поводу того чтобы система в коробочном варианте не проверяла уже созданные колонки? Согласны ли вы с этим или это будет противоречить какой то системной логике? 

Руслан Хасанов,

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

Хорошо, спасибо, Григорий, за разъяснение.

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

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

После добавления поля в объект и обновления пакета на целевой системе при любой попытке изменений вылетает ошибка:

Column name or number of supplied values does not match table definition.

Никто с таким не сталкивался?

Нравится

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

После добавления поля вы выполнили компиляцию?

В конфигурации выведите колонку Требукт обновления в БД и посмотрите не установлен ли этот признак. Если установлен то выполните выделив ваш объект Структура БД-Обновить для выбранных.

Если признак не установлен то выполните генерацию исходного кода, перекомпелируйте конфигурацию, очистите рэдис

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

Я правильно понимаю, что на тестовом сайте такой ошибки не наблюдается?

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

Алла Савельева,

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

Проверил соответствие колонок в конфигураторе и в БД - совпадают.

Возможно проблема связана с Кейсом - зомби. Опишу его в отдельном запросе.

Фёдоров Александр Сергеевич,

А в консоли есть какие-то ошибки?

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

После добавления поля вы выполнили компиляцию?

В конфигурации выведите колонку Требукт обновления в БД и посмотрите не установлен ли этот признак. Если установлен то выполните выделив ваш объект Структура БД-Обновить для выбранных.

Если признак не установлен то выполните генерацию исходного кода, перекомпелируйте конфигурацию, очистите рэдис

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

Здравствуйте! Может мне кто-то подскажет как делать запрос в DataService, и получать данные, например справочника, с учетом локализации.

Делаю аутентификацию:

{
  "UserName": "Supervisor",
  "UserPassword": "Supervisor"
}

И делаю например запрос справочника

 

{
	"RootSchemaName":"CaseCategory",
	"OperationType":0,
	"AllColumns":true
}

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

Может есть какой-либо атрибут, позволяющий возвращать локализируемые значения.

Нравится

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

Добрый день!

Добавьте в запрос признак "UseLocalization": true

Пример:

{
	"RootSchemaName":"CommunicationType",
	"OperationType":0,
	"AllColumns":true,
    "UseLocalization": true
}

 

Добрый вечер!

Локализируемые значения хранятся в таблицах с таким названием Sys + [Название основной таблицы] + Lcz, то есть в Вашем случае нужные Вам значения хранятся в таблице SysCaseCategoryLcz.

Алла Савельева,

Я это прекрасно понимаю, но такое себе, когда тебе нужно достать значения справочника, ещё и в таблицу Lcz лезть, проверять там значения нужной тебе локализации. Думал может есть какой-то параметр, при запросе через DataService, который сразу выдаст с локализацией.

Дульский Александр пишет:

Думал может есть какой-то параметр, при запросе через DataService, который сразу выдаст с локализацией.

Да, было бы отлично)))

Можете написать это, как идею на рассмотрение, в службу поддержки.

Алла Савельева,

Да, кстати, DataService походу не видит таблицу SysCaseCategoryLcz, т.к. выдает что 

"Элемент с именем \"SysCaseCategoryLcz\" не найден". Получается локализируемые строки никак не взять.

Дульский Александр,

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

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

Добрый день!

Добавьте в запрос признак "UseLocalization": true

Пример:

{
	"RootSchemaName":"CommunicationType",
	"OperationType":0,
	"AllColumns":true,
    "UseLocalization": true
}

 

Сидоров Александр В.,

Спасибо огромное!

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

Добрый день! 

При работе с деталью "Продукт" раздела "Продажи" у некоторых продаж происходит так, что при сохранении детали страница переключается на первую закладку "Данные о продаже". К тому же, деталь "Продукт" оказывается на этой же закладке ("Данные о продаже") в режиме редактирования записи строки, которую добавляли или редактировали в детали на закладке "Продукты". После переключения на закладку "Продукты" и обратно, в закладке "Данные о продаже" детали уже не видно. Ошибок в консоли нет. С чем это может быть связано?

Нравится

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

actionDashboardModule Используется для показа следующих шагов в том числе и уведомлений из БП, автогенерируемых страниц, активностей и тд

Уточните, речь идет о базовой конфигурации или у Вас доработанная версия со своей логикой?

Доработанная.

Руслан Хасанов,

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

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

Спасибо, Алла, за поддержку. Постараюсь понять где проблема.

Продолжительные поиски привели к такому выводу: происходит обновление страницы продажи в ответ на коробочное сообщение по следующей подписке - 

this.sandbox.subscribe("ReloadCard", this.onReloadCard, this, [actionDashboardModuleId]);

, в результате чего происходит инициализация закладок и текущей устанавливается первая закладка. С этого момента понять пока не получилось почему модуль actionDashboardModuleId посылает данное сообщение. Единственное что я произвожу это обновление детали командой: this.updateDetail({reloadAll: true});, которую перегрузил, добавив в нее код устанавливающий атрибуты детали, которые я сам же добавил. Какое отношение ко всему этому имеет actionDashboardModuleId модуль, кто нибудь может объяснить?

actionDashboardModule Используется для показа следующих шагов в том числе и уведомлений из БП, автогенерируемых страниц, активностей и тд

Спасибо, Григорий, за разъяснение. В моем случае по продаже не запущены БП, лента шагов так же не затронута, автогенерируемые страницы так же отображаются, активностей тоже нет. По какой то причине сообщение ReloadCard публикуется при обновлении детали.

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

Добрый день, подскажите пожалуйста как исправить ошибку , развернул приложение на сервере указал строку подключения в connectionstrings настроил web.config файл, при запуске приложения появляется ошибка 

"Could not load file or assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. Не удается найти указанный файл" 

Изображение удалено.

Нравится

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

Очень похоже, что данная ошибка связана с работой Microsoft .NET Framework.

Проверьте, какая версия .NET Framework установлена на этом сервере. Согласно документации на Академии версия Microsoft .NET Framework 4.7 и выше используется для версий bpm’online 7.11.1 - 7.13.1; Microsoft .NET Framework 4.7.2 — для версий bpm’online 7.13.2 и выше. Так как у Вас версия bpm'online 7.10, то, возможно, Вам подойдет .NET Framework 4.6.

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

Очень похоже, что данная ошибка связана с работой Microsoft .NET Framework.

Проверьте, какая версия .NET Framework установлена на этом сервере. Согласно документации на Академии версия Microsoft .NET Framework 4.7 и выше используется для версий bpm’online 7.11.1 - 7.13.1; Microsoft .NET Framework 4.7.2 — для версий bpm’online 7.13.2 и выше. Так как у Вас версия bpm'online 7.10, то, возможно, Вам подойдет .NET Framework 4.6.

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

Добрый день,Дмитрий! По тексту ошибки можно предположить что серверу не удается найти библиотеку .NETStandard. Проверьте еще раз обязательные компоненты Windows по инструкции.

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

Добрый день! Есть такая проблема: с БПМ интегрируется сторонняя система, через DataService, она может загружать файлы к нам в БПМ, для этого есть специальный сервис и метод (FileApiService/Upload). Но так же есть необходимость скачивать файлы из бпм, как это можно организовать?? потому что например, если файлы формата .txt, то байты можно забрать простым SelectQuery, и файл у них создается, а вот если это Word-файлы (.doc, .docx), то они так же читают байты файла, но тут уже проблема, они не могут на своей стороне эти байты преобразовать в файлы формата .doc, .docx, Так вот возможно есть метод отдельный для скачки файлов из БПМ?

Нравится

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

Всем доброго дня.

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

При переходе по статусам в старых записях на экран выдаётся сообщение об ошибке: "Процесс с идентификатором "<здесь разные guid'ы>" не найден".

Подскажите, пожалуйста, как можно эту ошибку исправить? Может очистить какую-либо таблицу?

Нравится

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

Уже обсуждалось тут

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

Смотрел в своё время ту тему. В журнале процессов пусто. Из кейса ничего не стартует - только ошибку выдаёт.

Причём это не идентификатор процесса, это похоже на идентификатор экземпляра процесса, который теперь у приложения не получается найти.

Искал этот идентификатор через базу. Нашёл его в нескольких служебных таблицах, но раскрутить связи пока не получилось.

Фёдоров Александр Сергеевич,

Напишите где нашли возможно поможем. Как вариант вы можете раскрыть записи библиотеки процессов и журнала процессов и в url подставить ваши id, возможно ваш процесс или его єкземпляр найдется

Было аналогичное при смене стадии в разделе «Сделки». Тоже  изменялись процессы, которые привязаны к состоянию сделки (настройка кейсов) — добавили новые процессы, убрали и изменили несколько процессов.

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

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



По информации от разработчиков продукта, если элемент завершается с ошибкой из-за дедлока,  то может быть выполнен автоматический откат транзакции, поэтому и нет записей в таблице SysProcessElementData (дедлок был при попытке записи в таблицу). Такое поведение связано с ошибкой в движке процессов, которое исправлено в версии 7.11.

У Вас и так 7.11, попробуйте обновиться до последней 7.11.3 или ещё дальше.

Мотков Илья,

Очень похоже на описанное... Сейчас на 7.11.3. Будем планировать обновляться...

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

Доброго дня,

столкнулся с проблемой, прошу вашей помощи.

при попытке обновлении guid("UsrRegistrationStatusId") с помощью odata используя json формат полезной нагрузки получаю ошибку 

"message": "Cannot convert a primitive value to the expected type 'Edm.Guid'. See the inner exception for more details."
"message": "Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)."

 привожу пример

http метод put,

передаваемый json  

{

"UsrRegistrationStatusId":"a9d44061-de29-4578-9df6-d2f226573a06",

"UsrTitle":"myvalue",

"UsrFirstName":"myvalue",

"UsrLastName":"myvalue",

"UsrPreferredEmail":"myvalue@mm.mm",

"UsrDateOfBirth":"2019-04-18T11:14:26.697Z",

"UsrOccupation":"myvalue",

"UsrJobTitle":"myvalue",

"UsrCompanyPersonal":"myvalue",

"UsrComment":"myvalue",

"UsrModifiedOn":"2019-04-18T11:14:26.697Z",

"UsrPassportNumber":"myvalue",

"UsrContactNumber":"myvalue",

"UsrDateOfExpiry":"2019-04-18T11:14:26.697Z",

"UsrNationality":"myvalue",

"UsrGuestTypeId":"myvalue",

"UsrMainGuestId":"myvalue",

"UsrIsAccompanyingPerson":"myvalue",

"UsrFlightsModifiedOn":"2019-04-18T11:14:26.697Z"

}

Возможно ли сформировать поля в json  с определенным типом например Edm.Guid ? Было бы круто если покажите пример с описанием типа данных.

Спасибо за внимание!

 

 

Нравится

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

Привидите полный код формирования запроса с установкой всех служебных заголовков и обратите внимание на примеры для c# 

Представьте Id  Guid в вашем Json как

guid'9d44061-de29-4578-9df6-d2f226573a06'

Спасибо за ответ!

но не помогло  ошибка таже,

urn запроса 0/ServiceModel/EntityDataService.svc/UsrGuestCollection(guid'3b42f755-1f62-4358-878c-47f460ab9e57')

json

{

"UsrRegistrationStatusId":"guid'a9d44061-de29-4578-9df6-d2f226573a06'"

}

полный ответ 

{
  "error": {
    "code": "4",
    "message": {
      "lang": "",
      "value": "An error occurred while processing this request."
    },
    "innererror": {
      "message": "An error occurred while processing this request.",
      "type": "System.Data.Services.DataServiceException",
      "stacktrace": "   at System.Data.Services.Serializers.ODataMessageReaderDeserializer.Deserialize(SegmentInfo segmentInfo)\r\n   at System.Data.Services.Serializers.Deserializer.HandlePutRequest()\r\n   at System.Data.Services.DataService`1.HandlePutOperation(RequestDescription description, IDataService dataService)\r\n   at System.Data.Services.DataService`1.ProcessIncomingRequest(RequestDescription description, IDataService dataService)\r\n   at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)\r\n   at System.Data.Services.DataService`1.HandleRequest()",
      "internalexception": {
        "message": "Cannot convert a primitive value to the expected type 'Edm.Guid'. See the inner exception for more details.",
        "type": "Microsoft.Data.OData.ODataException",
        "stacktrace": "   at Microsoft.Data.OData.Json.ODataJsonReaderUtils.ConvertValue(Object value, IEdmPrimitiveTypeReference primitiveTypeReference, ODataMessageReaderSettings messageReaderSettings, ODataVersion version, Boolean validateNullValue)\r\n   at Microsoft.Data.OData.Json.ODataJsonPropertyAndValueDeserializer.ReadPrimitiveValueImplementation(IEdmPrimitiveTypeReference expectedValueTypeReference, Boolean validateNullValue)\r\n   at Microsoft.Data.OData.Json.ODataJsonPropertyAndValueDeserializer.ReadNonEntityValueImplementation(IEdmTypeReference expectedTypeReference, DuplicatePropertyNamesChecker duplicatePropertyNamesChecker, CollectionWithoutExpectedTypeValidator collectionValidator, Boolean validateNullValue)\r\n   at Microsoft.Data.OData.Json.ODataJsonEntryAndFeedDeserializer.ReadEntryProperty(IODataJsonReaderEntryState entryState, IEdmProperty edmProperty)\r\n   at Microsoft.Data.OData.Json.ODataJsonEntryAndFeedDeserializer.ReadEntryContent(IODataJsonReaderEntryState entryState, IEdmNavigationProperty&amp; navigationProperty)\r\n   at Microsoft.Data.OData.Json.ODataJsonReader.ReadAtEntryStartImplementation()\r\n   at Microsoft.Data.OData.ODataReaderCore.ReadImplementation()\r\n   at Microsoft.Data.OData.ODataReaderCore.InterceptException[T](Func`1 action)\r\n   at System.Data.Services.Serializers.EntityDeserializer.ReadEntry(ODataReader odataReader, SegmentInfo topLevelSegmentInfo)\r\n   at System.Data.Services.Serializers.EntityDeserializer.Read(SegmentInfo segmentInfo)\r\n   at System.Data.Services.Serializers.ODataMessageReaderDeserializer.Deserialize(SegmentInfo segmentInfo)",
        "internalexception": {
          "message": "Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).",
          "type": "System.FormatException",
          "stacktrace": "   at System.Guid.GuidResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument, String failureArgumentName, Exception innerException)\r\n   at System.Guid.TryParseGuidWithDashes(String guidString, GuidResult&amp; result)\r\n   at System.Guid.TryParseGuid(String g, GuidStyles flags, GuidResult&amp; result)\r\n   at System.Guid..ctor(String g)\r\n   at Microsoft.Data.OData.Json.ODataJsonReaderUtils.ConvertStringValue(String stringValue, Type targetType)\r\n   at Microsoft.Data.OData.Json.ODataJsonReaderUtils.ConvertValue(Object value, IEdmPrimitiveTypeReference primitiveTypeReference, ODataMessageReaderSettings messageReaderSettings, ODataVersion version, Boolean validateNullValue)"
        }
      }
    }
  }
}

Так же обратите внимание, на формирование строка запроса, в примере изменения имени контакта с идентификатором 00000000-0000-0000-0000-000000000000 из коллекции контактов ContactCollection.

// Строка запроса:
// PUT <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/ContactCollection(guid'00000000-0000-0000-0000-000000000000')
// или
// MERGE <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/ContactCollection(guid'00000000-0000-0000-0000-000000000000')

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

Сейчас выполняется запрос вида 

 PUT <Адрес приложения BPMonline>0/ServiceModel/EntityDataService.svc/UsrGuestCollection(guid'3b42f755-1f62-4358-878c-47f460ab9e57')

А если без двойных кавычек

Json

{

"UsrRegistrationStatusId":guid'a9d44061-de29-4578-9df6-d2f226573a06'

}

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

Без двойных кавычек сработает ошибка парсинга json 

{

"UsrRegistrationStatusId":guid'a9d44061-de29-4578-9df6-d2f226573a06'

}

 "message": "Invalid JSON. A token was not recognized in the JSON content."

 

В принципе должно быть

{

"UsrRegistrationStatusId":"a9d44061-de29-4578-9df6-d2f226573a06"

}

А если попробовать поменять простое текстовое поле например Name (если оно есть в вашем объекте) запрос корректно отработает?

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

Да если менять обычное текстовое поле всё проходит успешно.

Были проблемы с типами данных - числами и датой, та же ошибка с преобразованием типов, на дату решилось преобразованием строки к виду "2019-04-18T11:14:26.697Z" , с числом не получается воспроизвести.

{

"UsrRegistrationStatusId":"a9d44061-de29-4578-9df6-d2f226573a06"

}

На такой формат выводит ошибку приведенную во  2 коментарии 

Привидите полный код формирования запроса с установкой всех служебных заголовков и обратите внимание на примеры для c# 

Прошу прощёния, данном формате запрос работает корректно.

{

"UsrRegistrationStatusId":"a9d44061-de29-4578-9df6-d2f226573a06"

}

Извините что ввёл в заблуждение.

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



Премного вам благодарен! Огромное спасибо за ваше время!

Есть и более сложный способ, там не просто голый Guid надо, а с упоминанием названия коллекции, как тут с полом:

{
    Name: 'John',
    BirthDate: new Date(123321123321),
    Gender: {__metadata: { uri: 'GenderCollection(guid\'FC2483F8-65B6-DF11-831A-001D60E938C6\')' }}
}

И в таком случае справочное поле пишется без Id в конце.

Больше примеров в этом обсуждении.

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

Добрый день, уважаемое сообщество!

Возникла необходимость передать во внешний сервис список проектов, привязанных к контакту текущего пользователя (под которым была выполнена аутентификация через AuthService.svc). При вызове процесса через  ProcessEngineService.svc я могу получить контакт текущего пользователя и выполнить нужный запрос, но не могу вернуть его результат (или могу?).

А при обращения через OData я могу получить результат запроса, но не представляю, как в него добавить фильтр по текущему контакту.

Подскажите, пожалуйста, как мне быть.

Нравится

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

Посмотрите в академии ПРИМЕРЫ ЗАПРОСОВ НА ВЫБОРКУ С ФИЛЬТРАЦИЕЙ

На вскидку вам надо получить id текущего пользователя в переменую ContactCurrentUserId и вызвать чтото типа

В примере ниже e71dceda-9b0f-4509-aa10-f479aa69a9eb - Id контакта текущего пользователя а фильтрация идет по значению Guid в поле Contact объекта Project

Url сайта&gt;/0/ServiceModel/EntityDataService.svc/ProjectCollection?$filter=Contact/Id eq guid'e71dceda-9b0f-4509-aa10-f479aa69a9eb'

 

Посмотрите в академии ПРИМЕРЫ ЗАПРОСОВ НА ВЫБОРКУ С ФИЛЬТРАЦИЕЙ

На вскидку вам надо получить id текущего пользователя в переменую ContactCurrentUserId и вызвать чтото типа

В примере ниже e71dceda-9b0f-4509-aa10-f479aa69a9eb - Id контакта текущего пользователя а фильтрация идет по значению Guid в поле Contact объекта Project

Url сайта&gt;/0/ServiceModel/EntityDataService.svc/ProjectCollection?$filter=Contact/Id eq guid'e71dceda-9b0f-4509-aa10-f479aa69a9eb'

 

Через OData можно считать SysAdminUnit с фильтрацией по логину пользователя, тем самым получить contactId. А дальше делать уже запрос на выборку и фильтрацию проектов.

Через ProcessEngineService можно получить значение пвраметра (указав название параметра в ResultParameterName), но с интерпретируемыми процессами это работает плохо

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

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

Коллеги,

Помогите, пожалуйста, разобраться с курсами валют. Я сделал веб-сервис, который передает курсы валют из 1С в bpmonline. Бизнес-процесс bpmonline запускает этот веб-сервис и добавляет запись в сущность "Курсы валют". Поле Rate (курс) заполняется значением из 1С, но есть еще такое поле как RateMantissa. Судя по всему, это поле влияет на то как курс представляется в bpmonline. Например, если я вручную, через интерфейс bpmonline, добавляю курс доллара как 27.04, то в таблице БД поле Rate устанавливается в 0.0370, а RateMantissa=03698224852071006. Скажите, пожалуйста, что это за RateMantissa такая и как мне ее рассчитать, чтобы в бизнес-процессе передать курс полученный из веб-сервиса? Заранее спасибо за ответ. 

Нравится

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

В поле RateMantissa содержится дробная часть курса в неокругленном виде, причем обратите внимание, что данное поле текстового, а не числового формата.

Что такое мантисса и зачем она нужна можно почитать здесь и здесь.

В поле RateMantissa содержится дробная часть курса в неокругленном виде, причем обратите внимание, что данное поле текстового, а не числового формата.

Что такое мантисса и зачем она нужна можно почитать здесь и здесь.

Алла Савельева,

Спасибо за ответ. Посмотрев на код клиентских схем я установил, что в случае когда в 1С курс доллара равен 27.04, в bpmonline поле Rate в сущности CurrencyRate следует передавать как результат деления 1/27.04, а RateMantissa я передаю как (1/27.04).ToString().Split('.',',')[1]. Возможно, это кому-нибудь поможет.

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