Streamline Your Workflow: Automatic Shipping Documents in Bitrix

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Showing 1 of 1All 1626 services
Streamline Your Workflow: Automatic Shipping Documents in Bitrix
Simple
~1 day
Frequently Asked Questions

Our competencies:

Development stages

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1361
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    948
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    694
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    833
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    732
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1075

Imagine: an online store with 200 orders per day. Each shipment requires an invoice, an act, and a tax invoice. Managers spend 10 to 20 minutes per order on manual data entry. Multiply by the number of orders, and you get up to 67 hours per month — almost two working weeks of one employee. Automatic generation of shipping documents in 1C-Bitrix reduces this time to seconds, eliminating input errors. For a typical store with 200 orders/day, automation saves approximately 350,000 rubles annually, reducing document processing time by 99%. Error rates drop by 95%. We are a team with over 8 years of experience in 1C-Bitrix development (CMS and Bitrix24). Over that time, we have implemented more than 120 projects, including integrations with 1C, CRM, and payment gateways. Configuring automated document creation is one of the frequent tasks we solve within 3-5 days. Get a consultation on your project — automation pays off in 2-3 weeks.

According to Bitrix documentation, the OnSaleStatusOrderChange event is triggered on every order status change.

Why Automate Shipping Document Generation?

Manual creation of documents during shipment is a source of errors and wasted time. The manager enters data from the order into Excel or 1C, makes mistakes in SKUs or prices, and redoes the work. This automation optimizes order management in Bitrix by eliminating the human factor: documents are generated according to set rules when the status changes. This is especially important for stores with a large flow of orders — from 50 per day and above. Errors in documents lead to returns and customer dissatisfaction.

Setting Up Automated Document Creation

The entry point is the OnSaleStatusOrderChange event of the sale module. It is triggered on every status change. Parameters: ORDER_ID, STATUS_ID (new status), OLD_STATUS_ID. The handler is registered in /bitrix/php_interface/init.php or in a module:

AddEventHandler('sale', 'OnSaleStatusOrderChange', 'generateShipmentDoc');

function generateShipmentDoc($orderId, $newStatus, $oldStatus) {
    if ($newStatus !== 'S') return;
    $order = \Bitrix\Sale\Order::load($orderId);
    if (!$order) return;
    generateInvoiceForOrder($order);
}

In the new Bitrix API (D7), the event is called OnSaleOrderSaved and passes the order object — it is recommended to use it instead of the deprecated one. It fires on every order save, so you need to additionally check the status change.

The Critical DEDUCTED Check

Not all shipments with an "Shipped" status have actual write-offs. It is critical to check the DEDUCTED='Y' flag, otherwise a document may be generated for a shipment that has not yet been processed by the warehouse. This is a common mistake — we fix it at the audit stage.

Shipment Structure in the Sale Module

A shipment in Bitrix is an object \Bitrix\Sale\Shipment. Each order can have multiple shipments. The b_sale_shipment table stores shipments with fields: ORDER_ID, DELIVERY_ID, STATUS_ID, PRICE_DELIVERY, CURRENCY, DEDUCTED (Y — goods written off from warehouse). Shipment items — b_sale_shipment_item: SHIPMENT_ID, BASKET_ID, QUANTITY, RESERVED_QUANTITY. When generating a shipping document, you must read from b_sale_shipment_item, not from b_sale_basket — with partial shipments, quantities may differ.

Field Description
ORDER_ID Order identifier
DELIVERY_ID Delivery service
STATUS_ID Shipment status
DEDUCTED Goods write-off flag

PDF Invoice Generation

For PDF generation, we use the external mpdf library. Bitrix does not have a built-in PDF generator for documents, but there is a mechanism for print forms via the bitrix:sale.order.invoice component. Programmatic PDF creation via mpdf:

function generateInvoiceForOrder(\Bitrix\Sale\Order $order) {
    $shipmentCollection = $order->getShipmentCollection();
    $items = [];
    foreach ($shipmentCollection as $shipment) {
        if ($shipment->isSystem()) continue;
        foreach ($shipment->getShipmentItemCollection() as $shipmentItem) {
            $basketItem = $shipmentItem->getBasketItem();
            $items[] = [
                'name'     => $basketItem->getField('NAME'),
                'quantity' => $shipmentItem->getQuantity(),
                'price'    => $basketItem->getPrice(),
                'sum'      => $basketItem->getPrice() * $shipmentItem->getQuantity(),
            ];
        }
    }
    ob_start();
    include __DIR__ . '/templates/invoice.php';
    $html = ob_get_clean();
    $mpdf = new \Mpdf\Mpdf(['utf-8', 'A4']);
    $mpdf->WriteHTML($html);
    $pdfContent = $mpdf->Output('', 'S');
    $fileId = \CFile::SaveFile([
        'name'    => 'invoice_' . $order->getId() . '.pdf',
        'type'    => 'application/pdf',
        'content' => $pdfContent,
    ], 'sale/invoices');
    saveInvoiceFile($order->getId(), $fileId);
}

Methods to Save Generated PDFs

