Документация для разработчиков
Темная тема

crm.invoice.update

Scope: crm Права на выполнение: для всех

crm.invoice.update(id, fields)

Обновляет существующий счёт.

Параметры

Параметр Описание
id Идентификатор счета.
fields Набор полей - массив вида array("обновляемое поле"=>"значение"[, ...]), где "обновляемое поле" может принимать значения из возвращаемых методом crm.invoice.fields.
Примечание: чтобы узнать требуемый формат полей, выполните метод crm.invoice.fields и посмотрите формат пришедших значений этих полей.

Пример

// Добавление или обновление товара в счёте.
var current = new Date();
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();
};
var id = prompt("Введите ID");
BX24.callMethod('crm.invoice.get', {"id": id}, addProduct);
function addProduct(result)
{
	if(result.error())
		console.error(result.error());
	else
	{
		var fields = clone(result.data());
		var n = fields['PRODUCT_ROWS'].length;
		var productUpdated = false;
		// Изменение поля "Дата выставления"
		fields["DATE_BILL"] = date2str(current);
		// Изменение поля "Комментарий (отобразится в счёте)"
		fields["USER_DESCRIPTION"] = "Комментарий для клиента (обновлённый).";
		// Если товар с ID 703 есть в счёте, то обновляем его поля.
		// Если товара с ID 703 в счёте нет, то добавляем его в счёт.
		// Если используется НДС, то читается что цена его включает, а сам признак включения НДС в цену будет
		// взят из каталога.
		for (var i in fields['PRODUCT_ROWS'])
		{
			if (fields['PRODUCT_ROWS'][i]["PRODUCT_ID"] == 703)
			{
				var rowId = fields['PRODUCT_ROWS'][i]["ID"]
				fields['PRODUCT_ROWS'][i] = {
					"ID": rowId, "PRODUCT_ID": 703, "QUANTITY": 4, "PRICE": 779.60
				};
				productUpdated = true;
				break;
			}
		}
		if (!productUpdated && n > 0)
		{
			fields['PRODUCT_ROWS'][n] = {
				"ID": 0, "PRODUCT_ID": 703, "QUANTITY": 5, "PRICE": 779.60
			};
		}
		BX24.callMethod('crm.invoice.update', {"id": id, "fields": fields},
			function(result)
			{
				if(result.error())
					console.error(result.error());
				else
				{
					console.info("Обновлён счёт с ID " + result.data());
				}
			}
		);
	}
}
function clone(src)
{
	var dst;
	if (src instanceof Object)
	{
		dst = {};
		for (var i in src)
		{
			if (src[i] instanceof Object)
				dst[i] = clone(src[i]);
			else
				dst[i] = src[i];
		}
	}
	else dst = src;
	return dst;
}


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2024, «1С-Битрикс», 2024