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

catalog.documentcontractor.add

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

catalog.documentcontractor.add(fields)

Метод добавляет привязку CRM-сущности (Контакта/Компании) к документу.

В ответе приходит список полей привязки, как в методе getFields. В списке возвращается id привязки для дальнейшей работы с привязкой.

Случаи, когда могут вернуться ошибки при добавлении привязки к документу:

  • если нет доступа к складскому учету, нет доступа на просмотр документов прихода или нет доступа на редактирование документа прихода (добавление/удаление привязки – это редактирование документа);
  • не найден документ;
  • неверный тип документа (привязка к поставщикам актуальна только для документов типа Приход);
  • если документ уже был проведён (нельзя редактировать документ после его проведения);
  • неверный тип сущности (в поле entityTypeId принимаются только значения 3 или 4);
  • при попытке привязать к документу прихода Компанию-поставщика, когда к этому документу уже привязана Компания-поставщик (допускается привязывать несколько Контактов, но не более одной Компании).

Параметры

ПараметрТип Описание
fieldsobject Поля documentId, entityTypeId и entityId, соответствующие доступному списку полей fields.

Примеры

BX.callMethod(
	'catalog.documentcontractor.add',
	{
		fields: {
			documentId: 11,
			entityTypeId: 3,
			entityId: 21,
		},
	},
	function(result) {
		if (result.error())
			console.error(result.error().ex);
		else
			console.log(result.data());
	}
);

Идентификатор документа documentId известен. Рассмотрим подробнее, откуда брать entityTypeId и entityId:

  • entityTypeId – id типа CRM-сущности. Список этих типов сущностей фиксирован (для Контакта это 3, для Компании 4).
  • entityId – id CRM-сущности (Контакты поставщиков или Компании-поставщики). Чтобы получить список id нужных CRM-сущностей, нужно выполнить два действия:
    1. Для получения списка сущностей используется метод crm.category.list, в который следует передать entityTypeId (3 либо 4) и отфильтровать по коду категории Фильтрация по категории в методе crm.category.list доступна с версии crm 23.0.0. (для Контакта CATALOG_CONTRACTOR_CONTACT, для Компании CATALOG_CONTRACTOR_COMPANY):

      BX.callMethod(
      	'crm.category.list',
      	{
      		entityTypeId: 3,
      		filter: {
      			code: 'CATALOG_CONTRACTOR_CONTACT',
      		}
      	},
      	console.log(result.data())
      );
      

      В ответе вернутся данные о категории. Для второго шага потребуется categoryId – id категории (он может совпасть с entityTypeId).

    2. Далее нужно получить список CRM-сущностей методом crm.item.list, в который следует передать id сущности entityTypeId и отфильтровать по полученному ранее id категории categoryId:

      BX.callMethod(
      	'crm.item.list', 
      	{
      		entityTypeId: 3, // id типа CRM-сущности Контакт
      		select: ['ID', 'NAME', 'LAST_NAME', 'CATEGORY_ID'], // поля для отображения, необязательный параметр
      		filter: {
      			categoryId: 3, // id категории CRM-сущности Контакта поставщика, полученный из crm.category.list
      		},
      	}, 
      	console.log(result.data())
      );
      

      Возвращается список Контактов поставщиков, которые можно использовать в привязках (для использования в entityId нужны id Контактов).

      Аналогично для получения списка Компаний-поставщиков:

      BX.callMethod(
      	'crm.item.list', 
      	{
      		entityTypeId: 4, // id типа CRM-сущности Компания
      		select: ['ID', 'TITLE', 'CATEGORY_ID'],  // поля для отображения, необязательный параметр
      		filter: {
      			categoryId: 4, // id категории CRM-сущности Компания-поставщик, полученный из crm.category.list
      		},
      	}, 
      	console.log(result.data())
      );
      


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

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

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

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

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