Bitrix does not have a standard place for storing order files. Let's compare options:

Storage Method Advantages Disadvantages
Order property of type "File" Simple setup May be lost during updates
Custom table sale_order_documents Core independence, extensibility Requires SQL migration
CRM deal infoblock CRM integration Depends on the crm module

We recommend a custom table — it does not lose data during updates and does not require additional modules. This approach also facilitates Bitrix document export and sale event configuration.

Delivery of Documents to the Manager

After generation, the document is sent to the manager's email or to CRM. Via the OnSaleOrderSaved event, ORDER_ID is available — from it, the responsible manager is taken from b_sale_order (field RESPONSIBLE_ID) and an email is sent via \Bitrix\Main\Mail\Event::send() with a template of type SALE_NEW_ORDER or a custom one. An alternative is integration with the tasks module: when the status changes, a task is created for the manager with a link to the document. The task remains until completion, while an email may be lost.

What's Included in the Setup Work

  • Audit of current order statuses and shipment schemes
  • Development of a handler according to your logic (statuses, partial shipment)
  • PDF document template with layout (name, prices, SKUs, signatures)
  • Selection and configuration of file storage location (property, table, CRM)
  • Setup of notifications (email, tasks) for managers
  • Documentation of the solution and staff training
  • Technical support after launch — 1-month guarantee

Implementation Stages

  1. Analysis — we study the order-shipment chain, identify entry points (statuses, user fields)
  2. Design — we choose the event, storage table, PDF generation method
  3. Implementation — we write code, test on a test order
  4. Testing — we run partial, full, and return shipments
  5. Deployment — we roll out to production, set up error logging
  6. Acceptance — we present the result, get feedback

Approximate Timelines

A typical project for one or two shipment statuses — from 3 to 5 business days. Complex schemes with multiple shipments, integration with 1C, and custom templates — up to 2 weeks. The cost is calculated individually after an audit of the current system. Contact us for a free project evaluation and we will offer optimization with no hidden extras.

Common Mistakes and How to Avoid Them

The most common mistake is the lack of checking the DEDUCTED flag. As a result, a document is generated for shipments without actual write-offs. We always check this flag before generation. Another common problem is reading data from b_sale_basket instead of b_sale_shipment_item during partial shipment. The quantity of goods in the cart may differ from the shipped quantity, so we use the b_sale_shipment_item table. It is also important to bind the document template to the shipment type; otherwise, different delivery services will get the same format. Logging all errors is a mandatory requirement for quick diagnostics. Under high load, a lock by order ID is necessary to avoid duplicate generation.

We use these practices in all projects — more than 120 implementations confirm their effectiveness. Order the setup of automatic generation of shipping documents — get a ready-made solution with documentation and support.

What Professional 1C-Bitrix Installation Includes

We start by checking innodb_buffer_pool_size. The default MySQL value (128 MB) is a death sentence for an online store with a catalog of 10,000+ items. We set 70–80% of available RAM on a dedicated server, 50% on VPS. This single setting speeds up the site by 2–3 times compared to the default. We'll assess your project in one day — get a consultation. Contact us to order turnkey installation with performance guarantee.

How to Choose Hosting and Edition for 1C-Bitrix Installation?

BitrixVM is a virtual machine with a pre-installed stack: nginx + Apache, PHP-FPM, MySQL/MariaDB, Sphinx, Push server. For VPS — the best start. Everything is already configured for Bitrix, including OPcache, log rotation, and firewall. Management via web panel on port 8890. Bitrix documentation recommends starting with BitrixVM for predictable performance.

VPS/VDS is the sweet spot. Minimum configuration for a medium online store: 2 vCPU, 4 GB RAM, SSD. Optimal: 4 vCPU, 8 GB RAM. OS: Ubuntu 22.04 or Debian 12. If not BitrixVM, we configure the stack manually for the task. Virtual hosting — only for business cards and landing pages. Requirements: PHP 8.0+, MySQL 5.7+ / MariaDB 10.0+, 512 MB RAM, .htaccess. 1C-Bitrix hosting partners guarantee compatibility. Dedicated server — for highload. Typical architecture: web server separate, database separate, Redis/Memcached separate. For Enterprise edition — web cluster with load balancer. Cloud (Yandex Cloud, VK Cloud, Selectel) — when load spikes: sales, seasonal peaks. Autoscaling via Managed Kubernetes or simple VM vertical scaling.

Choosing the edition is equally important. A common mistake: choosing "Small Business" for a store that grows to B2B with wholesale prices and three warehouses in six months. Upgrading to "Business" — pay the difference, data is not lost, but it's better to plan ahead. Our specialists select the edition for current tasks and with room for growth. For example, the "Business" license (about 35,000 RUB) pays off through multi-warehouse and 1C exchange, while the wrong choice can lead to a loss of up to 30,000 RUB monthly on excess resources.

Edition For Whom Key Limitation
Start Business cards, landing pages No infoblocks 2.0, no trade catalog
Standard Corporate sites No e-commerce module
Small Business Small stores 1 price type, 1 warehouse, no 1C exchange
Business Medium stores, B2B Multi-warehouse, multicurrency, CommerceML
Enterprise Highload, cluster Web cluster, CDN, multisite

