Блогқа оралу
Интеграциялар·2025 ж. 18 қаңтар·Sayan Roor

1С-ті веб-қосымшамен интеграциялау: практикалық нұсқаулық

1С:Кәсіпорынды REST API, COM байланысы және веб-сервистер арқылы веб-қосымшалармен интеграциялау бойынша толық нұсқаулық. Код мысалдары, үздік тәжірибелер және жиі кездесетін мәселелерді шешу.

IntegrationAPIBackendERP
1С-ті веб-қосымшамен интеграциялау

1С-ті веб-қосымшамен интеграциялау: практикалық нұсқаулық

1С:Кәсіпорынды веб-қосымшалармен интеграциялау — бизнесте жиі кездесетін тапсырма. Бұл мақалада әртүрлі интеграция әдістерін қарастырып, практикалық мысалдар көрсетемін.

1С интеграция әдістері

1. REST API (HTTP-сервистер)

Ең заманауи және ұсынылатын әдіс. 1С деректер алмасуы үшін HTTP-сервистер ұсынады.

1С-те баптау:

1// Конфигураторда HTTP-сервис құру
2// Сұрау өңдеушісі
3Функция СұраудыӨңдеу(Сұрау) Экспорт
4    СұрауПараметрлері = Сұрау.СұрауПараметрлері;
5
6    Егер Сұрау.Әдіс = "GET" Онда
7        // Деректерді алу
8        Қайтару ДеректердіАлу(СұрауПараметрлері);
9    Ал Егер Сұрау.Әдіс = "POST" Онда
10        // Деректерді құру/жаңарту
11        Қайтару ДеректердіҚұру(Сұрау.ДенесіСызықТүрінде());
12    СоңыЕгер;
13СоңыФункция

Next.js-те интеграция:

1// lib/1c-client.ts
2export class OneCClient {
3  private baseUrl: string;
4  private credentials: string;
5
6  constructor(baseUrl: string, username: string, password: string) {
7    this.baseUrl = baseUrl;
8    this.credentials = Buffer.from(`${username}:${password}`).toString('base64');
9  }
10
11  async getData(endpoint: string): Promise<unknown> {
12    const response = await fetch(`${this.baseUrl}/${endpoint}`, {
13      headers: {
14        'Authorization': `Basic ${this.credentials}`,
15        'Content-Type': 'application/json',
16      },
17    });
18
19    if (!response.ok) {
20      throw new Error(`1C API error: ${response.statusText}`);
21    }
22
23    return response.json();
24  }
25
26  async postData(endpoint: string, data: unknown): Promise<unknown> {
27    const response = await fetch(`${this.baseUrl}/${endpoint}`, {
28      method: 'POST',
29      headers: {
30        'Authorization': `Basic ${this.credentials}`,
31        'Content-Type': 'application/json',
32      },
33      body: JSON.stringify(data),
34    });
35
36    if (!response.ok) {
37      throw new Error(`1C API error: ${response.statusText}`);
38    }
39
40    return response.json();
41  }
42}

2. COM байланысы

Жергілікті интеграциялар үшін COM байланысын қолдануға болады (тек Windows).

1// Windows-та Node.js қажет
2import { exec } from 'child_process';
3
4// Сыртқы бағдарлама немесе COM-объект арқылы қолдану
5// Production үшін ұсынылмайды

3. Файлдық алмасу

XML/JSON файлдары арқылы қарапайым әдіс.

1// lib/1c-file-exchange.ts
2import fs from 'fs';
3import path from 'path';
4
5export async function read1CExport(filePath: string): Promise<unknown> {
6  const content = await fs.promises.readFile(filePath, 'utf-8');
7  return JSON.parse(content);
8}
9
10export async function write1CImport(data: unknown, filePath: string): Promise<void> {
11  await fs.promises.writeFile(filePath, JSON.stringify(data, null, 2), 'utf-8');
12}

Практикалық мысал: тауарларды синхронизациялау

Next.js-те API Route

1// app/api/1c/sync-products/route.ts
2import { NextResponse } from 'next/server';
3import { OneCClient } from '@/lib/1c-client';
4
5const oneC = new OneCClient(
6  process.env.ONE_C_BASE_URL!,
7  process.env.ONE_C_USERNAME!,
8  process.env.ONE_C_PASSWORD!,
9);
10
11export async function POST() {
12  try {
13    // 1С-тен тауарларды алу
14    const products = await oneC.getData('catalog/products');
15
16    // Дерекқормен синхронизациялау
17    // ... синхронизация логикасы
18
19    return NextResponse.json({
20      success: true,
21      synced: products.length
22    });
23  } catch (error) {
24    return NextResponse.json(
25      { error: 'Sync failed' },
26      { status: 500 }
27    );
28  }
29}

Қателерді өңдеу және қайталау

1async function syncWithRetry(
2  fn: () => Promise<unknown>,
3  maxRetries = 3
4): Promise<unknown> {
5  for (let i = 0; i < maxRetries; i++) {
6    try {
7      return await fn();
8    } catch (error) {
9      if (i === maxRetries - 1) throw error;
10      await new Promise(resolve => setTimeout(resolve, 1000 * (i + 1)));
11    }
12  }
13  throw new Error('Max retries exceeded');
14}

Қауіпсіздік

  • Барлық сұраулар үшін HTTPS қолданыңыз
  • Credentials-терді орта айнымалыларында сақтаңыз
  • IP бойынша қолжетімділікті шектеңіз
  • Негізгі аутентификация орнына токендерді қолданыңыз
  • Барлық операцияларды журналдаңыз

Қорытынды

1С-ті веб-қосымшалармен интеграциялау екі жүйенің де архитектурасын түсінуді қажет етеді. REST API — ең сенімді және масштабталатын әдіс. Дұрыс қателерді өңдеу және қауіпсіздік production үшін маңызды.

Sayan Roor

Full‑stack әзірлеуші. Next.js және TypeScript‑те өнімділік пен конверсияға фокуспен веб‑қосымшалар жасаймын.

FULL STACK DEVELOPER AT SCALE.

Идеядан іске қосуға дейін — бизнесті масштабтайтын жоғары өнімді қосымшалар жасаймын.

Орналасқан жері

Almaty, Dostyk 132B

© 2026 NANOSUDO.

Designed & Developed by Sayan Roor

ИП Tengri Tech Dev

ИИН/БИН: 960808350018

Республика Казахстан, город Астана, район Нұра, улица Санжар Асфендияров дом №3