{}const=>[]async()letfn</>var
Entwicklung1C

Big Data in 1C: So arbeiten Sie 100-mal schneller ohne Krücken

Ihr Bericht wird 5 Minuten lang geladen, und die Benutzer beschweren sich bereits beim Management? Die Verarbeitung hängt bei einer Million Datensätzen? Wir analysieren die Hauptfehler von unerfahrenen Entwicklern und zeigen, wie eine Codezeile eine Minute Wartezeit in eine Sekunde Arbeit verwandeln kann. Ohne Magie, nur die richtigen Anfragen und das Verständnis, wie 1C tatsächlich mit der Datenbank funktioniert.

К

Kodik

Autor

5 Min. Lesezeit

Die Arbeit mit großen Datenmengen ist eines der häufigsten Probleme, mit denen 1C-Entwickler konfrontiert sind. Langsame Berichte, hängende Verarbeitung und unzufriedene Benutzer sind alles Folgen eines falschen Ansatzes bei der Arbeit mit Daten. Lassen Sie uns herausfinden, wie man es richtig macht.

Warum treten Leistungsprobleme auf?

Wenn sich mehrere tausend Dokumente in der Datenbank befinden, funktioniert alles schnell. Aber sobald die Daten auf Hunderttausende oder Millionen von Datensätzen anwachsen, beginnt der Code, der zuvor sofort ausgeführt wurde, minutenlang zu arbeiten. Der Grund ist einfach: Jeder Zugriff auf die Datenbank braucht Zeit, und nicht optimierte Abfragen können viel mehr Daten verarbeiten als nötig.

🔥 100.000+ Schüler sind bereits bei uns

Genug Theorie gelesen?
Zeit zu coden!

Kodik — eine App, in der du durch Praxis programmieren lernst. KI-Mentor, interaktive Lektionen, echte Projekte.

🤖 KI 24/7
🎓 Zertifikate
💰 Kostenlos
🚀 Jetzt starten
Heute beigetreten


Grundprinzipien der Arbeit mit Big Data

1. Verwenden Sie Abfragen anstelle von Schleifen

Der häufigste Fehler von Anfängern in der Entwicklung ist die Verarbeitung von Daten in Schleifen. Wenn Sie beispielsweise die Restbestände der Waren im Lager abrufen müssen, sollten Sie nicht alle Waren in einer Schleife durchgehen und für jede eine separate Anfrage stellen.

❌ Schlecht:

Для Каждого Товар Из СписокТоваров Цикл
    Запрос = Новый Запрос;
    Запрос.Текст = "SELECT Remainder WHERE Nomenclature = &Nomenclature";
    Запрос.УстановитьПараметр("Nomenclature", Товар);
    // Wird hunderte Male ausgeführt!
КонецЦикла;

✅ Gut:

Запрос = Новый Запрос;
Запрос.Текст = 
"SELECT
|    Nomenclature,
|    Balance
|FROM RegisterAccumulation.BalanceGoods.Balance
|WHERE Nomenclature IN (&List of Goods)";
Запрос.УстановитьПараметр("List of goods", СписокТоваров);
// Wird einmal ausgeführt!

Wichtig: Eine Anfrage statt Hunderte — das ist der Unterschied zwischen einer Sekunde und einer Minute Arbeit.

2. Beschränken Sie die Datenauswahl

Laden Sie nicht alle Felder, wenn sie nicht benötigt werden. Wählen Sie nicht alle Einträge aus, wenn Sie nur einen Teil benötigen.

// Wir wählen nur die erforderlichen Felder aus
Запрос.Текст = 
"SELECT
|    Document.Number,
|    Document.Date,
| Document.Amount
 | FROM Document.SaleOfGoodsServices AS Document
|WHERE Document.Date BETWEEN &StartDate AND &EndDate
|    AND Document.Posted = TRUE";

Verwenden Sie WHERE-Bedingungen, um Daten auf Datenbankebene zu filtern, nicht im Code, nachdem Sie alle Datensätze erhalten haben.

3. Verwenden Sie Indizes

Indizes machen die Suche in einer Datenbank schnell. In 1C werden Indizes automatisch für als indizierbar markierte Attribute erstellt. Wenn Sie Daten häufig nach einem bestimmten Attribut filtern, stellen Sie sicher, dass dafür ein Index erstellt wurde.

4. Verwenden Sie temporäre Tabellen

Wenn Sie mehrere miteinander verknüpfte Abfragen ausführen müssen, helfen temporäre Tabellen dabei, Zwischenergebnisse zu speichern und die Haupttabellen nicht erneut zu verwenden.

