Причина -nsert не удалось.Первое исключение в строке 1;первая ошибка: INVALID_CROSS_REFERENCE_KEY, неверный идентификатор перекрестной ссылки: - PullRequest
0 голосов
/ 27 февраля 2019

Я создаю OrderItem записей и получаю ошибку, идентификатор перекрестной ссылки:

Причина -nsert не выполнена.Первое исключение в строке 1;Первая ошибка: INVALID_CROSS_REFERENCE_KEY, неверный идентификатор перекрестной ссылки:

Любая помощь с этой ссылкой?

public class OrderItemCreate {

  public static void createOrderLine() {

    List<PriceBookEntry> priceBookList = new List<PriceBookEntry> ([SELECT Id, Pricebook2Id FROM PriceBookEntry]);

    Set<Id> priceBookSet = new Set<Id>();
    for (PriceBookEntry pb: priceBookList) {
      priceBookSet.add(pb.Pricebook2Id);
    }

    List<OrderItem> orderItemList = new List<OrderItem>();
    List<Order> orderList = new List< Order>([SELECT id FROM Order WHERE PriceBook2Id IN: priceBookSet]);

    for (Integer i = 1; i <= 5; i++) {
      OrderItem temp = new OrderItem();
      temp.PricebookEntryId = priceBookList.get(Math.mod(i, 2)).id;
      temp.OrderId = orderList.get(Math.mod(i, 2)).Id;
      temp.UnitPrice = 100;
      temp.Quantity = 1;
      orderItemList.add(temp);
    }

    if (orderItemList.size() > 0)
      insert orderItemList;
  }
}

1 Ответ

0 голосов
/ 28 февраля 2019

Эта строка: temp.PricebookEntryId = priceBookList.get (Math.mod (i, 2)). Id;

должна быть: temp.PricebookEntryId = priceBookSet.get (Math.mod (i, 2)). id;

Вы пытались вставить идентификатор PriceBookEntry в поле PriceBookId.

Я предлагаю переименовать переменную PriceBookList в PriceBookEntryList.

...