Блог Горошко Андрея Bitrix24,PHP Добавить настройку для регулярного счета crm.invoice.recurring.add

Добавить настройку для регулярного счета crm.invoice.recurring.add

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Добавить настройку для регулярного счета crm.invoice.recurring.add», разберем архитектурные особенности и предоставим готовые к интеграции примеры кода.

Добавить настройку для регулярного счета crm.invoice.recurring.add

> Scope: crm
>
> Кто может выполнять метод: любой пользователь

Предупреждение
Метод устарел. Рекомендуется использовать Универсальные методы для счетов

Метод добавляет новую настройку для регулярного счета.

Параметры метода

Название
тип
Описание
fields
array
Значения полей для создания настройки регулярного счета.
Обязательное поле — поле INVOICE_ID [ID счета, у которой задан параметр IS_RECURRING=Y].

Чтобы узнать требуемый формат полей, выполните метод crm.invoice.recurring.fields и посмотрите формат пришедших значений этих полей

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"fields":{"INVOICE_ID":"10","IS_LIMIT":"N","START_DATE":"'$(date -Iseconds --utc --date='TZ="Europe/Moscow" +1 month')'","PARAMS":{"PERIOD":"day","IS_WORKING_ONLY":"N","INTERVAL":30,"DATE_PAY_BEFORE_OFFSET_TYPE":"month","DATE_PAY_BEFORE_OFFSET_VALUE":1}}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/crm.invoice.recurring.add    
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"fields":{"INVOICE_ID":"10","IS_LIMIT":"N","START_DATE":"'$(date -Iseconds --utc --date='TZ="Europe/Moscow" +1 month')'","PARAMS":{"PERIOD":"day","IS_WORKING_ONLY":"N","INTERVAL":30,"DATE_PAY_BEFORE_OFFSET_TYPE":"month","DATE_PAY_BEFORE_OFFSET_VALUE":1}},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/crm.invoice.recurring.add
  • JS
    try
    {
    	const current = new Date();
    	const nextMonth = new Date();
    	nextMonth.setMonth(current.getMonth() + 1);
    
    	const date2str = function(d)
    	{
    		return d.getFullYear() + '-' + paddatepart(1 + d.getMonth()) + '-' + paddatepart(d.getDate()) + 'T' + paddatepart(d.getHours()) + ':' + paddatepart(d.getMinutes()) + ':' + paddatepart(d.getSeconds()) + '+03:00';
    	};
    
    	const paddatepart = function(part)
    	{
    		return part >= 10 ? part.toString() : '0' + part.toString();
    	};
    
    	const response = await $b24.callMethod(
    		"crm.invoice.recurring.add",
    		{
    			fields:
    			{
    				"INVOICE_ID": "10",
    				"IS_LIMIT": "N",
    				"START_DATE": date2str(nextMonth),
    				"PARAMS": {
    					"PERIOD": "day",
    					"IS_WORKING_ONLY": "N",
    					"INTERVAL": 30,
    					"DATE_PAY_BEFORE_OFFSET_TYPE": "month",
    					"DATE_PAY_BEFORE_OFFSET_VALUE": 1,
    				}
    			}
    		}
    	);
    
    	const result = response.getData().result;
    	if(result.error())
    		console.error(result.error());
    	else
    		console.info("Добавлены настройки регулярного счета. ID записи - " + result);
    }
    catch(error)
    {
    	console.error('Error:', error);
    }
  • PHP
    try {
        $current = new DateTime();
        $nextMonth = new DateTime();
        $nextMonth->setDate($current->format('Y'), $current->format('m') + 1, $current->format('d'));
    
        $date2str = function($d) {
            return $d->format('Y-m-d\TH:i:sP');
        };
    
        $paddatepart = function($part) {
            return $part >= 10 ? $part : '0' . $part;
        };
    
        $response = $b24Service
            ->core
            ->call(
                'crm.invoice.recurring.add',
                [
                    'fields' => [
                        'INVOICE_ID'                 => '10',
                        'IS_LIMIT'                   => 'N',
                        'START_DATE'                 => $date2str($nextMonth),
                        'PARAMS' => [
                            'PERIOD'                     => 'day',
                            'IS_WORKING_ONLY'            => 'N',
                            'INTERVAL'                   => 30,
                            'DATE_PAY_BEFORE_OFFSET_TYPE' => 'month',
                            'DATE_PAY_BEFORE_OFFSET_VALUE' => 1,
                        ],
                    ],
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        if ($result->error()) {
            error_log($result->error());
            echo 'Error: ' . $result->error();
        } else {
            echo 'Success: Добавлены настройки регулярного счета. ID записи - ' . $result->data();
        }
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error adding recurring invoice settings: ' . $e->getMessage();
    }
  • BX24.js
    var current = new Date();
    var nextMonth = new Date();
    nextMonth.setMonth(current.getMonth() + 1);
    var date2str = function(d)
    {
        return d.getFullYear() + '-' + paddatepart(1 + d.getMonth()) + '-' + paddatepart(d.getDate()) + 'T' + paddatepart(d.getHours()) + ':' + paddatepart(d.getMinutes()) + ':' + paddatepart(d.getSeconds()) + '+03:00';
    };
    var paddatepart = function(part)
    {
        return part >= 10 ? part.toString() : '0' + part.toString();
    };
    BX24.callMethod(
        "crm.invoice.recurring.add",
        {
            fields:
            {
                "INVOICE_ID": "10",
                "IS_LIMIT": "N",
                "START_DATE": date2str(nextMonth),
                "PARAMS": {
                    "PERIOD": "day",
                    "IS_WORKING_ONLY": "N",
                    "INTERVAL": 30,
                    "DATE_PAY_BEFORE_OFFSET_TYPE": "month",
                    "DATE_PAY_BEFORE_OFFSET_VALUE": 1,
                }
            }
        },
        function(result)
        {
            if(result.error())
                console.error(result.error());
            else
                console.info("Добавлены настройки регулярного счета. ID записи - " + result.data());
        }
    );
  • PHP CRest
    require_once('crest.php');

    $current = new DateTime();
    $nextMonth = (new DateTime())->modify('+1 month');

    function date2str($d) {
        return $d->format('Y-m-d\TH:i:s+03:00');
    }

    $result = CRest::call(
        'crm.invoice.recurring.add',
        [
            'fields' => [
                'INVOICE_ID' => 10,
                'IS_LIMIT' => 'N',
                'START_DATE' => date2str($nextMonth),
                'PARAMS' => [
                    'PERIOD' => 'day',
                    'IS_WORKING_ONLY' => 'N',
                    'INTERVAL' => 30,
                    'DATE_PAY_BEFORE_OFFSET_TYPE' => 'month',
                    'DATE_PAY_BEFORE_OFFSET_VALUE' => 1,
                ]
            ]
        ]
    );

    echo '<PRE>';
    print_r($result);
    echo '</PRE>';

💡 Экспертное мнение и рекомендации

Практические рекомендации:

  • При написании кастомных компонентов для «Добавить настройку для регулярного счета crm.invoice.recurring.add» всегда разделяйте бизнес-логику и представление (шаблон).
  • Используйте отладку SQL-запросов через конструкцию $wpdb->last_query или стандартный трекер Битрикса, чтобы контролировать нагрузку.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Получить веб-адрес страницы landing.landing.getpublicurlПолучить веб-адрес страницы landing.landing.getpublicurl

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Получить веб-адрес страницы landing.landing.getpublicurl», разберем архитектурные особенности и

Настройка заголовков безопасности (CSP, HSTS, X-Frame-Options, X-Content-Type) в БитриксНастройка заголовков безопасности (CSP, HSTS, X-Frame-Options, X-Content-Type) в Битрикс

Высокая скорость загрузки сайта и безупречная серверная безопасность — обязательные требования для успешного коммерческого проекта на 1С-Битрикс. Услуга «Настройка заголовков безопасности (CSP, HSTS, X-Frame-Options, X-Content-Type) в Битрикс» обеспечивает защита сайта

Как использовать $APPLICATION->ShowTitle() в 1С-Битрикс: пример кодаКак использовать $APPLICATION->ShowTitle() в 1С-Битрикс: пример кода

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Как использовать $APPLICATION->ShowTitle() в 1С-Битрикс: пример кода». Мы подготовили подробный разбор принципов работы и развернутые