Запрос = Новый Запрос;
Запрос.Текст = 
"SELECT 
| Counterparty, 
| AMOUNT (Amount) AS TotalAmount
| PLACE InAmountsByCounterparties | FROM Document.SaleOfGoodsServices
| GROUP BY Counterparty |; | | SELECT
|    InAmountsByCounterparties.Counterparty,
|    InAmountsByCounterparties.TotalAmount
| FROM VtAmountsByCounterparties | WHERE VtAmountsByCounterparties.TotalAmount> 100000";


5. Arbeiten Sie in Paketen

Wenn Sie eine Million Datensätze verarbeiten müssen, laden Sie nicht alle auf einmal hoch. Verarbeiten Sie Daten in Portionen von 1000-10000 Datensätzen.

СчётчикПорции = 0;
РазмерПорции = 5000;

Пока Истина Цикл
    Запрос.Текст = 
    "SELECT FIRST " + РазмерПорции + "
    |    Link
    |FROM Reference Book.Nomenclature
    | WHERE Link> & LastLink | SORT BY Link";
    
    Результат = Запрос.Выполнить();
    Если Результат.Пустой() Тогда
        Прервать;
    КонецЕсли;
    
    // Wir verarbeiten die Portion
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
        // Elementbearbeitung
        ПоследняяСсылка = Выборка.Ссылка;
    КонецЦикла;
КонецЦикла;

6. Verwenden Sie die Akkumulationsregister richtig

Akkumulationsregister sind ein leistungsstarkes Werkzeug für die Arbeit mit quantitativen Daten. Sie ermöglichen es Ihnen, schnell Salden und Umsätze zu erhalten, ohne die gesamte Historie der Bewegungen neu berechnen zu müssen.

// Erhalt der Rückstände zum Datum
Запрос.Текст = 
"SELECT
|    Remainders.Nomenclature,
|    Remainders.QuantityRemainder
| FROM AccumulationRegister. GoodsInWarehouses. Remains (& Date) AS Remains";

7. Optimieren Sie Tabellenverbindungen

Wenn eine Abfrage Verbindungen (JOIN) verwendet, sind die Reihenfolge und der Typ der Verbindung wichtig. Verbinden Sie zuerst die Tabellen mit der geringsten Anzahl von Datensätzen.

Praktische Tipps

  • Analysieren Sie die Abfragepläne. In der 1C-Abfragekonsole können Sie genau sehen, wie die Abfrage ausgeführt wird und wo Engpässe auftreten.

  • Verwenden Sie Leistungsmessungen. Mit den integrierten 1C-Tools können Sie langsame Vorgänge finden. Nicht raten, messen!

  • Vermeiden Sie verschachtelte Abfragen. Meistens können sie durch Verbindungen oder temporäre Tabellen mit besserer Leistung ersetzt werden.

  • Zwischenspeichern Sie unveränderliche Daten. Wenn sich die Daten selten ändern, speichern Sie sie in den Variablen des Moduls oder verwenden Sie Informationsregister mit der Möglichkeit des Cachings.

Häufige Fehler

  • Alle Felder über "AUSWÄHLEN *" anstatt expliziter Auflistung der erforderlichen Felder erhalten

  • Verwendung komplexer Berechnungen in WHERE-Bedingungen anstelle von Vorkalkulationen

  • Fehlende Filterbedingungen, wenn die Auswahl eingeschränkt werden kann

  • Mehrere Aufrufe der Datenbank anstelle einer Batch-Anfrage

Befund

Die Arbeit mit Big Data in 1C erfordert ein Verständnis der Prinzipien von Datenbanken und Abfragen. Die Grundregeln sind einfach: Minimieren Sie die Anzahl der Zugriffe auf die Datenbank, verwenden Sie Abfragen anstelle von Schleifen, wählen Sie nur die benötigten Daten aus und verwenden Sie die richtigen Tools für die richtigen Aufgaben.

Denken Sie daran: Optimierung ist keine vorzeitige Komplikation des Codes, sondern ein kompetentes Design von Anfang an. Die Gewohnheit, effektive Abfragen zu schreiben, spart Ihnen in Zukunft Stunden an Debugging und Wochen an Optimierung.

🚀 Möchten Sie mehr erfahren?

Sie können dieses und viele andere Themen studieren in Kodike — unsere Plattform für angehende Entwickler! Wir haben strukturierte Kurse erstellt, die Ihnen helfen, die Entwicklung von Grund auf bis zu einem sicheren Niveau zu erlernen.

Und wir haben auch cooler Telegram-Kanal mit einer freundlichen Community, wo erfahrene Entwickler Anfängern helfen, Erfahrungen austauschen und aktuelle Programmierfragen diskutieren.

Zu Kodik gehen Der Community beitreten

🎯Hör auf zu zögern

Artikel gefallen?
Zeit zum Üben!

Bei Kodik liest du nicht nur — du schreibst sofort Code. Theorie + Praxis = echte Skills.

Sofortige Praxis
🧠KI erklärt Code
🏆Zertifikat

Keine Registrierung • Keine Karte