Інтеграція 1С-Бітрікс з системою Меркурій — обов'язкова умова для легальної торгівлі продуктами тваринного походження. Щодня через ФГІС проходять мільйони еВСД, і ручна обробка призводить до затримок і штрафів до $1.4k–1.9kів. Ми автоматизуємо обмін, використовуючи REST API та асинхронні черги, скорочуючи час приймання однієї партії в 5 разів. Оцінимо ваш проект за 2 дні — просто зв'яжіться з нами. Наш досвід: 5+ років на ринку інтеграцій Бітрікс з державними системами, реалізовано понад 50 успішних проектів. Ми гарантуємо повну відповідність законодавству.
Як автоматизувати погашення еВСД?
Якщо гасити вручну, легко пропустити термін — тоді сертифікат анулюється, і товар вважається нелегальним. Автоматизація виключає людський фактор і вкладається в вимоги 54-ФЗ. Крім того, Меркурій API працює асинхронно: запит створює заявку, яку потрібно обробити окремим викликом. Ми реалізуємо чергу з ретраями, щоб жоден документ не загубився. Автоматичне погашення еВСД в 3 рази зменшує ризик помилок порівняно з ручним введенням.
Чи варто інтегруватися з Меркурієм?
Інтеграція 1С-Бітрікс з Меркурієм — це ключ до повної автоматизації еВСД. Без неї ви ризикуєте штрафами та втратою часу. Наш досвід показує: після впровадження клієнти економлять до 40 годин на місяць на прийманні товарів.
Інтеграція 1С-Бітрікс з Меркурієм
Меркурій надає REST API (https://api.vetrf.ru/schema/platform/v2/). Авторизація — через API-ключ, який видається після реєстрації підприємства. Основні операції: отримання вхідних документів, погашення еВСД (extinguish), запит статусів заявок. Важливо враховувати асинхронність: кожен запит створює заявку, яку потрібно обробити окремим викликом. Згідно з документацією ФГІС Меркурій, на один API-ключ допускається до 10 запитів на хвилину. Тому ми реалізуємо чергу з ретраями.
Додаткові деталі роботи з API
Запити до Меркурій повинні включати заголовок `apiKey` та коректний `Content-Type`. Відповіді приходять у форматі JSON з полем `application`, що містить `applicationId` для відстеження. При погашенні документа важливо передати точну кількість товару та одиниці виміру.Типовий lifecycle документа:
Постачальник → відвантажив товар з еВСД в Меркурій → Магазин отримує товар → гасить вхідний еВСД (acceptVetDocument) → Зберігання на складі: облікова одиниця з ID еВСД → Замовлення оформлене → продаж фізичній особі → Списання через транзакцію повернення (transferReceiptTransaction) При продажу кінцевому споживачеві-фізичній особі оформлювати новий еВСД не потрібно — достатньо погасити документ у частині проданої кількості.
Реалізація клієнта на PHP:
class MerkuryClient {
private string $apiUrl = 'https://api.vetrf.ru/schema/platform/v2';
private string $apiKey;
private string $issuerId;
public function __construct(string $apiKey, string $issuerId) {
$this->apiKey = $apiKey;
$this->issuerId = $issuerId;
}
public function getIncomingDocuments(string $enterpriseGuid): array {
return $this->request('GET', "/enterprises/{$enterpriseGuid}/vetDocuments", [
'status' => 'CONFIRMED',
'type' => 'INCOMING'
]);
}
public function extinguishDocument(
string $enterpriseGuid,
string $vetDocId,
float $quantity,
string $unit
): string {
$response = $this->request('POST', "/enterprises/{$enterpriseGuid}/vetDocuments/{$vetDocId}/extinguish", [
'returnedQuantity' => $quantity,
'returnedUnit' => $unit,
'operatorId' => $this->issuerId,
]);
return $response['application']['applicationId'];
}
public function processTransaction(
string $enterpriseGuid,
string $transactionId
): array {
return $this->request('POST', "/enterprises/{$enterpriseGuid}/applications/{$transactionId}/process");
}
private function request(string $method, string $path, array $params = []): array {
// ... HTTP-запит з заголовком 'apiKey: {KEY}'
}
} Зберігання еВСД в Бітрікс
Кожна партія товару на складі прив'язана до одного або кількох еВСД. Ми зберігаємо їх в окремій ORM-таблиці:
class VetDocumentTable extends \Bitrix\Main\ORM\Data\DataManager
{
public static function getTableName(): string
{
return 'local_merkury_vet_docs';
}
public static function getMap(): array
{
return [
new \Bitrix\Main\ORM\Fields\IntegerField('ID', ['primary' => true, 'autocomplete' => true]),
new \Bitrix\Main\ORM\Fields\IntegerField('PRODUCT_ID'), // товар в каталозі
new \Bitrix\Main\ORM\Fields\StringField('VET_DOC_ID'), // UUID документа в Меркурій
new \Bitrix\Main\ORM\Fields\StringField('ENTERPRISE_GUID'), // GUID підприємства
new \Bitrix\Main\ORM\Fields\FloatField('QUANTITY'), // залишок на складі
new \Bitrix\Main\ORM\Fields\StringField('UNIT'), // од. вим: kg, piece
new \Bitrix\Main\ORM\Fields\StringField('STATUS'), // 'active', 'extinguished'
new \Bitrix\Main\ORM\Fields\DatetimeField('EXPIRE_DATE'), // термін придатності
];
}
}При надходженні партії — створюється запис з ID еВСД та кількістю. При продажу — кількість зменшується, при вичерпанні — статус змінюється на extinguished.
Порівняння ручного та автоматизованого підходу
Автоматизація в 5 разів швидша за ручну обробку — це підтверджують наші кейси.
| Параметр | Ручний режим | Автоматизація |
|---|---|---|
| Час приймання однієї партії | 15 хв | 3 хв |
| Погашення еВСД при продажу | Вручну (часто забувають) | Автоматично, з чергою |
| Ризик помилок | Високий (людський фактор) | Мінімальний |
| Відповідність 54-ФЗ | Потребує додаткового контролю | Вбудовано |
| Витрати часу на місяць (при 250 замовленнях) | ~40 годин | ~8 годин |
Наведені дані показують: автоматизація прискорює процес у 5 разів та знижує операційні ризики.
Кейс з нашої практики: магазин фермерських продуктів
Наш клієнт — інтернет-магазин м'яса та молочної продукції від 15 фермерських господарств. Об'єм — ~250 замовлень на тиждень. До нас приймання однієї партії займало 15 хвилин ручного введення в Меркурій, а погашення при продажу не робили взагалі — ризикували.
Рішення: автоматизували приймання (через адмінку Бітрікс: комірник вводить ID приходу, система сама знаходить вхідні еВСД від постачальника за останню добу та пропонує погасити). Для відвантаження — двохкрокова модель: при оформленні замовлення створюється заявка на погашення, cron-обробник кожні 2 хвилини смикає processTransaction. Синхронізація залишків раз на годину.
| Показник | До | Після |
|---|---|---|
| Час оформлення приймання (1 партія) | 15 хв (ручне введення в Меркурій) | 3 хв (підтвердження) |
| Погашення еВСД при продажу | Не проводилося (порушення) | Автоматично |
| Перевірки Россільгоспнагляду | Припис | Без зауважень |
Економія часу на прийманні склала 80% — це близько 40 годин на місяць. Додатково виключені штрафи за відсутність погашень.
Синхронізація залишків
Періодична звірка — обов'язкова частина. Залишки в таблиці local_merkury_vet_docs порівнюються із залишками на підприємстві в Меркурій (GET /enterprises/{guid}/stockEntries). Розбіжності записуються в лог і повідомляють адміністратора. Це додаткова страховка від розсинхронізації.
Що входить в інтеграцію під ключ
- Реєстрація в Меркурій, отримання API-ключа (супроводжуємо на всіх етапах)
- Розробка PHP-клієнта: робота з вхідними документами, погашення, обробка заявок
- Таблиця зберігання еВСД в Бітрікс з прив'язкою до товарів
- Інтерфейс приймання в адміністративному розділі (швидка, з підказками)
- Автопогашення при відвантаженні з чергою та автоматичними ретраями
- Синхронізація залишків за розкладом (cron), моніторинг розбіжностей
- Гарантійна підтримка після запуску, документація, навчання співробітників
Інтеграція 1С-Бітрікс з Меркурієм — це надійне рішення для автоматизації еВСД.
Терміни: від 6 до 10 тижнів залежно від кількості постачальників і складності обліку. У нас за плечима 5+ років інтеграцій Бітрікс з державними системами, понад 50 успішних проектів. Замовте аудит вашого проекту — отримайте план інтеграції за 2 дні.







