Настройка приемки товаров через 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка приемки товаров через 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка приемки товаров через 1С-Битрикс

Типичная ситуация: кладовщик принимает товар по бумажному листу, потом кто-то вручную вносит данные в систему. Либо приёмка идёт через 1С, а в Битрикс остатки приходят с задержкой через CommerceML-синхронизацию раз в час. В обоих случаях сайт показывает устаревшие данные.

Документ прихода в модуле catalog

Приёмка товара в Битриксе реализована через документ типа A (arrival) в таблице b_catalog_docs. Структура документа: заголовок в b_catalog_docs, строки товаров в b_catalog_docs_element.

Ключевые поля b_catalog_docs: DOC_TYPE = 'A', STORE_TO — ID склада назначения, CONTRACTOR_ID — поставщик из b_catalog_contractor, STATUSN (черновик) или Y (проведён).

Каждая строка b_catalog_docs_element содержит: DOC_ID, ELEMENT_ID (товар), STORE_TO, AMOUNT (количество в документе), PURCHASING_PRICE — закупочная цена, CURRENCY.

Создание документа приёмки через API:

$result = \Bitrix\Catalog\StoreDocumentTable::add([
    'DOC_TYPE' => \Bitrix\Catalog\StoreDocumentTable::TYPE_ARRIVAL,
    'STATUS' => 'N',
    'STORE_TO' => 2,
    'CONTRACTOR_ID' => 5,
    'TITLE' => 'Поступление от ' . date('d.m.Y'),
    'DATE_DOCUMENT' => new \Bitrix\Main\Type\DateTime(),
]);

$docId = $result->getId();

После создания заголовка добавляются строки через \Bitrix\Catalog\StoreDocumentElementTable::add().

Проведение и пересчёт остатков

Проведение документа — самый критичный шаг. Метод \Bitrix\Catalog\Document\DocManager::conductDocument($docId) выполняет несколько операций транзакционно:

  1. Обновляет b_catalog_store_product: увеличивает AMOUNT на складе назначения.
  2. Обновляет b_catalog_product: пересчитывает суммарный QUANTITY по всем складам.
  3. Записывает закупочную цену в b_catalog_price если это первое поступление или включён пересчёт.
  4. Создаёт запись в b_catalog_docs с STATUS = 'Y'.

Если документ уже проведён, повторный вызов conductDocument() вернёт ошибку. Для корректировки нужно сначала откатить документ через cancelDocument($docId), внести изменения в строки, затем провести снова.

Права доступа для кладовщиков

Административный интерфейс склада (/bitrix/admin/cat_store_document_list.php) требует права доступа к модулю catalog. Минимально необходимая роль — catalog_document. Назначается в Настройки → Управление доступом → Группы пользователей, вкладка "Права на модули".

Для работы через мобильный терминал (сканер штрихкодов) используется REST API или собственный компонент. Поиск товара по штрихкоду идёт через b_catalog_product_barcode — таблица хранит соответствие PRODUCT_IDBARCODE. Запрос:

$item = \Bitrix\Catalog\ProductBarcodeTable::getList([
    'filter' => ['BARCODE' => '4607134392015'],
    'select' => ['PRODUCT_ID'],
])->fetch();

Закупочные цены и себестоимость

При проведении прихода Битрикс может автоматически обновлять закупочную цену товара. Это управляется настройкой модуля catalog — параметр update_purchase_price_on_arrival в b_option. При включённом параметре каждое проведение прихода переписывает цену в b_catalog_price для типа цены "Закупочная".

Если нужна история закупочных цен (FIFO/средневзвешенная), стандартный модуль этого не даёт — потребуется кастомная таблица с историей цен по каждой строке документа и собственная логика расчёта себестоимости при расходе.

Интеграция с заказами поставщику

Модуль catalog содержит тип документа O — заказ поставщику (b_catalog_docs с DOC_TYPE = 'O'). Когда поставщик отгружает товар, документ заказа конвертируется в приход: метод \Bitrix\Catalog\Document\DocManager::createArrivalByOrder($orderId) создаёт документ типа A на основе строк заказа. Количество можно скорректировать перед проведением — это закрывает сценарий частичной поставки.