Завершен

Добавить продукты в документ

Вячеслав Ляутин 10 лет назад обновлен Алексей (Рук. ТП) 10 лет назад 5
На событие сервера "ПолучитьДокумент" в моём коннекторе вызывается функция которая заполняет документ. Вот кусок кода по заполнению документа:
var documentItem = new Cleverence.Warehouse.DocumentItem();
documentItem.ProductId = new Guid(requestId).ToString();
documentItem.CurrentQuantity = 0;
documentItem.DeclaredQuantity = requestCount;

var product = new Cleverence.Warehouse.Product();
product.Id = new Guid(requestId).ToString();
product.Barcode = BarCode;
product.Name = requstName;
product.Marking = Marking;

documentItem.Product = product;
doc.DeclaredItems.Add(documentItem);
Но на последней строчке documentItem.Product = null . Т.е. присваивание в предыдущей строчке не отрабатывает. Почему?
В DeclaredItems документа появляется запись, но с пустым Product

Вопрос: как наполнить документы продуктами?
Добрый день.

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

Свойство Product работает примерно так:  get { return СправочникТоваров[this.ProductId]; }  set { this.ProduсtId = value.Id; }

По сути в данном коде вы можете присваивать только
documentItem.ProductId = new Guid(requestId).ToString();

А товары нужно либо
а) самому добавить в Cleverence.Warehouse.ProductsBook.Products, либо
б) возвращать по событию ТоварНеНайден

Например, вот такой код уже должен работать как надо:

var documentItem = new Cleverence.Warehouse.DocumentItem();
documentItem.ProductId = new Guid(requestId).ToString();
documentItem.CurrentQuantity = 0;
documentItem.DeclaredQuantity = requestCount;

var product = new Cleverence.Warehouse.Product();
product.Id = new Guid(requestId).ToString();
product.Barcode = BarCode;
product.Name = requstName;
product.Marking = Marking;

documentItem.Product = product;
var o1 = documentItem.Product;  // тут вернется null;
Cleverence.Warehouse.ProductsBook.Products.Add(product);
var o2 = documentItem.Product; // а вот тут уже вернется товар;

doc.DeclaredItems.Add(documentItem);
А. Нужно было сначала добавить в справочник. Я так понимаю это относится и к складам, и к упаковкам, и к палетам и т.п.?

Спасибо, теперь в documentItem действительно есть Product. Но при сканировании штрихкода (или вводе вручную) - Товар всё-равно не найден. Хотя у объекта Product задан корректный Barcode.
Товар добавляю строчкой:
Cleverence.Warehouse.ProductsBook.Products.Add(product);

Если вводить не корректный штрихкод то событие ТоварНеНайден отрабатывает. А если вводить корректный штрихкод то события нет, но алгоритм идёт по пути "Товар не найден"
В чём может быть проблема?

И ещё есть странная особенность. При открытии документа сначала вызывается событие ПолучитьДокумент а потом ПолучитьСписокДокументов. И во время редактирования документа можно зайти в "Просмотр строк" и увидеть добавленные documentItem. Потом перезайти в "Просмотр строк" и эти documentItem уже без Названия. Кол-во есть а вот названия нету.
Смотрите настройки у группы пользователей где лежит справочник, может он локально на устройстве и не закачался.
Проблема решена. У продукта не была указана базовая упаковка. Не внимательно читал документацию, а там русским по белому сказано что объект Product обязательно должен содержать упаковку. Теперь всё сканируется и поиск проходит корректно. Ещё раз спасибо! Разработка ещё не окончена, и возможно ещё появятся вопросы.

Сервис поддержки клиентов работает на платформе UserEcho