Добрый день! Перестала работаь синхронизация 1с - Creatio, которая была настроена через веб сервис. Интеграция работала в 1 сторону, данные с Creatio передавались в 1с. Пробовал получать доступ к сервису через Postman, все работает корректно, как на скринах 1 и 2, то есть аутентификация и последующий запрос дают результат

Когда те же действия происходят со стороны 1с, после попытки синхронизации данных появляется ошибка 401 - Unauthorized: Access is denied due to invalid credentials

 

При этом во время аутентификации ошибок нет, приходит статус 200 ок, пишет что подключение установлено, возвращает корректные значения типа (скрин 3):

 

{

    "Code": 0,

    "Message": "",

    "Exception": null,

    "PasswordChangeUrl": null,

    "RedirectUrl": null

}

 

но при попытке загрузить данные в 1с падет ошибка, "Непередбачений символ при читанні json" (скрин 4)

Если смотреть детальнее в чем причина, предоставлен xml

http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> http://www.w3.org/1999/xhtml"> 401 - Unauthorized: Access is denied due to invalid credentials. Server Error

401 - Unauthorized: Access is denied due to invalid credentials.

You do not have permission to view this directory or page using the credentials that you supplied.

Пользователи под которыми осуществляется вход, внесены в настройку "Не учитывать проверку доступа по IP-адресу"

 

Кто то может подсказать почему так происходит и как это исправить? 

 

Прикрепленные файлы

Нравится

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

Добрый день, Илья!

 

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

И дополнительно проверьте корректность заполнения Headers по примеру из статьи:

https://academy.creatio.com/docs/developer/integrations_and_api/data_se…

Kalymbet Anastasia,

сначала тоже думал что права доступа, но ту же ошибку получал и с под акаунта Supervisor. На сколько я понял, проблема оказалась в регистре заголовков колонок на стороне 1с, когда сменили регистр все заработало в штатном режиме

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

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

 

столкнулся со следующей проблемой:

при возврате из веб сервиса своего обьекта nginx выдает ошибку 502 Bad Gateway.

примерный код который не работает

 

[ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class UsrCustomConfigurationService : BaseService
    {
        [OperationContract]
        [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
            ResponseFormat = WebMessageFormat.Json)]
        public object checkglobal(string phone)
{
    // получаю данные...
    var res = new GlobalRequest
    {
        UsrFileStreet = UsrFileStreet,
        UsrFileDepartment = UsrFileDepartment,
        UsrFileFlat = UsrFileFlat,
        UsrFileNumberHouse = UsrFileNumberHouse,
        UsrFileSubtypeWorks = UsrFileSubtypeWorks,
        UsrPlanDate = UsrPlanDate.ToString(),
        UsrPlanTime = UsrPlanDate.ToString(),
    };
    return res;
}
 
[DataContract]
public class GlobalRequest
{
    [DataMember]
    public string Method { get; } = "GlobalRequest";
    [DataMember]
    public string UsrFileStreet { get; set; }
    [DataMember]
    public string UsrFileNumberHouse { get; set; }
    [DataMember]
    public string UsrFileFlat { get; set; }
    [DataMember]
    public string UsrFileSubtypeWorks { get; set; }
    [DataMember]
    public string UsrPlanDate { get; set; }
    [DataMember]
    public string UsrPlanTime { get; set; }
    [DataMember]
    public string UsrFileDepartment { get; set; }
}

подскажите что я пропустил?

 

спасибо!

Нравится

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

Необходимо было добавить ServiceKnownType аттрибут к методу чтоб указать новый тип данных который я хочу вернуть

 

[ServiceKnownType(typeof(GlobalRequest))]
public object checkglobal(string phone)
{

Можете добавить эту информацию в документацию? Что необходимо использовать еще один аттрибут если надо вернуть объект? Я нашел вот эту статью но в ней ничего про это нету, добавьте пожалуйста -  https://academy.creatio.com/docs/7-18/developer/back_end_development/we…

Необходимо было добавить ServiceKnownType аттрибут к методу чтоб указать новый тип данных который я хочу вернуть

 

[ServiceKnownType(typeof(GlobalRequest))]
public object checkglobal(string phone)
{

Можете добавить эту информацию в документацию? Что необходимо использовать еще один аттрибут если надо вернуть объект? Я нашел вот эту статью но в ней ничего про это нету, добавьте пожалуйста -  https://academy.creatio.com/docs/7-18/developer/back_end_development/we…

Добрый день.



Спасибо за информацию.

Мы передадим ответственной команде пожелание дополнить документацию.

VH,

А почему возвращаете object, а не конкретный тип GlobalRequest?

Попробуйте заменить object на GlobalRequest и проверить.

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

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

Добрый день.

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

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

Я смогу сделать дропдаун для выбора объекта с помощью представления VwEntityObjects.

Но я не могу понять где хранится список колонок для этого объекта, чтоб я мог отфильтровать их в дропдаун менюшке.

Нравится

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

Добрый день,

 

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

 

Для начала этот запрос предоставляет нам все столбцы в БД вместе с именами таблиц, в которых они расположены:

SELECT *

FROM INFORMATION_SCHEMA.COLUMNS;

 

Таким образом, мы можем создать view на основе этого select запроса:

CREATE VIEW column_names_view

AS   

SELECT *

FROM INFORMATION_SCHEMA.COLUMNS; 

GO  

Затем мы можем перейти в раздел конфигурации в Creatio и создать объект, например UsrTableColumns, где мы будем хранить всю эту информацию. Основные поля, которые нам нужно будет создать в этом объекте, это «UsrColumnName» и «UsrTableName». Затем нам нужно сохранить объект и опубликовать его, после чего таблица будет автоматически создана в базе данных.

 

После этого мы можем вставить информацию, предоставленную нашим view, в нашу только что созданную таблицу:

INSERT INTO UsrTableColumns (UsrTableColumn, UsrTableName)

SELECT  "COLUMN_NAME", "TABLE_NAME"

FROM column_names_view;

 

Затем мы можем создать справочник в системе на основе этой таблицы UsrTableColumns и добавить его на страницу, где мы хотим его использовать. Затем, используя бизнес-правило, мы можем отфильтровать результаты этого поля в зависимости от того, что мы выбрали в VwEntityObjects. Нам нужно будет проверить, равно ли имя объекта VwEntityObjects имени UsrTableColumns.UsrTableName.

 

С уважением,

Дарий

this.getEntitySchemaByName("schema_name", function(entitySchema) {
	var columns = entitySchema.columns;
}, this);

 

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

Добрый день.

 

при разработке веб сервиса возникает следующая ошибка

The server encountered an error processing the request. The exception message is 'Дублирующиеся данные в объекте UsrAdressInCase'. See server logs for more details. The exception stack trace is:
 
at Terrasoft.Core.Entities.Entity.Load(Select select, IDictionary`2 columnMap) at Terrasoft.Core.Entities.Entity.InternalFetchFromDB(IEnumerable`1 columnsToFetch, IDictionary`2 conditions, Boolean useDisplayValues, Boolean performValuesCleanup) at Terrasoft.Core.Entities.Entity.FetchFromDB(EntitySchemaColumn conditionColumn, Object conditionValue, Boolean useDisplayValues) at Terrasoft.Configuration.UsrCustomConfigurationServiceNamespace.UsrCustomConfigurationService.checkglobal(String phone) at SyncInvokecheckglobal(Object , Object[] , Object[] ) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at Terrasoft.Web.Common.ServiceModel.ThreadContextInitializer.Invoke(Object instance, Object[] inputs, Object[]& outputs) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

что это значит в контексте платформы креатио?

я использую следующий код

var usrAddressSchema = UserConnection.EntitySchemaManager.FindInstanceByName("UsrAdressInCase");
var usrAdressInContact = usrAddressSchema.CreateEntity(UserConnection);
exists = usrAdressInContact.FetchFromDB("UsrdDislocation", usrLookup1);

usrLookup1 - Guid ключ.

UsrdDislocation - внешний обьект. Идея найти объект в UsrAdressInCase по внешнему ключу. Я пробовал выполнить SQL запрос, но он не вернул никаких записей по этому ключу в таблице UsrAdressInCase.

Нравится

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

Добрый день.



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



Т.е. в вашем случае в таблице UsrAdressInCase есть более одной записи где UsrdDislocationId = usrLookup1.

Добрый день,

 

Есть несколько предположений:

 

1) Сообщение об ошибке идет напрямую от метода checkglobal и какой-то проверки в нём.

2) Есть настроенные правила поиска дублей по объекту UsrAdressInCase и при создании Entity система возвращает сообщение, что по какому-то правилу в системе идентифицирован дубль.

3) Есть какая-то дополнительная логика, которая паралелльно с Вашим действием CreateEntity тригерится и что-то выполняет (Entity event listener или бизнес логика на самом объекте).

Добрый день.



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



Т.е. в вашем случае в таблице UsrAdressInCase есть более одной записи где UsrdDislocationId = usrLookup1.

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

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

Добрый день.

Как можно из кастомного angular модуля вызвать стандартный LookupUtilities (выбор из справочника)?

Нравится

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

Добрый день,

 

Готового решения у нас нет, разве что могу порекомендовать смотреть, как этот вызов реализован в страницах, сверстаных в дизайнере 8.x (Freedom UI).

Добрый день. А какие сейчас есть в системе страницы, сверстанные на Freedom UI?

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

Добрый день!

В ред. реестре детали текст скрывается, а в обычной переносится. Как сделать в детали с ред. реестром аналогично?

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

Нашел на комьюнити пару похожих вопросов, но что-то не то.

Тут например - https://community.terrasoft.ua/questions/otobrazhenie-dlinnykh-tektovyk…

Вот о чем говорю:

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

Нравится

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

Добрый день,

 

Такая возможность отсутствует. Можно конечно с помощью css попробовать изменить верстку, но эта задача не такая простая, так как в верстке зашита высота, смещение линии-разделителя и т.д. Это повлияет на все реестры, будет выглядеть не красиво, т.к. автоматический расчет высоты здесь не выйдет + это значение справочной колонки, а не текстовая колонка. У нас есть задача на Core команду добавить такую возможность переноса строки в детали с редактируемым реестром, я им сообщу об этом вопросе. Спасибо за предложение об улучшении продукта.

Oleg Drobina пишет:

это значение справочной колонки, а не текстовая колонка

Мы сделали вторую колонку - "Product text", которую и отображаем как LONG_TEXT (но многострострочность получается, только если кликнуть на запись). Правда, пропадает возможность выбрать продукт, но тут пришлось делать кастомное добавление записи с выбором продукта.

И ещё одна особенность - при использовании https://marketplace.creatio.com/app/tree-view-creatio вообще многое слетает 

Владимир Соколов,

текст с признаком многострочный тоже не показывается

Калушка Д. пишет:

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



 

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

Добрый день, коллеги. Авторизация проходит успешно, но коннектор ничего не видит в Creatio - ни объектов, ни БП. 

Нравится

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

Константин, добрый день!

Проверил решение. На базовой сборке Creatio подключение и работа с объектами проходит успешно.



Можете прислать скриншот из Zapier'а. Как это выглядит там?

Приложение работало раньше, и в какой-то момент перестало отображать объекты или это первая настройка?



Также прошу уточнить версию и продукт, который используете?

Добрый день, Евгений! Спасибо за ответ! Версия продукта: Sales Int. 8.0.3.2908

 

Скрин после авторизации прикрепляю

Константин,

добрый день!



Это ожидаемое поведение системы.

Возможно не совсем очевидное с первого взгляда, но корректное.

На данном шаге Zapier просто вычитывает одну из сущностей, чтобы понять как работать с Creatio дальше.

У Вас в результатах отображается 3 рандомных объекта (A,B,C). 

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

Евгений Воробьев,

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

 

Подскажите, пожалуйста, как это можно сделать?

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

When opened, the process constantly shows the loading icon, it is not possible to make any changes to it. Tried looking at the metadata, but couldn't find any errors. Please tell me how to solve this problem

Нравится

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

Добрый день. 

Есть такой вопрос:

Можно ли в печатную форму MS Doc добавить вывод файлов с вкладки файлы и примечания с типом изображения? 

Или может быть есть какое то другое альтернативное решение?

Спасибо!

Нравится

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

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

 

Для реализации Вашей бизнесc-задачи Вам необходимо добавить таблицу на основании объекта "Файлы и ссылки [название объекта]".

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

 

Вот пример реализации такой таблице для файлов и ссылок в объекте "Договора":

В данном примере в печатную форму будут выгружены все изображения с расширением .jpg 

 

Более подробную информацию о создании отчета Word в Creatio Вы можете найти на Creatio Academy:

https://academy.terrasoft.ua/docs/user/instrumenty_kastomizacii/otchety…

 

 

С уважением,

Катя!

 

 

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

Добрый день. 

Есть такой вопрос:

Можно ли в печатную форму MS Doc добавить вывод файлов с вкладки файлы и примечания с типом изображения? 

Или может быть есть какое то другое альтернативное решение?

Спасибо!

Нравится

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