Налаштування приймання товарів через 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування приймання товарів через 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування приймання товарів у 1C-Bitrix

Типова ситуація: кладовщик приймає товар за паперовим листом, потім хтось вручну вносить дані в систему. Або приймання йде через 1C, а у Bitrix остатки приходять з затримкою через CommerceML-синхронізацію раз на годину. В обох випадках сайт показує застарілі дані.

Документ надходження в модулі catalog

Приймання товару в Bitrix реалізовано через документ типу 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();

Закупівельні ціни та собівартість

При проведенні надходження Bitrix може автоматично оновлювати закупівельну ціну товару. Це керується налаштуванням модуля 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 на основі рядків замовлення. Кількість можна скоригувати перед проведенням — це закриває сценарій часткової поставки.