Фильтры

Добрый день!
В дизайнере системы есть возможность создать веб-сервис.

Там есть разные варианты аутентификации. Подсажите, пожалуйста, на сервисе пром юа

такая аутентификация Bearer :

`Authorization`:` Bearer 19efbdc8ee723b7eb9e6dae1f7a20ca4378b288c`

где `19efbdc8ee723b7eb9e6dae1f7a20ca4378b288c` - ваш уникальный ключ (токен) авторизации.

Пример запроса:

`https://my.prom.ua/api/v1/products/list?limit=5`

Можно в этом конструкторе так аутентифицироваться? Если да, какой метод использовать из предложенных?

Нравится

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

Под какой лицензий распространяются пакеты от devlabs? В частности это решение https://marketplace.terrasoft.ru/app/data-binding-tool

Нравится

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

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

v.kucher@creatio.com, Т.е. исходный код в пакетах может быть использован любым образом?

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

На странице просмотра наряда есть справочное поле Ответственный

 

Если по нему кликнуть, откроется страница редактирования:

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

На странице редактирования наряда это-же поле выглядит уже по другому:

 

И при клике разворачивается в список выбора (через кастомное правило фильтрации):

 

 

Идеальным решением для нас был-бы показ из страницы просмотра списка выбора ответственного (как на странице редактирования), но как это сделать мне не понятно.

Как вариант не показывать окно редактирования контакта вообще (в принципе техники друг-друга знают и эти данные им особо не нужны).
Но блокировать это окно у меня не получилось... в лучшем случае показывается пустая страница да еще и с возможностью сохранения пустых данных.

Еще вариант страницу показывать, но делать все поля рид-онли....

Как-то я в растерянности. Какие есть варианты решения такой задачи?

Нравится

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

А запретите им менять записи с ответственными правами доступа

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

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

Нравится

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

Доброго времени суток! Коллеги, помогите пожалуйста с переводом запроса SQL на С# для использования в конфигурационном веб-сервисе. Необходимо через запрос к веб-сервису по ИНН контакта получать в ответе перечень Id заявок и Названий их статусов. SQL запрос выглядит так:

 

SELECT a.Id, s.Name
FROM dbo.Application a
INNER JOIN dbo.Contact c ON a.ContactId = c.Id
INNER JOIN dbo.AppStatus s ON a.StatusId = s.Id
WHERE c.INNN='1234567890'

 

Нравится

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

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

Сделал согласно информации в указанных статьях:

        public string UsrGetAppInfoByINN(string INN) {
            // Результат по умолчанию.
            var result = "";
            // Экземпляр EntitySchemaQuery, обращающийся в таблицу Application базы данных.
            var esqQuery = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Application");
            // Добавление колонок в запрос.
            esqQuery.AddColumn("Id");
            esqQuery.AddColumn("[AppStatus:Id:StatusId].Name");
            esqQuery.AddColumn("[Contact:Id:ContactId].INN");
               // Фильтрация данных запроса.
            var esqFilter = esq.CreateFilterWithParameters(FilterComparisonType.Equal, "INN", INN);
            esq.Filters.Add(esqFilter);
            // Получение результата запроса.
            string esqSqlText = esqQuery.GetSelectQuery(UserConnection).GetSqlText(); 
            // Возвратить результат.
            return result;

При публикации получаю ошибки "The name 'esq' does not exist in current context в строках:   

            var esqFilter = esq.CreateFilterWithParameters(FilterComparisonType.Equal, "INN", INN);
            esq.Filters.Add(esqFilter);

            esq.Filters.Add(esqFilter);

Так у Вас переменная называется esqQuery, а не esq.

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

заменил esq на esqQuery. Схема публикуется, но на запрос приходит ошибка: 

The server encountered an error processing the request. The exception message is 'Элемент коллекции с именем StatusId не найден'. 

Если убрать эту строку из кода - ругается на следующую ContactId, хотя обе эти колонки есть в таблице Application

        public string UsrGetAppInfoByContactINN(string INN) {
            // Результат по умолчанию.
            var result = "";
            // Экземпляр EntitySchemaQuery, обращающийся в таблицу Application базы данных.
            var esqQuery = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Application");
            // Добавление колонок в запрос.
            esqQuery.AddColumn("INN");
            esqQuery.AddColumn("[AppStatus:Id:StatusId].Name");
            esqQuery.AddColumn("[Contact:Id:ContactId].INN");
               // Фильтрация данных запроса.
            var esqFilter = esqQuery.CreateFilterWithParameters(FilterComparisonType.Equal, "INN", INN);
            esqQuery.Filters.Add(esqFilter);
            // Получение результата запроса.
            string esqSqlText = esqQuery.GetSelectQuery(UserConnection).GetSqlText(); 
            // Возвратить результат.
            return result;

Что я делаю не так?

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

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

не понимаю почему без Id, если колонки в таблице так и называются: ContactId, StatusId, но это помогло, спасибо.

 

Правда теперь после отправки запроса - я получаю пустой ответ на запрос:

{"UsrGetAppInfoByContactINN":""}

 

Александр О,

здравствуйте! Далее Вам необходимо получить коллекцию

var collection = esqQuery.GetEntityCollection(UserConnection);
if(collection.Count > 0)
{
  foreach(var entity in collection)
  {
     var name = entity.GetTypedColumnValue<string>("Name");
  }
}

 Примерно так.

Только еще один момент, Вам необходимо получить названия колонок  в esqQuery, что бы потом можно было выбирать из коллекции по имени.

var appColName = esqQuery.AddColumn("[AppStatus:Id:StatusId].Name").Name;
 
var collection = esqQuery.GetEntityCollection(UserConnection);
if(collection.Count > 0)
{
  foreach(var entity in collection)
  {
     var name = entity.GetTypedColumnValue<string>(appColName);
  }
}

 

Александр О пишет:
не понимаю почему без Id, если колонки в таблице так и называются

Оно в этом случае не пишется, при генерации запроса подставляется автоматически.

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