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

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