Wahl der Leser
Populäre Artikel
Entwicklungspraxis mobile Applikation 1C 8.3 (Teil 1)
In diesem Artikel werden wir darüber sprechen, was wir versucht haben und welche Fehler wir gemacht haben, bevor wir es geschafft haben, eine mehr oder weniger normale Anwendung für Tablets zu erstellen. Die Anwendung wurde ursprünglich nur für Android entwickelt, basierend auf der Konfiguration 1C: Orders und einer mobilen Anwendung für die Entwicklung.
Zunächst wurde der „falsche“ Ansatz gewählt: den Antrag manuell zusammenzustellen und auf das Tablet hochzuladen. Ich möchte Sie daran erinnern, dass Sie zum Erstellen mobiler Anwendungen den „Assistenten zur Erstellung mobiler Anwendungen“ (MobileAppWizzard) verwenden. Dann wurde in einem der Foren eine schöne Lösung gefunden, bei der eine mobile Anwendung für die Entwicklung verwendet wurde. Diese Anwendung ist in der Installation der mobilen Plattform enthalten. Zum Zeitpunkt der Entwicklung wurde die Plattformversion 8.3.3.24 verwendet. Im Ordner „Android“ finden Sie die Datei 1cem.apk. Dies ist eine mobile Anwendung für die Entwicklung. Sein größter Vorteil, der uns viel Zeit gespart hat, besteht darin, dass Sie eine mobile Anwendung auf einem Webserver veröffentlichen und auf einem Tablet einen Pfad wie http://[ angeben können. Webserveradresse]/[ Name der mobilen Anwendung].
Auf einem Tablet-PC können Sie in den Einstellungen der hinzugefügten Anwendung das Kontrollkästchen „Update aus dem Konfigurator“ aktivieren. Bei jedem Start der Anwendung versucht diese, eine Verbindung zum Webserver herzustellen und nach Updates zu suchen.
Nachdem die mobile Anwendung bereitgestellt wurde, begann der Prozess der Verfeinerung.
Was war erforderlich:
1. Richten Sie den Austausch zwischen der zentralen Datenbank und dem mobilen Gerät ein.
2. Organisieren Sie die asymmetrische Synchronisierung: Laden Sie Daten zu Produktartikeln, Auftragnehmern, verbleibenden Waren im Lager und gegenseitigen Abrechnungen aus der zentralen Datenbank herunter und laden Sie nur Kundenbestellungen aus der mobilen Anwendung herunter.
3. Implementieren Sie eine einfache Schnittstelle für Manager, über die sie schnell Salden, Preise und gegenseitige Abrechnungen einsehen können.
In der Testphase wurde eine Zwischenbasis verwendet. Verwaltete Anwendung", da die Demoanwendung 1C: Orders ursprünglich für den Austausch mit der Managed-Anwendung konzipiert war.
Der erste Pfannkuchen war klumpig. Buchstäblich. Für den Austausch mit der zentralen Datenbank wurde v82.ComConnector verwendet. Ich werde nicht näher auf die Einrichtung eingehen; dazu gibt es viele separate Materialien. Ich werde nur auf die Schwierigkeiten eingehen, auf die ich gestoßen bin.
1.Mit Com- Objekte auf einem 64-Bit-Serverbetriebssystem. Zur Lösung des Problems wurde ein Wrapper verwendet COM+-Anwendungen welches in konfiguriert ist Komponentendienste.
2. Fernanruf Com von einem anderen Server. Der aufgerufene Server muss über die Rolle verfügen Anwendungsserver und es sollte konfiguriert werden COM+-Netzwerkzugriff. Darüber hinaus der Server Apache muss über die entsprechenden Rechte verfügen (d. h. als Dienst im Namen eines autorisierten Benutzers ausgeführt werden)
Da wir mit den Com-Verbindungen zu kämpfen hatten, beschlossen wir, die Arbeitsbasis dorthin zu verlegen Internetdienste.
Es wurde auch viel über das Veröffentlichen von Webdiensten geschrieben, aber es wird darüber geschrieben, wie es funktioniert. Ich werde unten erläutern, warum es NICHT funktioniert.
Die Arbeitsbasis wird auf Plattform 8.2 bereitgestellt, die mobile Anwendung jeweils auf 8.3.
Beim Veröffentlichen von Anwendungen zuerst 8.3 und dann 8.2. Ich habe regelmäßig den Fehler „Stream-Formatfehler“ im Webclient 8.3 oder die Fehlermeldung „Die Versionen der Client- und Serverplattform unterscheiden sich“ festgestellt. Eine erneute Veröffentlichung hilft nicht, ein Neustart auch nicht Apache. Aber es hilft, die Veröffentlichung zu deaktivieren und erneut eine Verbindung herzustellen.
Als nächstes ist mir beim Autorisieren eines Benutzers (beim Erstellen) ein lustiger Fehler aufgefallen ws Definitionen). Beim Testen auf einem Computer ist die Autorisierung mit einem langen Namen einfach. Wenn Sie versuchen, denselben Benutzer von einem laufenden Tablet aus zu autorisieren Android, Die Autorisierung endete, bevor sie begann. Experimentell konnte berechnet werden, dass im Kyrillischen die Länge eines Logins auf 22 Zeichen begrenzt ist. Gleichzeitig ermöglichte mir die Kombination aus kyrillischen Zeichen und Zahlen, mich mit einem Login von 27 Zeichen einzuloggen. Es besteht der Verdacht, dass dies auf die Umwandlung kyrillischer Zeichen zurückzuführen ist. Also zum Beispiel im Browser Feuerfuchs Zeile aus Wikipedia“ivo“ wird in „ konvertiert».
Technologisch, mobile Plattform 8.3.3 weist derzeit eine Reihe von Einschränkungen auf. Die am meisten erwartete Neuerung ist meiner Meinung nach die Abfrageunterstützung. Da die mobile Plattform jedoch noch keine beliebigen Abfragen in dynamischen Listen unterstützt, mussten wir „einen anderen Weg einschlagen“.
Um das Problem der Anzeige eines Produktverzeichnisses mit Preisen und Salden zu lösen, wurde folgender Ansatz verwendet:
1. Es wurden zwei Tabellen in Form eines Nomenklatur-Nachschlagewerks erstellt. Die erste ist eine dynamische Liste, das Verzeichnis selbst. Filter dynamische Liste so konfiguriert, dass nur Gruppen angezeigt werden. Die zweite Tabelle enthält die tatsächlichen Salden und Preise. Bei Aktivierung einer dynamischen Listenzeile wird auf dem Server eine Wertetabelle gefüllt, die dann in die zweite Tabelle ausgegeben wird. Zur Ermittlung von Preisen und Salden wurde ein Objektmodell verwendet. Alle diese Tänze mit einem Tamburin wurden nur aufgeführt, weil die übliche Thick-Client-Methode „beim Ausgeben einer Zeile“ oder „beim Empfangen von Daten“ nicht existiert und es unmöglich ist, Zahlen dynamisch in eine Spalte zu zeichnen.
Ein ähnlicher Ansatz wurde in Form der Auswahl verwendet
2. Für die Anzeige einer Zeile mit aktuellen Preisen war FormattedString perfekt.
Unten finden Sie ein Codebeispiel.
&OnServerWithoutContext Function RemainingWhenActivatingStringsOnServer(nom)RecordSet = InformationRegisters.ProductPrices.CreateRecordSet(); RecordSet.Selection.Product.Value = nom; RecordSet.Selection.Product.Use = True; Recordset.Read(); ArrayFormatStrings = Neues Array; Führen Sie für jede festgelegte Zeile aus dem Datensatzsatz den Zyklus Array of Formatted Rows.Add(New Formatted Row(Set Row.Price Type.Name,WebColors.Blue)); durch. Array of FormattedStrings.Add(New FormattedString(" " + String(SetString.Price) + " ")); EndCycle; Return New FormattedString(ArrayFormatStrings); // Den Inhalt des Handlers einfügen. EndFunction
3. Um Verzeichnisse, Salden und Preise in die mobile Anwendung zu laden, wurde ein Webservice verwendet, der als Input eine Parameterstruktur erhält und als Output einen Wertespeicher zurückgibt. Eine weitere unangenehme Entdeckung war, dass die Börse abstürzte, weil die Verarbeitung auf der Serverseite zu lange dauerte. Es scheint, dass es eine Art Zeitüberschreitung gibt, nach der die Anwendung „glaubt“, dass die Verbindung unterbrochen wurde (obwohl tatsächlich noch Daten in der Arbeitsdatenbank über eine WS-Verbindung verarbeitet werden), und den Austausch mit einem Fehler stoppt .
Um dies zu vermeiden, wurde beschlossen, den gesamten Austausch in Teile aufzuteilen und den Schwerpunkt wieder auf die mobile Anwendung zu legen. Diese. Synchronisieren Sie zuerst die Posten, dann die Gegenparteien, dann die Salden usw.
4. Um Berichte zu erhalten, wird der gleiche Ansatz wie in der 1C: Orders-Konfiguration verwendet. Ein Webdienst mit Parametern wird aufgerufen, ein Tabellenkalkulationsdokument wird auf der Serverseite der Arbeitsdatenbank generiert und anschließend wird das fertige Tabellenkalkulationsdokument an die mobile Anwendung zurückgegeben.
Am Beispiel der mobilen Anwendung „1C: Managing Our Company“ (abgekürzt UNF) möchte ich die Entwicklung einer mobilen Geschäftsanwendung von ihren Anfängen und der Veröffentlichung der allerersten Version bis heute zeigen. Die App hat derzeit über 220.000 Downloads; Die Anwendung ist kostenlos, verfügt jedoch über kostenpflichtige Optionen (implementiert durch In-App-Käufe).
Die erste Version des mobilen UNF wurde 2012 auf einer der ersten Versionen der mobilen Plattform 1C:Enterprise erstellt. Zu dieser Zeit gab es bereits eine Client-Server-Konfiguration „1C: Management eines Kleinunternehmens“ (damals hieß es so), ein Programm zur Automatisierung der Aktivitäten eines Kleinunternehmens – Vertrieb, Beschaffung, Kunden- und Lieferantenstamm, Lager Management, Produktion usw.
Wie die meisten mobilen Anwendungen, die auf der plattformübergreifenden mobilen Plattform 1C:Enterprise geschrieben wurden, ist mobile UNF für iOS, Android und Windows verfügbar.
Die Aufgabe lautete: eine mobile Anwendung zu erstellen, die einen Teil der Arbeitsszenarien der „großen“ UNF unterstützt. Die Anwendung muss sowohl autonom arbeiten als auch Daten mit der „großen“ UNF synchronisieren können (im Folgenden werde ich das Wort „groß“ in Bezug auf die Client-Server-Version der UNF ohne Anführungszeichen schreiben, um den Text nicht zu überladen). Bei der Zusammenarbeit mit einem großen CNF müssen Szenarien „mobiler“ Mitarbeiter – Außendienstmitarbeiter, Servicetechniker, Verkäufer – unterstützt werden.
Die erste Version wurde in einem Mannmonat erstellt. Bei der Erstellung einer mobilen Anwendung wurden einige Metadatenobjekte (Verzeichnisse, Dokumente) auf Basis von Objekten der großen UNF implementiert. Einige Funktionen mussten jedoch von Grund auf programmiert werden, beispielsweise der Prozess des Datenaustauschs mit einer großen UNF. Allerdings mussten wir in Bezug auf den Datenaustausch tatsächlich ein wenig programmieren – wir verwendeten Standardplattformmechanismen (insbesondere Austauschpläne), die die Codierung auf ein Minimum reduzieren.
Die 1C-Plattform vereinfacht nicht nur die Arbeit mit der Datensynchronisierung, sondern erleichtert auch die Erstellung einer mobilen Anwendung mit vollem Funktionsumfang erheblich, indem sie dem Entwickler Schnittstellenkomponenten wie Listen (tabellarisch und hierarchisch) mit der Möglichkeit zur Suche danach und Eingabefelder zur Verfügung stellt mit Suche, Tabellen für Berichte, einer großen Auswahl an Diagrammen, der Möglichkeit zum Drucken über WLAN und Bluetooth-Drucker usw.
Mobile UNF nutzt die Funktionalität umfassend Mobilgerät, insbesondere:
Die Konfiguration des mobilen UNF sieht recht spartanisch aus (siehe Screenshot unten):
Aber trotzdem große Menge Anhand der verwendeten Gegenstände erwies sich das Produkt als recht funktionsfähig.
Ein interessantes Merkmal des mobilen UNF ist, dass es oft von Leuten genutzt wird, die noch nie von 1C gehört haben (ja, es gibt solche in unserem Land), die eine mobile Anwendung benötigen, um Aufzeichnungen über ihr kleines Unternehmen zu führen ( zum Beispiel Heimwerken). Sie haben es einfach durch Suchen gefunden Google Play oder AppStore, lesen Sie die Rezensionen - und beginnen Sie mit der Arbeit.
Verzeichnisse von Waren und Dienstleistungen, Auftragnehmern und Bestellungen wurden mit der großen UNF synchronisiert.
Datenaustausch zwischen mobilen und großen UNF in den ersten Versionen
Von Mobilgeräten eingegebene Bestellungen landeten in einem großen UNF und landeten bei der Synchronisierung auf den Mobilgeräten der für die Bestellungen Verantwortlichen. Dokumente wie Kassenbelege, Warenverkäufe usw., die auf mobilen Geräten erfasst wurden, gingen an die große UNF, wurden aber nicht zwischen mobilen Geräten synchronisiert. Alle Arbeiten in der mobilen Anwendung im Synchronisierungsmodus wurden hauptsächlich rund um Aufträge durchgeführt – deren Annahme und Ausführung; eine vollständige Abrechnung wurde nicht auf dem mobilen Gerät durchgeführt; hierfür war die Verwendung eines großen CNF auf dem Computer erforderlich.
Dies war in den ersten Versionen der Fall, aber später haben wir die Situation geändert und die Liste der Szenarien für die Verwendung von mobilem CNF erweitert, um den Benutzern die Arbeit damit komfortabler zu machen.
Die in der Plattform implementierten Datenaustauschmechanismen übernehmen den Großteil der Arbeit bei der Erstellung von Paketen für die Datensynchronisierung, sodass Sie den Programmieraufwand auf ein Minimum reduzieren können. Während des Austauschprozesses wird der Standardmechanismus der 1C:Enterprise-Plattform verwendet – der Datenaustauschmechanismus; Für jede mobile UNF wird in der großen UNF ein Datenaustauschknoten erstellt. In der großen und mobilen UNF wird ein Änderungsregistrierungsdienst verwendet, um Daten zu verfolgen, die seit der letzten Synchronisierung usw. geändert wurden.
Die mobile Anwendung initiiert den Datenaustausch mithilfe der Plattformmechanismen, generiert ein Austauschpaket (das die Kennung der mobilen Anwendung und seit der letzten Synchronisierung auf der mobilen UNF aktualisierte Daten enthält) und sendet es an die große UNF. Basierend auf den Informationen im Startpaket bereitet der große CNF die seit der letzten Synchronisierung im großen CNF geänderten Daten für den mobilen CNF auf und verpackt sie in Paketen. Pakete im XDTO-Format sind in XML serialisierte 1C-Metadatenobjekte; Die Größe jedes Pakets beträgt nicht mehr als 500 Objekte.
Mobile UNF sammelt diese Daten Paket für Paket. Nach dem Herunterladen des letzten Pakets beginnt das mobile UNF mit der Verarbeitung der empfangenen Daten – Prozessdokumente, Aufzeichnungsverzeichnisse usw. Im Falle eines Verbindungsabbruchs wird die Wiederaufnahme von Paketen unterstützt; Wir haben den Wiederaufnahmemechanismus für CNF selbst geschrieben (er ist nicht in der Plattform enthalten), aber da mobiles CNF im Quellcode bereitgestellt wird, können Entwickler sich die Implementierung des Mechanismus ansehen und ihn für ihre Anwendungen ausleihen.
Während der anfänglichen Synchronisierung eines mobilen CNF mit einem großen CNF können Sie nicht im mobilen CNF arbeiten – es erscheint ein modales Fenster, das den Fortschritt des Prozesses anzeigt. Alle nachfolgenden Synchronisierungen erfolgen im Hintergrund und blockieren nicht den Betrieb des mobilen UNF.
Vollständige Liste der zwischen mobilen und großen UNF ausgetauschten Objekte:
Produktkarte mit Produktbild
In den ersten Versionen des mobilen UNF war das Bewegungsszenario recht einfach: Die im mobilen UNF eingegebenen Daten wurden in die Datenbank des großen UNF kopiert, und der Benutzer musste nun Aufzeichnungen auf dem Computer führen. In diesem Fall arbeitet das mobile UNF im Auftragsmodus und es ist nicht mehr möglich, Aufzeichnungen zu führen (wie bei der Standalone-Version des mobilen UNF).
Für den Endbenutzer war das natürlich nicht ganz praktisch – er war es bereits gewohnt, Aufzeichnungen von einem mobilen Gerät aus zu führen, aber hier war er gezwungen, an der Computertastatur zu sitzen. Damit wird nicht jeder zufrieden sein.
Aus diesem Grund haben wir die Liste der Szenarien für den Einsatz mobiler UNF erweitert. Die Entstehung unseres Cloud-Dienstes http://1cfresh.com, basierend auf Cloud-Technologie 1cFrisch. Es ist jetzt möglich, große CNF in der Cloud zu platzieren. Wir haben drei Szenarien für die Verwendung einer mobilen Anwendung beschrieben, wenn das Unternehmen des Benutzers wächst:
Es wäre nützlich, Sie daran zu erinnern, dass Sie auf der mobilen 1C-Plattform Anwendungen erstellen können, die nicht nur mit dem 1C-Server-Backend interagieren; Protokolle, die für den Datenaustausch in mobilen Anwendungen auf der 1C-Plattform verwendet werden, sind plattformunabhängig (Web- und HTTP-Dienste, Unterstützung für XML und JSON usw.). Wenn Sie also schnell und dynamisch einen plattformübergreifenden (Android, iOS, Windows) mobilen Client entwickeln müssen, mit der Möglichkeit, offline ohne ständige Internetverbindung für Ihre Geschäftsanwendung zu arbeiten, dann ist die mobile 1C-Plattform möglicherweise die beste Wahl für dich.
In diesem Artikel gehen wir auf die ersten Einstellungen ein, die vorgenommen werden müssen, bevor Sie mit der Arbeit mit der mobilen Anwendung beginnen können.
Die mobile Anwendung „1C-Rating: Mobile Waiter“ wird in Verbindung mit der Konfiguration „1C-Rating: Restaurant“ verwendet, mit der sie durch periodischen Datenaustausch verbunden ist. Daher müssen Sie vor der Installation der Konfiguration „1C-Rating: Mobiler Kellner“ die entsprechenden Einstellungen im Programm „1C-Rating: Restaurant“ vornehmen.
Wichtig!
Nach der Neuinstallation der mobilen Anwendung ist eine erneute Aktivierung erforderlich.
Wichtig!
Bei Ihrem Benutzernamen und Publikationsnamen muss die Groß-/Kleinschreibung beachtet werden. Wenn das Register nicht übereinstimmt, wird die Autorisierung verweigert.
Wenn Sie einen Benutzer erneut autorisieren oder ändern, geben Sie einfach den Benutzer an, geben Sie das Passwort ein und drücken Sie die Taste Verbinden.
Nach der Autorisierung öffnet sich das Bestelllistenformular und Sie können mit der Arbeit beginnen. Um eine Bestellung zu erstellen, klicken Sie auf den Button Neue Bestellung.
Beim Verbinden einer mobilen Anwendung mit der Konfiguration „1C-Rating: Restaurant“ können folgende Meldungen erscheinen:
1. „Es ist ein Netzwerkfehler aufgetreten“
Diese Meldung kann auftreten, wenn:
Diese Meldung bedeutet, dass für den Benutzer keine Rolle aktiviert ist Zugriff auf mobile Kellnerobjekte.
3. „Die angeforderte URL /REST/hs/Data/Registration wurde auf diesem Server nicht gefunden.“
Eine Autorisierungsmeldung erscheint, wenn:
Der Publikationsname ist falsch.
Der Name der Publikation im Mobile Waiter unterscheidet sich von dem Namen, der im Restaurant-Konfigurator beim Einrichten der Publikation angegeben wurde (Sie müssen prüfen, ob der Publikationsname übereinstimmt, das Buchstabenregister ist wichtig).
4. „1C:Enterprise 8-Anwendungsfehler. HTTP: Nicht gefunden»
Diese Meldung erscheint, wenn beim Einrichten der Veröffentlichung kein HTTP-Dienst ausgewählt wurde. Es ist notwendig, das Vorhandensein von Flags in der Einstellung zu überprüfen Veröffentlichen Sie HTTP-Dienste standardmäßig und im tabellarischen Teil der Zeile Daten.
Bevor Sie mit der Arbeit beginnen, müssen Sie das Stammzertifikat des 1C:Link-Dienstes auf Ihrem Mobilgerät installieren.
In den Einstellungen der mobilen Anwendung müssen Sie den Pfad zur über 1C:Link veröffentlichten Informationsdatenbank angeben. Eine Besonderheit bei der Arbeit mit mobilen Anwendungen über „1C:Link“ besteht darin, dass die Verbindung zu Webdiensten über deren Namen und nicht über Pseudonyme (Aliase) erfolgt. In einigen mobilen Anwendungen (z. B. „1C:DO“) wird die Verbindungszeichenfolge automatisch generiert und erfordert keine Angabe des Webdienstnamens.
Bitte beachten Sie, dass Sie zum Arbeiten mit der mobilen Anwendung Version 1C: Document Flow 8 mindestens 1.3.1.3 KORP installiert haben müssen
Zur Synchronisierung mit der in 1C: Link veröffentlichten Ukönnen Sie die mobile Anwendung „Accounting Client 1cfresh“ verwenden.
Hallo, meine Lieben.
In diesem Artikel möchte ich Ihnen das neue Produkt „FBA Toolkit“ vorstellen, das den Prozess der Entwicklung einer mobilen Unternehmensanwendung auf 1C + Android erheblich vereinfacht.
„FBA-Toolkit“ ist:
- Entwicklung von „native“ Android-Anwendungen in nativer IDE in Java-Sprache;
- 1C: Enterprise 8.1 (8.2) als Datenquelle, Unternehmensinformationssystem.
Erstens wird das Framework für 1C-Programmierer nützlich sein, die Geschäftsanwendungen für Android entwickeln möchten, aber Schwierigkeiten haben, eine neue Plattform für sie zu beherrschen. Um mit der Entwicklung zu beginnen, reichen Grundkenntnisse in Java aus. Als Nächstes zeige ich Ihnen, wie Sie in nur wenigen Stunden einen funktionierenden Prototyp einer Client-Server-Anwendung erstellen.
1. Installieren und konfigurieren Sie:
- Java SDK + Eclipse + Android SDK;
- Webserver (IIS oder Apache);
- 1C: Unternehmen 8.1 (8.2)
2. Importieren Sie für Eclipse zwei Bibliotheksprojekte: ActionBarSherlock und ru_profu1c_fba aus dem SVN-Repository.
3. Installieren Sie die Konfigurationsverteilung „FBA“ und kombinieren Sie sie mit Ihrer 1C-basierten Anwendungslösung.
Der gesamte Vorkonfigurationsprozess wird in den Artikeln ausführlich beschrieben:
Vorbereiten des Arbeitsplatzes des Entwicklers
Installation der „FBA“-Konfigurationsverteilung
Kombination der „FBA“-Konfiguration mit einer Anwendungslösung und Veröffentlichung auf einem Webserver
Die Einrichtung sollte nicht viel Zeit in Anspruch nehmen und höchstwahrscheinlich haben Sie bereits einen Teil der erforderlichen Software installiert.
Die Anwendung implementiert zwei Optionen zum Empfangen von Daten vom 1C-Server:
Erstellen Sie im Verzeichnis „Mobile Anwendungen“ ein neues Element mit dem Namen „An den Manager melden“ und der Kennung SAMPLE_REPORT_HEAD.
Wählen Sie in der Liste „Metadaten“ eine Gruppe aus "Externe Daten" und klicken Sie in der Symbolleiste auf die Schaltfläche „Hinzufügen“. Geben Sie die Parameter der neuen Tabelle wie in der Abbildung gezeigt ein:
"Index"- Testdarstellung des Meldeindikators, Zeile (250)
"Bedeutung"- numerischer Wert des Indikators, Zahl (15.2)
Die Namen der Spalten und der Tabelle selbst werden hier in der Regel auf Russisch angegeben und dienen zum Füllen der Tabelle mit Daten mithilfe der integrierten 1C-Sprache. Klicken Sie auf OK. Die Tabelle wird zum Metadatenbaum hinzugefügt. Für die mobile Anwendung werden die Namen automatisch ins Lateinische übersetzt.
Daher haben wir die Struktur der Wertetabelle (in Bezug auf 1C) vorbereitet, in die wir Daten für den Bericht „Finanzkennzahlen“ übertragen werden. Für die zweite Meldung „Waren im Lager“ werden die Daten als externe Datei übertragen.
Überprüfen Sie auf der Registerkarte „Exchange Scheme“, ob das Flag „Upload“ aktiviert ist. Das Flag „Laden“ ist nicht wichtig, weil Wir werden die von der mobilen Anwendung in 1C erhaltenen Änderungen an dieser Tabelle nicht verarbeiten.
Speichern Sie Ihre Änderungen. Klicken Sie in der Symbolleiste auf die Schaltfläche „Vorlage für mobile Anwendungen“ und legen Sie die Parameter Ihrer mobilen Anwendung fest
„Vorlagenverzeichnis“ – Pfad zum Verzeichnis, in dem die generierten Vorlagendateien für mobile Anwendungen gespeichert werden.
Geben Sie auf der Registerkarte „Basic“ den Namen des Pakets an; dies muss eine eindeutige Kennung sein. Wenn Sie eine Website haben, verwenden Sie diese zum Generieren des Präfixes. In diesem Beispiel habe ich angegeben ru.profi1c.samples.report.head
Auf der Registerkarte „Webdienst“ lautet die IP-Adresse 10.0.2.2; standardmäßig ist dies die Adresse Ihres Computers, wenn Sie über einen Android-Emulator darauf zugreifen. Geben Sie in den Feldern „Webservice-Name“ und „Anwendungsunterverzeichnis“ die Daten ein, die beim Veröffentlichen des Webservices angegeben wurden.
Bitte beachten Sie, dass Sie für 1C 8.2 höchstwahrscheinlich ein Anwendungsunterverzeichnis mit einem zusätzlichen Unterverzeichnis haben /ws, also demoFba/ws, siehe für weitere Details.
Klicken Erstellen, wird die Android-Projektvorlage generiert.
If AbbrLP(MobileApp.Code) = "SAMPLE_REPORT_HEAD" Then If TableName = "Bericht an den Manager" Then // fiktive Berichtsdaten ListTemp = fbaTotal.FromLineWithSeparators("Bargeld, Verbindlichkeiten, Gesamtforderungen, Warensalden, Verbindlichkeiten, Volumen Verkäufe"); RNG = NewRandomNumberGenerator(123456789); Für jedes ListElement aus dem ListTemp-Zyklus NewRow = ExternalTable.Add(); NewRow.Indicator = ListElement.Value; NewRow.Value = RNG.RandomNumber(0.999999) + Sin(RNG.RandomNumber(0.999)); EndCycle; endIf; EndIf
In diesem Beispiel ist die Tabelle mit fiktiven Daten gefüllt, in einer realen Anwendung können hier beliebig viele Reportindikatoren übergeben werden.
Wir haben die Daten für den ersten Bericht sortiert, jetzt müssen wir sie nur noch für den zweiten vorbereiten. Fügen Sie im selben Modul das fbaEvent-Abonnement zur Prozedur hinzu Bereiten Sie Binärdaten zum Senden vor der folgende Code:
DD = Undefiniert; If AbbrLP(MobileApp.Code) = "SAMPLE_REPORT_HEAD" Then If Identifier = "REPORT_PRODUCTS_IN_STOK" Then FileName = GetTemporaryFileName("html"); Report = Reports.ProductsInWarehouses.Create(); If Report.SaveReportInHTML(FileName) Then DD = New BinaryData(FileName); DeleteFiles(FileName); endIf; endIf; endIf; Rückgabe DD;
Ich werde den Code kommentieren. Wenn eine mobile Anwendung beliebige Daten (in Form einer Datei) mit der Kennung „REPORT_PRODUCTS_IN_STOK“ anfordert, wird in 1C ein Bericht ausgeführt und das Ergebnis in einer temporären Datei gespeichert. Diese temporäre Datei wird dann als Binärdaten gelesen und an die mobile Anwendung übertragen. Die temporäre Datei wird gelöscht.
Wie die HTML-Datei in diesem Fall generiert wird, ist für uns nicht wichtig. Sie können den Standard-1C-Speichermechanismus verwenden Tabellenkalkulationsdokument als HTML oder generieren Sie HTML manuell. Ein Beispiel für die Ausgabe finden Sie in der Konfiguration „FBA-Demo“, Bericht „Produkte in Lagern“.
Das war's mit 1C. Fahren wir mit der Entwicklung einer mobilen Anwendung für Android fort.
Starten Sie Eclipse und importieren Sie das Projekt: Datei > Importieren… Wählen Sie in der Android-Gruppe das Element aus „Existiert Android-Code im Arbeitsbereich“ klicken Nächste, geben Sie den Pfad zum Android-Projektvorlagenverzeichnis an und klicken Sie auf Beenden, das neue Projekt wird dem Arbeitsbereich hinzugefügt. Sollten dennoch Schwierigkeiten auftreten, schauen Sie bitte nach, der Vorgang ist in Bildern beschrieben.
1. Erstellen Sie einen Bericht „Finanzindikatoren“, dessen Datenquelle die von 1C erhaltene Wertetabelle ist. Fügen Sie dazu eine neue Klasse ToChiefReport.java hinzu. Hier ist der vollständige Quellcode:
Zeigen
/** * Ein Beispiel für die Erstellung eines Berichts unter Verwendung von Daten aus einer lokalen SQLite-Datenbank. Die * Datenquelle ist die externe Tabelle „Bericht an den Manager“ * */ public class ToChiefReport erweitert SimpleMapHtmlReport ( @Override public int getResIdIcon() ( return R.drawable.report_01; ) @Override public int getResIdTitle() ( return R. string.report_name_to_chief; ) @Override public void build(Context context, IReportBuilderResult builderResult) ( try ( makeReport(context); ) Catch (SQLException e) ( e.printStackTrace(); setHeader1("Ups, Bericht nicht erstellt!"); ) super.build (context, builderResult); ) private void makeReport(Context context) throws SQLException ( DBHelper helper = new DBHelper(context); // Überschrift des Berichts und der Tabelle setHeader2("Finanzindikatoren"); setTableHeader("Name ", "Amount, rub ."); // Die Tabellenzeilen werden in der Reihenfolge angezeigt, in der sie hinzugefügt wurden. Map
Zeigen
/** * Ein Beispiel für einen kompilierten Bericht, der einfach eine HTML-Datei ausgibt. In diesem Beispiel * wurde die Datendatei in 1C generiert und während des Austauschs an den mobilen Client übertragen * */ öffentliche Klasse ProductsInStokReport erweitert SimpleCompiledHtmlReport ( // Der Name, unter dem die empfangene Datei von 1C gespeichert wird (siehe Austauschverfahren // MyExchangeTask ) public static final String REPORT_FILE_NAME = "products_in_stok.html"; public ProductsInStokReport(File file) ( super(file); ) @Override public int getResIdIcon() ( return R.drawable.report_02; ) @Override public int getResIdTitle() ( return R.string.report_name_products_in_stok ; ) )
Zeigen
/** * Standard-Austauschverfahren ergänzt durch benutzerdefinierte Regeln. * Zusätzlich wird eine kompilierte Datei erhalten – ein Bericht. * */ public class MyExchangeTask extends ExchangeTask ( // Report ID as defined in 1C private static final String ID_REPORT_PRODUCTS_IN_STOK = "REPORT_PRODUCTS_IN_STOK"; public MyExchangeTask(ExchangeVariant exchangeVariant, WSHelper wsrvHelper, DBOpenHelper dbOpenHelper) ( super(exchangeVariant, wsrvH elper, dbOpenHelper); ) @Override protected boolean doExecute() throws Exception ( // Austauschschritte gemäß vordefinierten Regeln ausführen boolean success = super.doExecute(); if (success) ( // Beliebige Daten empfangen – unser 2. Bericht onStepInfo("Empfangen von Berichten.. . "); String fPath = appSettings.getCacheDir().getAbsolutePath() + "/" + ProductsInStokReport.REPORT_FILE_NAME; File f = wsHelper.getLargeData(ID_REPORT_PRODUCTS_IN_STOK, null, "", fPath); success = (f != null) ; ) Erfolg zurückgeben ; ) )
Um Berichtsdaten zu erhalten, verwenden Sie die Webservice-Methode getLargeData, das bei Erfolg das Ergebnis in einer Datei im angegebenen Pfad speichert. Achten Sie auf die Kennung ID_REPORT_PRODUCTS_IN_STOK, sie sollte mit der in 1C in der Methode „Binärdaten zum Senden vorbereiten“ identisch sein.
A) eine lokale Variable für die Liste
private ListView-Liste;
b) Initialisierungsmethode
private void init() ( list = (ListView) findViewById(android.R.id.list); // Einen Adapter erstellen, um eine Liste von Berichten anzuzeigen ReportListAdapter adapter = new ReportListAdapter(this,createReportList()); list.setAdapter( adapter); list.setOnItemClickListener(new OnItemClickListener() ( @Override public void onItemClick(AdapterView>parent, View view, int position, long id) ( // Den Bericht im Dialog anzeigen, indem Sie darauf klicken IReport report = (IReport) list.getItemAtPosition(position); report.onShow(MainActivity.this); ) )); )
und es in onCreate() aufzurufen, nachdem das Formularlayout festgelegt wurde
setContentView(R.layout.activity_main); drin();
c) Methode zum Initialisieren der Berichtsliste
/* * Bereiten Sie eine Liste mit Berichten vor */ private Liste
d) das Verfahren zum Starten einer Börse gemäß Ihren Regeln
/* * Einen Austausch nach meinen Regeln starten. Bitte beachten Sie, dass im Scheduler * (falls installiert) der Austausch gemäß den Standardregeln blieb */ private void startExchangeMyRules(ExchangeVariant variant,boolean cancelable) ( // Helfer zum Aufrufen von Webservice-Methoden WSHelper wsHelper = new WSHelper(getExchangeSettings()) ; MyExchangeTask task = new MyExchangeTask(variant, wsHelper, getHelper()); startExchange(task, cancelable); )
Und ändern Sie den Aufruf der Austauschprozedur startExchange(ExchangeVariant.FULL, true) im onOptionsItemSelected-Handler in startExchangeMyRules(ExchangeVariant.FULL, true).
Die Anwendung ist fertig, Autorisierungsformulare und Programmeinstellungen werden automatisch erstellt; wir werden sie nicht ändern.
Testen wir es auf einem Emulator. Wenn Sie nirgends einen Fehler gemacht haben, wird die Anwendung gestartet. Anstelle des Autorisierungsfensters wird jedoch sofort das Einstellungsfenster angezeigt, da keine Autorisierungsdaten (Benutzername und Passwort) angegeben werden.
Bitte geben Sie Ihren Benutzernamen ein: Iwanow
Und Passwort: 123456
Starten Sie die 1C-Datenbank und öffnen Sie das Verzeichnis „Mobile Employees“. Geben Sie als mobiles Gerät das vordefinierte Element „Geräteemulator“ an, fügen Sie die Anwendung „An Manager melden“ zum tabellarischen Abschnitt „Mobile Anwendungen“ hinzu und legen Sie einen identischen Benutzernamen und ein identisches Passwort fest.
Starten Sie den Austauschvorgang auf dem Emulator (Schaltfläche mit dem Pfeil „Nach oben“ im rechten Bereich).
Das Ergebnis des Austauschs wird in der Benachrichtigung angezeigt:
Klicken Sie darauf, um Ihre Anwendung zu starten (oder anzuzeigen). genaue Information Fehlermeldung, wenn der Austausch nicht erfolgreich war).
Schauen wir uns an, was passiert ist. Klicken Sie auf den Bericht in der Liste:
Zeigen
Großartig! Berichte werden angezeigt, Sie können den Maßstab per Knopfdruck oder Gesten ändern.
Zeigen
Verwendung von HTML zum Erstellen von Berichten ermöglicht Ihnen die Erstellung einer Vielzahl von Berichten, inkl. und mit interaktiven Elementen. In einem unserer Projekte wird beispielsweise der folgende Bericht verwendet:
Zeigen
Das ist alles, weitere Beispiele finden Sie auf der Website http://profi1c.ru.
In naher Zukunft ist geplant, Lektionen zu interaktiven Elementen und Adaptern der FBA-Bibliothek hinzuzufügen und zu zeigen, wie man mit Offline-Karten von MapsForge arbeitet.
In naher Zukunft (höchstens in einem Monat) wird es eine kommerzielle Version geben; Informationen zu den Kosten und dem Lizenzierungsverfahren werden auf unserer Website hinzugefügt.
Vielen Dank, dass Sie bis zum Ende gelesen haben. Ich bin bereit, Ihre Fragen in den Kommentaren zu 1C und Android zu beantworten.
Tags: Tags hinzufügen
In Verbindung stehende Artikel: | |
Wiederherstellen des Tons auf einem Laptop. Verlorener Ton unter Windows XP, was zu tun ist
Der häufigste Grund dafür, dass kein Ton zu hören ist, ist das Ausschalten oder die Installation... Formatieren Sie ein Samsung-Telefon auf einfache Weise. Führen Sie den Vorgang auf anderen Android-Geräten durch
Angesichts des instabilen Telefonbetriebs kommt es häufig vor, dass Benutzer ... Melden Sie sich bei Ihrem Google Drive-Konto an
Hallo Freunde! Es reicht aus, die Datei in die Google Drive-Cloud hochzuladen ... |