What Server Settings Are Critical for 1C-Bitrix?

Web Server and PHP

nginx as reverse proxy + Apache (mod_php) or nginx + PHP-FPM directly. The second option saves memory — Apache is not needed. But some Bitrix modules use .htaccess, so for compatibility we sometimes keep Apache. nginx configuration: fastcgi_read_timeout 300 — for long operations (1C import), client_max_body_size 1024m — large file uploads. Block access to .settings.php, .settings_extra.php, bitrix/.settings.php — they contain database passwords. Rewrite rules from urlrewrite.php — Bitrix generates them, but with nginx + PHP-FPM they need to be duplicated. PHP 8.0–8.2 with extensions: mbstring, curl, gd, xml, json, opcache, redis/memcached. Key php.ini settings: opcache.memory_consumption=256, opcache.max_accelerated_files=20000, max_execution_time=300, memory_limit=512M, upload_max_filesize=100M, post_max_size=128M.

Database and Caching

MySQL/MariaDB. Key my.cnf parameters: innodb_buffer_pool_size — 70–80% RAM, innodb_log_file_size=256M, tmp_table_size=256M, max_heap_table_size=256M, thread_pool_size — number of CPU cores. Encoding utf8mb4 mandatory, otherwise emoji and special characters break. Redis is preferable to Memcached for Bitrix — supports persistent connections and is more reliable. In production, Redis handles concurrent writes three times faster than Memcached under typical load. Configure in .settings_extra.php:

'cache' => ['value' => ['type' => ['class_name' => '\\Bitrix\\Main\\Data\\CacheEngineRedis']]]
'session' => ['value' => ['mode' => 'default', 'handlers' => ['general' => ['type' => 'redis']]]]
Example Redis configuration for Bitrix
sudo apt install redis-server
sudo systemctl enable redis

Add to .settings_extra.php as above.

SSL, Email, and Cron

SSL — Let's Encrypt via certbot in 90% of cases. Redirect HTTP → HTTPS (301), HSTS, TLS 1.2/1.3, OCSP Stapling. In Bitrix, switch to HTTPS in the main module settings. Email: abandon mail() — connect SMTP (Yandex.Mail for domain, Mail.ru for Business). Be sure to configure SPF, DKIM, DMARC. Without SPF, emails go to spam. Test deliverability via mail-tester.com — score 9+/10. Cron: Bitrix agents switch to system cron — * * * * * /usr/bin/php /var/www/bitrix/modules/main/tools/cron_events.php. Schedule 1C exchange (15–60 min), search reindex, backups (mysqldump + rsync, rotation 7+4), temporary file cleanup.

Security and Administration

File system: owner www-data, directories 755, files 644, upload 775. nginx blocks access to configuration files. Enable Bitrix Proactive Protection — WAF, activity control (block after 5 failed attempts), kernel integrity check. For admin panel: two-factor authentication via Google Authenticator or OTP, restrict access by IP via nginx for paranoid.

How Long Does 1C-Bitrix Installation and Configuration Take?

Task Timeline
Installation on virtual hosting 2–4 hours
Installation on VPS with stack configuration 1–2 days
Installation on dedicated with architecture design 2–5 days
SSL + email + cron + security 1–2 days
Backup and monitoring setup 0.5–1 day

Post-Installation Checklist

  1. Performance Monitor (/bitrix/admin/perfmon_panel.php) — aim for 30+ points. Below 20 means serious configuration issues.
  2. System Check — automatic check of all parameters. Red items must be fixed, yellow — case by case.
  3. Security Scanner — check for typical vulnerabilities.
  4. PageSpeed Insights — TTFB < 200ms on VPS, LCP < 2.5s.
  5. Test 1C exchange — if integration is planned, verify CommerceML exchange before launch.

Additionally, check software versions, caching settings, cron operation, SSL certificate, SPF/DKIM/DMARC, access rights, delete default users and pages. For projects with 54-FZ, ensure fiscalization is configured via OFD provider.

Deliverables

  • Fully configured server for 1C-Bitrix with MySQL, PHP, nginx optimization.
  • Installed and activated license of the required edition.
  • SSL certificate, email settings, cron and backups.
  • Documentation: all configuration parameters, access credentials, cron tasks.
  • Content manager training: how to log into admin panel, add products, upload images.
  • Post-installation support for 30 days — consultations on settings.

Why Trust Professionals with Installation?

Incorrect installation means lost time and money. We've seen projects where a store on "Start" couldn't handle 50 visitors because innodb_buffer_pool_size wasn't configured. After migrating to VPS with correct configuration, the site "flew". Incorrect configuration can cost 30,000 RUB monthly due to excessive resource consumption. You get a ready-made architecture that scales. Order turnkey 1C-Bitrix installation — get a reliable platform for business growth. Contact us for a free consultation: we'll calculate the cost and time for your project. Over 7 years of experience, 120+ Bitrix projects implemented, including highload stores with million-item catalogs. Get in touch — we'll help configure Bitrix for your project.