Вопрос

Ссылка на объект не указывает на экземпляр объекта

Добрый день

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

В примере я ищу в справочнике типов контрагентов запись с наименованием "Партнер". В результате получаю ошибку "Ссылка на объект не указывает на экземпляр объекта".

{
    "Name": "Тест",
    "Type": {
        "__metadata": {
            "uri": "AccountTypeCollection?$top=1&$filter = Name eq 'Партнер'"
        }
    },
    "Phone": "8-999-555-4433"
}

 

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

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

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

il_abd,

Добрый день.

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

Единой методологии нет. Подход зависит от того, как вы используете bpm'online в качестве источника данных.

1. Если у вас на сайте (в приложении и т.п.) есть своя база данных (она модифицируется), то я бы на вашем месте задумался о периодичной (или событийной) синхронизации необходимых справочников и хранении идентификаторов bpm в своей базе или таблицах развязки. Таким образом вы уйдете от необходимости делать лишний запрос и искать по имени.

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

Понял, спасибо за исчерпывающие ответы

по пути хранения служебных справочников в своей БД я в конечном счете и пошел.

Хотя думаю было бы все же удобно иметь возможность получения одним запросом подчиненных данных не только по ГУИД, но и по другим критериям отбора, хотя это больше мысли вслух, т.к. такой возможности, как я понял, нет. Хотя если разработчики БПМ предусмотрят это в следующих релизах развития системы - было бы здорово.

il_abd,

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

Можете, пожалуйста, более конкретно описать Ваш кейс и Вашу потребность, чтоб мы могли их передать аналитикам продукта

Суть в том, что стоит задача выгрузки из нашей учетной системы в БПМ справочной информации, в частности контрагентов

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

Т.о. в зависимости от определенного значения в моей учетной системе я должен получить ГУИД справочника AccountType с определенным отбором (например по наименованию "Партнер") и уже полученный ГУИД записать в поле "Type" справочника контрагентов. Получается, что все подчиненные элементы надо сначала искать в БПМ, а потом их помещать в нужные реквизиты. Либо хранить такие служебные данные в своей учетной системе локально и искать их у себя так же для получения нужного ГУИДа.

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

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

я даже попробовал по аналогии с получением по ГУИД составить конструкцию с получением по наименованию.

{
    "Name": "Тест",
    "Type": {
        "__metadata": {
            "uri": "AccountTypeCollection?$top=1&$filter = Name eq 'Партнер'"
        }
    },
    "Phone": "8-999-555-4433"
}

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

Добрый день.

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

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