odata-1c
odata-1c copied to clipboard
Возможно ли составить запрос для изменения в табличной документа
Добрый день, использую Вашу библиотеку в проекте, в принципе проблем не возникает, работает стабильно. Возникла необходимость изменять и обновлять информацию в табличной части, разных документов, класс update относится только к изменениям внешней части, не подскажите как мне провалиться в табличную часть и изменить определенную строку, возможно добавить новую, используя тот функционал который сейчас есть, или сейчас это невозможно?
Добрый день, использую Вашу библиотеку в проекте, в принципе проблем не возникает, работает стабильно. Возникла необходимость изменять и обновлять информацию в табличной части, разных документов, класс update относится только к изменениям внешней части, не подскажите как мне провалиться в табличную часть и изменить определенную строку, возможно добавить новую, используя тот функционал который сейчас есть, или сейчас это невозможно?
Добрый день! Спасибо за обратную связь и извиняюсь за задержку с ответом. В рамках наших задач мы всегда обновляли всю табличную часть у документа. Так, например, в документе ЗаказКлиента наш код выглядит примерно так (часть кода опущена):
...
$odata = [
'Number'=>$doc_id,
'Date'=>date('c',strtotime($o->add_date)),
'ЖелаемаяДатаОтгрузки'=>date('c',strtotime($od_date)),
'ДатаОтгрузки'=>date('c',strtotime($od_date)),
'Организация_Key'=>'2b3e8ebe-c1c2-11e6-d495-00155dd9fc47',
'Партнер_Key'=>$partner_id,
'Контрагент_Key'=>$customer_id,
'Соглашение_Key'=>'d8e27e68-c370-11e6-d495-00155dd9fc47',
'Сделка_Key'=>'00000000-0000-0000-0000-000000000000',
'Валюта_Key'=>'ec4378f4-c1b3-11e6-3b95-00155dd9fc47',
'СуммаДокумента'=>$o->fullTotal,
'ГрафикОплаты_Key'=>'00000000-0000-0000-0000-000000000000',
'Склад_Key'=>'4a1b565a-c1c2-11e6-d495-00155dd9fc47',
'Менеджер_Key'=>$o->userManager && $o->userManager->odata_key ? $o->userManager->odata_key : '00000000-0000-0000-0000-000000000000',
'НеОтгружатьЧастями'=>true,
'Статус'=>'КОбеспечению',
'МаксимальныйКодСтроки'=>count($products)+1,
'ПорядокОплаты'=>'РасчетыВРубляхОплатаВРублях',
'ЭтапыГрафикаОплаты'=>[
[
'LineNumber' => '1',
'ВариантОплаты' => 'КредитПослеОтгрузки',
'ДатаПлатежа' =>date('c',strtotime($od_date)),
'ПроцентПлатежа' => 100,
'СуммаПлатежа' => $o->fullTotal,
'ПроцентЗалогаЗаТару' => 0,
'СуммаЗалогаЗаТару' => 0,
],
],
];
if($comment) {
$odata['Комментарий'] = $comment;
}
$goods = [];
$idx = 0;
foreach($products as $idx=>$op) {
$goods[] = [
'LineNumber'=>$idx+1,
'КодСтроки'=>$idx+1,
'ДатаОтгрузки'=>$odata['ЖелаемаяДатаОтгрузки'],
'Номенклатура_Key'=>$odata_p_id,
'Характеристика_Key'=>$odata_v_id,
'Упаковка_Key'=>'00000000-0000-0000-0000-000000000000',
'КоличествоУпаковок'=>$qnt,
'Содержание'=>$dm_p->DMArtName,
'Количество'=>$qnt,
'ВидЦены'=>'b9bb5abe-c370-11e6-d495-00155dd9fc47',
'СтавкаНДС'=>'БезНДС',
'СуммаНДС'=>0,
'Цена'=>$price,
'Сумма'=>$sum,
'СуммаСНДС'=>$sum,
'ПроцентРучнойСкидки'=>$op->discount,
'СуммаРучнойСкидки'=>number_format($price*$qnt*($op->discount/100),2,'.',''),
'Склад_Key'=>'4a1b565a-c1c2-11e6-d495-00155dd9fc47',
'ВариантОбеспечения'=>'Отгрузить',
];
}
$odata['Товары'] = $goods;
$data = $client->{'Document_ЗаказКлиента'}->update($id,$odata);
Какую-либо возможность обновить табличную часть мы не тестировали, хотя идея мне кажется интересной. В принципе, реализовать что-либо подобное не сложно, мы подумаем над этим.
Если у вас есть возможность помочь с реализацией этой задачи, то с радостью примем пул реквест )