Блог Горошко Андрея Bitrix24,PHP Добавить коммерческое предложение crm.quote.add

Добавить коммерческое предложение crm.quote.add

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Добавить коммерческое предложение crm.quote.add», проанализируем лучшие практики и покажем, как правильно использовать crm.quote.add в реальных задачах.

Добавить коммерческое предложение crm.quote.add

Тут может не хватать некоторых данных — дополним в ближайшее время

  • нужны правки под стандарт написания
  • не указаны типы параметров
  • не указана обязательность параметров
  • отсутствуют примеры (должно быть три примера — curl, js, php)
  • отсутствует ответ в случае ошибки
  • отсутствует ответ в случае успеха

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

Метод crm.quote.add создаёт новое коммерческое предложение. Если необходимо в предложении указать какие реквизиты покупателя/продавца (т.к. их может быть несколько у компании), то используйте метод crm.requisite.link.register.

В создаваемом предложении обязательно должны быть указаны компании продавца и покупателя:

  • COMPANY_ID, если покупатель — компания или CONTACT_ID, если покупатель — контакт.
  • MYCOMPANY_ID — продавец.

Идентификаторы, указанные в crm.requisite.link.register и в создаваемом предложении, должны соответствовать покупателю и продавцу.

Параметр / ТипОписание
fields
unknown
Набор полей — массив вида array("поле"=>"значение"[, ...]), содержащий значения полей предложения, где «поле» может принимать значения из возвращаемых методом crm.quote.fields.

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

Практический пример и готовый код на PHP

  • JS
    try
    {
    	const response = await $b24.callMethod(
    		"crm.quote.add",
    		{
    			fields:
    			{
    				"TITLE": "Черновик",
    				"STATUS_ID": "DRAFT",
    				"OPENED": "Y",
    				"ASSIGNED_BY_ID": 1,
    				"CURRENCY_ID": "USD",
    				"OPPORTUNITY": 5000,
    				"COMPANY_ID": 1,
    				"COMMENTS": "Новое коммерческое предложение.",
    				"BEGINDATE": "2016-03-01T12:00:00",
    				"CLOSEDATE": "2016-04-01T12:00:00"
    			}
    		}
    	);
    	
    	const result = response.getData().result;
    	console.info("Создано предложение с ID " + result);
    }
    catch( error )
    {
    	console.error(error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'crm.quote.add',
                [
                    'fields' => [
                        'TITLE'          => 'Черновик',
                        'STATUS_ID'      => 'DRAFT',
                        'OPENED'         => 'Y',
                        'ASSIGNED_BY_ID' => 1,
                        'CURRENCY_ID'    => 'USD',
                        'OPPORTUNITY'    => 5000,
                        'COMPANY_ID'     => 1,
                        'COMMENTS'       => 'Новое коммерческое предложение.',
                        'BEGINDATE'      => '2016-03-01T12:00:00',
                        'CLOSEDATE'      => '2016-04-01T12:00:00',
                    ],
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Создано предложение с ID ' . $result;
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error creating quote: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        "crm.quote.add",
        {
            fields:
            {
                "TITLE": "Черновик",
                "STATUS_ID": "DRAFT",
                "OPENED": "Y",
                "ASSIGNED_BY_ID": 1,
                "CURRENCY_ID": "USD",
                "OPPORTUNITY": 5000,
                "COMPANY_ID": 1,
                "COMMENTS": "Новое коммерческое предложение.",
                "BEGINDATE": "2016-03-01T12:00:00",
                "CLOSEDATE": "2016-04-01T12:00:00"
            }
        },
        function(result)
        {
            if(result.error())
                console.error(result.error());
            else
                console.info("Создано предложение с ID " + result.data());
        }
    );

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

Советы эксперта по интеграции:

  • Всегда используйте кэширование при частых запросах к crm.quote.add, чтобы разгрузить базу данных.
  • Соблюдайте стандарты PSR при написании обработчиков для «Добавить коммерческое предложение crm.quote.add».
  • Регулярно проводите аудит производительности системы с помощью встроенного монитора 1С-Битрикс.

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

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

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

Related Post

Проверить состояние складского учета catalog.document.mode.statusПроверить состояние складского учета catalog.document.mode.status

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Проверить состояние складского учета catalog.document.mode.status», проанализируем лучшие практики

Зарегистрировать связь реквизитов с объектом crm.requisite.link.registerЗарегистрировать связь реквизитов с объектом crm.requisite.link.register

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Зарегистрировать связь реквизитов с объектом crm.requisite.link.register», разберем архитектурные

Получить список пользовательских полей по фильтру crm.invoice.userfield.listПолучить список пользовательских полей по фильтру crm.invoice.userfield.list

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Получить список пользовательских полей по фильтру crm.invoice.userfield.list». Вы узнаете экспертные методики работы с