if ($ID > 0) {
     unset($fields["ID"]);
     $res = \Bitrix\Sale\Delivery\Services\Table::update($ID, $fields);
     if ($res->isSuccess()) {
         // update some fields in children if need
         if (!empty($changedFields)) {
             $fieldsList = array();
             if (in_array('ACTIVE', $changedFields)) {
                 if ($fields['ACTIVE'] == 'Y') {
                     $fieldsList['ACTIVE'] = 'Y';
                 } else {
                     $fieldsList['ACTIVE'] = 'N';
                 }
             }
             if (!empty($fieldsList)) {
                 \Bitrix\Sale\Delivery\Services\Table::setChildrenFieldsValues($ID, $fieldsList);
             }
         }
     } else {
         $strError .= Loc::getMessage("SALE_DSE_ERROR_EDIT_DELIVERY") . "<br>" . implode("<br>", $res->getErrorMessages());
     }
 } else {
     $res = \Bitrix\Sale\Delivery\Services\Table::add($fields);
     if (!$res->isSuccess()) {
         $strError .= Loc::getMessage("SALE_DSE_ERROR_ADD_DELIVERY") . "<br>" . implode("<br>", $res->getErrorMessages());
     } else {
         $ID = $res->getId();
         Services\Manager::onAfterAdd($ID, $fields);
     }
 }
 if ($ID > 0) {