Skip to content

Instantly share code, notes, and snippets.

@vasilukwolf
Created Mar 24, 2017
Embed
What would you like to do?
Ошибка при добавление поля на событие bitrix 16.5?
2017-03-24 10:36:12 - Host: www.host.ru:80 - UNCAUGHT_EXCEPTION - [Bitrix\Main\DB\SqlQueryException]
Mysql query error: (1062) Duplicate entry '938-32' for key 'IX_SOPV_ORD_PROP_UNI' (400)
UPDATE b_sale_order_props_value SET `ORDER_PROPS_ID` = '32', `NAME` = 'Частное лицо', `CODE` = 'PRIVATE_PERSON', `VALUE` = 'Частное лицо ( )' WHERE `ID` = '8708'
/home/bitrix/ext_www/host.svarbi.ru/bitrix/modules/main/lib/db/mysqliconnection.php:137
#0: Bitrix\Main\DB\MysqliConnection->queryInternal(string, array, NULL)
/home/bitrix/ext_www/host.svarbi.ru/bitrix/modules/main/lib/db/connection.php:329
#1: Bitrix\Main\DB\Connection->query(string, array)
/home/bitrix/ext_www/host.svarbi.ru/bitrix/modules/main/lib/db/connection.php:378
#2: Bitrix\Main\DB\Connection->queryExecute(string, array)
/home/bitrix/ext_www/host.svarbi.ru/bitrix/modules/main/lib/entity/datamanager.php:739
#3: Bitrix\Main\Entity\DataManager::update(array, array)
/home/bitrix/ext_www/host.svarbi.ru/bitrix/modules/sale/general/order_props_values.php:298
#4: CSaleOrderPropsValue::Update(integer, array)
/home/bitrix/ext_www/host.svarbi.ru/bitrix/php_interface/init.php:277
#5: OnSHandler(object)
#6: call_user_func_array(string, array)
/home/bitrix/ext_www/host.svarbi.ru/bitrix/modules/main/lib/eventmanager.php:442
#7: Bitrix\Main\EventManager->sendToEventHandler(array, object)
/home/bitrix/ext_www/host.svarbi.ru/bitrix/modules/main/lib/eventmanager.php:378
#8: Bitrix\Main\EventManager->send(object)
/home/bitrix/ext_www/host.svarbi.ru/bitrix/modules/main/lib/event.php:112
#9: Bitrix\Main\Event->send()
/home/bitrix/ext_www/host.svarbi.ru/bitrix/modules/sale/lib/order.php:960
#10: Bitrix\Sale\Order->save()
/home/bitrix/ext_www/host.svarbi.ru/bitrix/modules/sale/lib/compatible/ordercompatibility.php:1798
#11: Bitrix\Sale\Compatible\OrderCompatibility::modifyOrder(string, array)
/home/bitrix/ext_www/host.svarbi.ru/bitrix/modules/sale/general/order.php:375
#12: CAllSaleOrder::DoSaveOrder(array, array, integer, array)
/home/bitrix/ext_www/host.svarbi.ru/local/components/svarbi/sale.order.ajax/component.php:1673
#13: include(string)
/home/bitrix/ext_www/host.svarbi.ru/bitrix/modules/main/classes/general/component.php:548
#14: CBitrixComponent->__includeComponent()
/home/bitrix/ext_www/host.svarbi.ru/bitrix/modules/main/classes/general/component.php:600
#15: CBitrixComponent->includeComponent(string, array, boolean)
/home/bitrix/ext_www/host.svarbi.ru/bitrix/modules/main/classes/general/main.php:1035
#16: CAllMain->IncludeComponent(string, string, array, boolean)
/home/bitrix/ext_www/host.svarbi.ru/personal/order/make/index.php:57
----------
<?
// Частное лицо
\Bitrix\Main\EventManager::getInstance()->
addEventHandler("sale", "OnSaleOrderEntitySaved", "OnSHandler");
function OnSHandler(\Bitrix\Main\Event $event) {
#https://dev.1c-bitrix.ru/api_d7/bitrix/sale/events/order_saved.php
$order = $event->getParameter("ENTITY");
$values = $order->getFields()->getValues();
$value = $values['PERSON_TYPE_ID'];
$value_id = $values['ID'];
if ($value == 1) {
$arOrderPropVals = array();
$db_vals = CSaleOrderPropsValue::GetList(array(),
array('ORDER_ID' => $value_id, 'ORDER_PROPS_ID' => array(19, 15)));
while ($arVals = $db_vals->Fetch()) {
$arOrderPropVals[$arVals['CODE']] = $arVals;
}
$PRIVATE_PERSON_ID = 32;
$ar = CSaleOrderProps::GetByID($PRIVATE_PERSON_ID);
// if ($arOrderPropVals) {
$PRIVATE_PERSON_VALUE = 'Частное лицо (' . $arOrderPropVals['FAMIL']['VALUE'] . ' ' . $arOrderPropVals['CONTACT_PERSON']['VALUE'] . ')';
$arNewProp = array(
// 'ORDER_ID' => $value_id,
'ORDER_PROPS_ID' => $ar['ID'],
'NAME' => $ar['NAME'],
'CODE' => $ar['CODE'],
'VALUE' => $PRIVATE_PERSON_VALUE,
);
CSaleOrderPropsValue::Update($value_id,$arNewProp);
file_put_contents(
"/home/bitrix/ext_www/host.svarbi.ru/event.log2"
, print_r($arNewProp, true), FILE_APPEND | LOCK_EX
);
//}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment