Documentazione per la versione in scatola di Bitrix24. Completamento della procedura guidata di installazione

Struttura Bitrix - nucleo tecnologico (piattaforma) per la creazione e gestione di progetti (siti web e portali aziendali). La piattaforma consente di creare un numero illimitato di progetti utilizzando una copia (licenza) del prodotto, posizionando il core e il database del sistema in un'unica copia sul server.

SU questo momento non tutte le funzionalità del vecchio kernel sono duplicate in D7. Ma il nuovo core D7 Struttura Bitrix sostituisce gradualmente il vecchio. Se l'utilizzo del vecchio kernel ha provocato un avviso dall'IDE: Method/class is deprecated , è necessario utilizzare .

Per una serie di motivi, la documentazione dell'API potrebbe non coprire tutti i metodi. Per capire il funzionamento, a volte è meglio guardare il codice effettivo del programma. Per questo puoi usare modulo gratuito dal mercato: .

Nota: aggiungendo #examples all'indirizzo di qualsiasi pagina, puoi saltare rapidamente a un esempio se è presente. (Questo non funziona nei file di documentazione in formato CHM.)


Versioni dell'entità

Struttura Bitrix in continua evoluzione. Compaiono nuove funzioni, alcune diventano obsolete, compaiono nuovi parametri nelle funzioni. Tuttavia, un numero piuttosto elevato di progetti non viene aggiornato. Per facilitare il lavoro del programmatore, la documentazione indica da quale e per quale versione del prodotto esisteva (esiste) la classe, il metodo, il parametro, l'evento.

Le versioni sono apposte in due punti: nel titolo e nelle tavole. Se il metodo è valido, allora il titolo conterrà solo il numero di versione con cui è apparso nel prodotto. Se il metodo è obsoleto, verrà indicato l'intervallo di versioni in cui era valido.

Le tabelle indicano la versione con cui l'entità è apparsa nel prodotto, solo se la sua comparsa non coincide con il momento della comparsa della classe stessa, del metodo, e così via. Nell'illustrazione seguente: il parametro COURSE_ID è apparso insieme al metodo (ovvero dalla 5.1.0) e il parametro CHAPTER_ID solo dalla versione 9.5.4.

Se, con lo sviluppo del prodotto, un parametro (di solito si riferisce a parametri) è cambiato, allora ci sarà una nota corrispondente nella sua descrizione. (Ad esempio: prima della versione x.x.x, il parametro si chiamava *****).

Esempio

Appunti:

  • segno Deprecato per un metodo, parametro, chiave significa che non è consigliabile utilizzarlo, poiché non ci saranno estensioni e correzioni.
  • L'installazione delle versioni non è stata completamente completata, i lavori in questa direzione sono attualmente in corso.

Bitrix, 2001-2019, 1C-Bitrix, 2019

L'integrazione di un negozio online su 1C-Bitrix con il sistema può essere eseguita utilizzando il modulo di sistema in Bitrix.Marketplace.

Una volta installato, il modulo aiuterà a caricare gli ordini esistenti nel sistema.

Una volta installato, il modulo sarà:

  • caricare nuovi ordini da 1C-Bitrix nel sistema;
  • aggiornare i dati sugli ordini esistenti, tenendo conto delle modifiche apportate a 1C-Bitrix;
  • caricare nuovi ordini e clienti dal sistema a 1C-Bitrix;
  • aggiornare i dati sugli ordini esistenti, tenendo conto delle modifiche apportate al sistema (ad esempio, lo stato dell'ordine, il numero di merci nell'ordine, ecc. sono stati modificati nel sistema, tali modifiche si rifletteranno anche in 1C-Bitrix );
  • inviare al sistema le informazioni relative al pagamento online dell'ordine da parte dell'utente.

È anche possibile personalizzare le classi di plugin senza perdere il codice modificato durante l'aggiornamento. Per implementare il codice modificato, è necessario inserire una copia del file con la classe richiesta nella directory bitrix/php_interface/retailcrm.

Il plugin ha la possibilità di personalizzare i seguenti file:

RestNormalizer.php
logger.php
Cliente.php
RCrmActions.php
RetailCrmUser.php
RetailCrmICML.php
RetailCrmInventories.php
RetailCrmPrices.php
RetailCrmCollector.php
RetailCrmUa.php
RetailCrmEvent.php
RetailCrmHistory_v4.php
RetailCrmHistory_v5.php
RetailCrmOrder_v4.php
RetailCrmOrder_v5.php
APIClient_v4.php
ApiClient_v5.php

Per personalizzare i file i cui nomi contengono la versione dell'API utilizzata, i file vengono creati con un nome senza specificare la versione, ad esempio - RetailCrmHistory.php .

Dopo aver creato una copia del file con la classe nella directory bitrix/php_interface/retailcrm, il modulo utilizzerà la classe personalizzata, è possibile apportare modifiche ai suoi metodi.

Registrazione di un negozio online nel sistema

Prima dell'installazione, registra il tuo negozio online nella tua istanza di sistema (sezione Amministrazione > Negozi, ad esempio, nella versione demo):

Installazione della soluzione in 1C-Bitrix

  • Fai clic su "Installa" nella pagina della soluzione nel Marketplace e inserisci l'indirizzo del tuo negozio online:

  • Scarica il modulo tramite il sistema di aggiornamento 1C-Bitrix:

  • Inizia l'installazione del modulo:

Verrà avviata la procedura guidata di installazione.

Installazione guidata. Passo 1

Al passaggio 1.1, devi specificare l'indirizzo del tuo sistema (ad esempio, https://test.retailcrm.ru) e la chiave API che hai generato in precedenza nel sistema:

Importante! Se è presente un solo negozio in Bitrix, il passaggio 1. Siti viene ignorato.

Installazione guidata. Passaggio 1. Siti web

Al passaggio 1. Siti, devi impostare una corrispondenza tra i tuoi negozi in 1C-Bitrix e il sistema.

Importante! Tutti i tuoi negozi nel sistema devono avere una chiave API comune.

Installazione guidata. Passo 2

Nella seconda fase, è necessario specificare la corrispondenza tra i valori del negozio online e le directory di sistema. Il modulo stesso cerca di stabilire una corrispondenza per gli stati tipici. Se il modulo non è riuscito a farlo, devi specificare tu stesso la corrispondenza:

Controlla se il sistema ha i valori di ricerca necessari corrispondenti alle ricerche del negozio online. Se non sono sufficienti, aggiungili nella sezione Amministrazione senza chiudere la pagina della procedura guidata di installazione:

Successivamente, aggiorna la pagina della procedura guidata: dovrebbero essere caricati i nuovi valori di riferimento.

Installazione guidata. Passaggio 3

Al terzo passaggio, il modulo consente di impostare la corrispondenza tra i campi di 1C-Bitrix e il sistema.

Importante! Se c'è un modulo feedback” o ordini “in 1 clic”, e questi dati non rientrano negli ordini Bitrix standard, quindi non vengono inseriti nel sistema.

Inoltre, se stai lavorando con persone giuridiche, è necessario compilare tutti i campi, come indicato nello screenshot qui sotto.

Installazione guidata. Passaggio 4

Al quarto passaggio, il modulo consente di caricare nel sistema gli ordini precedentemente effettuati. Lo scarico può richiedere del tempo (1000 ordini vengono scaricati in circa 5 minuti). L'avanzamento del processo di scaricamento mostrerà una barra di avanzamento.

Se necessario, puoi mettere in pausa il caricamento e riprenderlo dopo un po'.

Caricando gli ordini precedentemente effettuati, potrai visualizzare i report analitici nel pannello KPI. Ti consigliamo di eseguire questo passaggio.

Installazione guidata. Passaggio 5

Al quinto passaggio viene configurato lo scarico del catalogo prodotti. Per fare ciò, seguire i passaggi seguenti.

1. Selezione di blocchi informativi e proprietà

I blocchi informativi selezionati verranno caricati nel sistema. Ti verrà offerto di scegliere solo quei blocchi informativi che contengono merci o che hanno blocchi informativi collegati con offerte commerciali. Parallelamente alla selezione dei blocchi informativi, è possibile selezionare le seguenti proprietà: articolo, produttore, colore, peso, dimensione: per fare ciò, è necessario specificare la proprietà del blocco informativo responsabile della memorizzazione della proprietà corrispondente. La selezione di una proprietà è facoltativa.

2. Percorso file

Verrà generato un file nel formato nel percorso specificato, in cui si troverà la struttura della directory. Il percorso predefinito è - "/bitrix/catalog_export/retailcrm.xml". Se cambi il percorso, dovrai eseguire una configurazione simile nel sistema.

3. Impostazione del numero di offerte nell'esportazione

Nelle impostazioni di esportazione del catalogo, è presente un campo "Numero massimo di offerte commerciali per prodotto", in cui è necessario inserire il numero massimo di offerte commerciali che un prodotto può avere (se sono più di 50). Per impostazione predefinita, il modulo calcola un massimo di 50 offerte commerciali per un prodotto. Se ci sono meno di 50 offerte nel negozio per un prodotto, questa impostazione può essere ignorata. Se ci sono più offerte commerciali e l'impostazione è specificata, si consiglia di trasferire l'agente a krones se lavora sugli hit.

4. Selezione della frequenza di scarico

Ci saranno tre opzioni tra cui scegliere:

1. NO- quando viene selezionato questo elemento, lo scarico periodico del catalogo non sarà configurato automaticamente, e dovrai scaricare il catalogo ogni volta tu stesso.

Questa opzione può essere utile se il catalogo dei prodotti del tuo negozio online cambia molto raramente o se desideri modificare le impostazioni di caricamento in un secondo momento.

2. Crono- la selezione di questa voce creerà automaticamente un profilo speciale che sarà collegato al servizio Cron del server su cui opera il sito Web del negozio online.

L'utilità cron viene eseguita sfondo ed esegue le attività specificate all'ora specificata.

La scelta di questo articolo può essere utile se il catalogo contiene una nomenclatura molto ampia ( oltre 10.000 prodotti). Per questo elemento è necessario specificare il nome del profilo di esportazione personalizzato.

3. Agente. In questo caso verrà creato anche un apposito profilo che si collegherà alla tecnologia "Agents" in 1C-Bitrix, e avverrà il caricamento automaticamente una volta al giorno.

Un agente è una funzione php che viene eseguita a una certa frequenza. All'inizio del caricamento di ogni pagina, il sistema controlla automaticamente se c'è un agente che deve essere avviato e, se necessario, lo esegue. Non è consigliabile creare agenti per caricamenti lunghi: è preferibile utilizzare cron.

Questa opzione è più preferibile se la directory contiene meno di 10.000 articoli, quindi il caricamento è abbastanza veloce e ciò non influirà sulla velocità del sito Web del negozio online.

Nel caso di una nomenclatura ampia ( oltre 10.000 prodotti), è necessaria una configurazione aggiuntiva dell'agente su Cron. Per questo elemento è necessario specificare anche il nome del profilo di esportazione personalizzato.

4. Indicazione di scarico istantaneo

Come risultato dell'impostazione del flag "Scarica ora", la struttura della directory verrà scaricata nel file di cui sopra, subito dopo l'installazione del modulo.

Dopo aver caricato il catalogo in un file nel sistema, vai su Amministrazione -> Negozio -> Nome negozio -> scheda Catalogo e seleziona la casella "Scarica catalogo da ICML adesso". In questo caso, il download del file e la sua elaborazione iniziano quasi istantaneamente.

5. Specificare un nome profilo

Dopo che il caricamento del catalogo prodotti è stato correttamente configurato, nella sezione Store > Impostazioni > Esportazione dati, apparirà un nuovo tipo di esportazione di sistema, se si specifica il caricamento periodico durante l'installazione, apparirà anche un profilo di esportazione.

Nota:
Per autoimpostazione Lo scarico ha la possibilità di creare il proprio profilo di esportazione.

Completamento della procedura guidata di installazione

Al termine dell'installazione verranno creati 2 agenti: un agente carica la cronologia degli ordini da Bitrix al sistema, il secondo agente genera un catalogo. Se il caricamento degli ordini è configurato per un agente, gli ordini vengono caricati nel sistema nel momento in cui viene richiamata la cronologia. Negli altri casi, gli ordini vengono scaricati per evento.

Scarico del servizio di consegna durante lo scambio 1C-Bitrix - sistema

Se disponi di servizi di consegna automatizzati collegati a 1C-Bitrix, come eDost, che hanno molti profili: Russian Post, EMS, DHL e molti altri, allora nel sistema puoi sfruttare la possibilità di caricare questo tipo di servizio di consegna.

I metodi di consegna devono essere configurati lato sistema. Se il modulo di sistema è stato installato prima che il servizio di consegna fosse connesso a Bitrix, i metodi di consegna mancanti dovranno essere inseriti manualmente nel sistema. Se il modulo è stato installato dopo aver collegato il servizio di consegna, le modalità di consegna verranno installate automaticamente, così come lo scarico del servizio stesso. Ovvero per ogni ordine verrà scaricato il costo di spedizione.

Sul lato 1C-Bitrix, è necessario effettuare le seguenti impostazioni se il modulo di sistema è stato installato dopo aver collegato il servizio di consegna al sistema 1C-Bitrix:

Vai a Amministrazione > Impostazioni, vai alla scheda "Impostazioni di ricerca".

Impostare la corrispondenza delle modalità di consegna (precedentemente configurate lato sistema). Successivamente, fai clic sul pulsante "Scarica servizi di consegna".

Impostazione della frequenza di caricamento 1C-Bitrix - sistema

Quando si aggiorna il catalogo prodotti, si possono distinguere due punti:

Generazione di directory (in formato yml/icml) lato client e

Il sistema scarica il catalogo ogni tre ore. Il percorso del file da caricare è impostato nelle impostazioni del negozio: devi andare alla sezione Amministrazione > Negozi > Seleziona negozio > Scheda Catalogo.

Dopo aver installato il modulo di sistema in 1C-Bitrix, viene creato un profilo per il caricamento. Per visualizzare, devi andare a Desktop > Store > Impostazioni > Esportazione dati. Lo screenshot mostra due opzioni:

Predefinito,

Caricamento della directory di sistema.

Se selezioni la seconda opzione, cliccandoci sopra, puoi aprire le opzioni di caricamento.

Se l'Agente è selezionato come opzione di periodicità, per visualizzare l'elenco degli Agenti è necessario andare su Desktop > Impostazioni > Impostazioni prodotto > Agenti.

Se fai clic su "Cambia" o "Aggiungi nuovo", puoi assegnare o modificare la frequenza di avvio dell'attività per la generazione.

La frequenza della sincronizzazione dei dati durante lo scambio 1C-Bitrix - sistema

Il modulo di sistema ti consente di caricare un catalogo di merci sul tuo sistema, nonché di effettuare un regolare scambio bidirezionale di ordini e clienti.

Con il tempestivo scarico dei dati dal catalogo, i tuoi gestori di impianto avranno informazioni aggiornate sulla disponibilità della merce. La situazione in cui la merce viene ordinata e dopo un po 'si scopre che è esaurita, non si verificherà.

Lo scambio di ordini è un processo di sincronizzazione dei dati quando gli ordini vengono caricati in entrambe le direzioni:

Da 1C-Bitrix al sistema:

  • Se lo scarico per eventi è abilitato, durante la creazione o la modifica di un ordine nel sistema 1C-Bitrix, verrà immediatamente scaricato nel sistema. Se viene selezionato un agente di scarico, l'ordine verrà scaricato nel sistema entro 15 minuti (si sconsiglia di utilizzare questo meccanismo senza validi motivi, poiché in questo caso gli ordini arrivano con ritardo e gli aggiornamenti di tali ordini non verranno trasferiti a il sistema).
  • Quando si cambia l'utente, anche i dati principali verranno caricati immediatamente nel sistema.

Dal sistema a 1C-Bitrix:

  • Se crei un ordine per un nuovo utente nel sistema, l'ordine verrà caricato su 1C-Bitrix e verrà creato un nuovo utente nell'intervallo da 1 a 15 minuti.
  • Se modifichi l'indirizzo, il costo di consegna o lo stato nel sistema nella pagina dell'ordine, tutte queste modifiche verranno caricate su 1C-Bitrix entro 15 minuti.
  • Se modifichi gli sconti per le merci nel sistema e modifichi la quantità di merci, anche questo cambierà in 1C-Bitrix nell'intervallo da 1 a 15 minuti.

Modifiche nel modulo di integrazione

Versione 2.0

  • Il modulo di integrazione V2.0 è progettato per integrare 1C-Bitrix con la versione del modulo "Negozio online (vendita)" > 16 installata in esso.
  • Ora il lavoro del modulo viene eseguito tramite API V4.
  • Il modulo di integrazione utilizza ora il nuovo core 1C-Bitrix D7.
  • Ora dal sistema, il sito riceve anche le modifiche per il cliente (nome completo, email, telefono).
  • Nelle impostazioni del modulo di integrazione nella sezione "Altre impostazioni", è diventato possibile trasmettere i numeri d'ordine dal sistema a 1C-Bitrix. Cioè, se un ordine con un numero, ad esempio 12345R, viene creato manualmente nel sistema, verrà creato un ordine con lo stesso numero in 1C-Bitrix.
  • Poiché nella versione del modulo "Negozio online (vendita)" > 16, gli sviluppatori Bitrix hanno lasciato l'applicazione degli sconti all'intero ordine e hanno lasciato gli sconti solo per le merci, il sistema, finora, non ha nemmeno la possibilità di utilizzare gli sconti per l'intero ordine. È possibile impostare sconti solo per specifici articoli dell'ordine.

Versione 2.1

  • Aggiunte unità di misura nell'esportazione del catalogo.

Versione 2.2

  • Il modulo ora supporta più versioni API con una scelta.
  • Supporto dell'API V5.
  • Aggiunta la possibilità di scaricare i residui nell'ambito dei magazzini.
  • Aggiunta la possibilità di scaricare i tipi di prezzo.
  • Aggiunta l'integrazione di base di Daemon Collector.
  • Aggiunta integrazione con Universal Analytics.
  • La logica delle funzioni integrate per la modifica dei dati è stata migliorata.
  • Aggiunta funzione retailCrmApiResult incorporata.
  • Aggiunta una versione trigger della cronologia delle modifiche.

Versione 2.4

  • Aggiunto un assegno nel gestore per salvare il pagamento per un nuovo ordine.
  • Aggiunta impostazione per il numero di offerte commerciali nell'esportazione.
  • Aggiunta la conversione del prezzo di acquisto.
  • Modifica dei file di traduzione.
  • Aggiunto check in scarico modifiche dal sistema per le proprietà dell'ordine.
  • Aggiunto caricamento IVA.
  • Risolto il problema con l'ottenimento di un elenco di tipi di prezzo per lo scarico. Tutti i tipi disponibili in Bitrix sono disponibili per la selezione.

Altre impostazioni

Impostazioni dell'ordine

Trasmetti al negozio il numero di ordini creati nel CRM

Quando si crea un ordine nel sistema, ha il proprio numero univoco in base alle regole specificate. Quando questa impostazione è impostata nel modulo, il numero di tale ordine verrà trasferito al negozio durante la sincronizzazione inversa.

Ordini di scarico

  • Per evento- quando si salva l'ordine, i dati entrano nel sistema;
  • Agente- i nuovi ordini vengono inviati prima di richiedere al sistema lo storico delle modifiche.

Versione API client

Ora puoi scegliere la versione dell'API con cui funzionerà il modulo. La scelta dipende dalla versione del sistema. Si consiglia di scegliere l'ultima versione.

Abilita scarico saldi nell'ambito dei magazzini (disponibile se ci sono magazzini)

Ora puoi periodicamente scaricare i residui dai magazzini di cantiere ai magazzini di sistema. Per questo hai bisogno di:

  • confrontare i magazzini del sito con i magazzini dell'impianto;
  • specificare i magazzini del sistema in cui verranno caricati i saldi;
  • selezionare i blocchi informativi con le merci necessarie per il caricamento degli avanzi (è necessario selezionare quelli specificati nell'esportazione del catalogo per il sistema).

Lo scarico viene effettuato dall'agente con una frequenza di 1 ora (per impostazione predefinita).

Si prega di notare che per caricare gli avanzi nel sistema, le opzioni devono essere abilitate.

Abilita il caricamento dei tipi di prezzo per i prodotti (disponibile solo se sono presenti diversi tipi di prezzo)

Ora puoi caricare periodicamente altri tipi di prezzi dal negozio al sistema. Per questo hai bisogno di:

  • confrontare i tipi di prezzo del sito con i tipi di prezzo del sistema;
  • specificare i negozi del sistema in cui verranno caricati ulteriori tipi di prezzi;
  • selezionare blocchi informativi con prodotti che richiedono il caricamento di tipi di prezzo aggiuntivi (è necessario selezionare quelli specificati nell'esportazione del catalogo per il sistema).

Lo scarico viene effettuato dall'agente con una frequenza di 24 ore (per impostazione predefinita).

Attiva il raccoglitore di demoni

Ora puoi aggiungere un Collector Daemon al tuo sito dall'interfaccia delle impostazioni. Per fare ciò, è necessario specificare la chiave appropriata per il sito desiderato. La chiave può essere trovata nel sistema.

Abilita integrazione UA

Ora puoi abilitare l'integrazione con Universal Analytics dall'interfaccia delle impostazioni (funziona correttamente con il componente di pagamento standard). Per ogni sito a cui desideri aggiungere il tracciamento, dovrai inserire un ID di tracciamento e un Indice dimensione personalizzata.

Dove $order è un array di dati dell'ordine da inviare al sistema e $arFields è un array di campi dell'ordine sul sito. function retailCrmBeforeOrderSave($order) ( //Le tue modifiche restituiscono $order; //o restituiscono false; e quindi le modifiche dal sistema per questo ordine verranno ignorate )

Dove $order è un array con i dati dell'ordine modificati provenienti dal sistema.

funzione retailCrmAfterOrderSave

retailCrmAfterOrderSave - una funzione che viene eseguita immediatamente dopo aver salvato sul sito le modifiche ai dati dell'ordine provenienti dalla cronologia del sistema.

function retailCrmAfterOrderSave($order) ( //Le tue modifiche restituiscono; )

Dove $order è un array con i dati dell'ordine modificati provenienti dal sistema.

funzione retailCrmApiResult

retailCrmApiResult - una funzione che viene eseguita immediatamente dopo aver ricevuto una risposta dall'API di sistema.

function retailCrmApiResult($methodApi, $res, $code) ( //Le tue modifiche restituiscono; )

Dove $methodApi è il nome del metodo API, $res è il risultato della richiesta true/false (richiesta riuscita o non riuscita), $code è il codice di stato della risposta API.

Si prega di notare che gli errori nel codice durante l'utilizzo di questa funzione possono interrompere la sincronizzazione del sito e del sistema.

Se gli strumenti sopra elencati non sono sufficienti per qualche motivo, è possibile apportare le modifiche richieste direttamente al codice del modulo senza il rischio di perdere queste modifiche durante l'aggiornamento del modulo. Per fare ciò, è necessario copiare il file con la classe richiesta nella directory /bitrix/php_interface/retailcrm/ e modificarlo già al suo interno. Questo meccanismo supporta la modifica delle classi per lavorare con clienti, ordini, eventi, esportazione di cataloghi e altri meccanismi ausiliari.


Segnalibro Attività personalizzateè destinato a coloro che lavoreranno direttamente con il prodotto, ovvero ai dipendenti delle aziende che utilizzano il nostro prodotto software.

La scheda Attività dell'amministratore è destinata a coloro che amministreranno la versione in scatola Bitrix24.

Segnalibro Documentazione progettato per gli sviluppatori di progetti basati sulla versione in scatola Bitrix24.

Attività personalizzate

Compiti dell'amministratore

Sviluppatori

La documentazione per gli sviluppatori è una descrizione dell'API del sistema. La documentazione per l'utente è una descrizione dei componenti e delle impostazioni del sistema.

La documentazione è disponibile sia online che come file chm. Si consiglia di utilizzare la versione online poiché è più aggiornata. I file chm vengono aggiornati periodicamente e potrebbero non contenere informazioni sulle versioni più recenti.

Attenzione! Se non vedi il contenuto del file di formato .chm, quindi il motivo sono le impostazioni di sicurezza sistema operativo. Nelle proprietà del file, è necessario rimuovere il blocco della visualizzazione del file. Leggi di più inFAQ.

La documentazione è un'informazione di riferimento. Non è sufficiente che uno sviluppatore alle prime armi lavori con il sistema. Nel padroneggiare i principi della programmazione in Struttura Bitrix un corso speciale ti aiuterà:

Non molto tempo fa, la nostra azienda ha ricevuto un negozio online abbastanza grande su 1C-Bitrix per la manutenzione e la revisione. Il progetto è stato messo in esercizio commerciale per un paio di mesi, ma allo stesso tempo ha avuto una serie di seri problemi. Inoltre, il cliente ha pianificato di completare le attività di finalizzazione della nuova funzionalità il prima possibile. Mi è stato affidato il compito di organizzare lavoro efficiente progetto con il minimo tempo di inattività del sito e la massima soddisfazione del cliente.

Dati iniziali:

  • C'è un negozio online su 1C-Bitrix
  • Il progetto ha diversi anni, ma solo pochi mesi fa il sito è stato trasferito su 1C-Bitrix
  • Presenze 10-15 mila persone al giorno
  • Il catalogo del negozio contiene circa 12.000 articoli di merce
  • I tempi di inattività e le interruzioni del sito sono inaccettabili
  • Il progetto è stato sviluppato da un'altra società per sei mesi:
    1. C'è un TOR, circa 100 fogli, corrispondente al lavoro svolto da circa il 40%
    2. Nessuna documentazione di progetto
    3. Mancanza di comprensione del motivo per cui gli sviluppatori precedenti hanno utilizzato tali soluzioni architettoniche.

Sviluppo Software in generale, e progetti web in particolare, ho fatto circa 8 anni. Durante questo periodo ho affrontato progetti di varia complessità e, a prima vista, il compito non mi è sembrato troppo difficile. Quando si implementano progetti nella nostra azienda, di norma viene utilizzata la metodologia SCRUM. Ho iniziato a staccarmi da lei.

Prima di tutto, ho avuto accesso codice sorgente progetto. Superficialmente analizzato. Concordato con il cliente un elenco di attività prioritarie. Ho fatto un piano di sviluppo per 3 sviluppatori e, come ha detto Gagarin, andiamo!

Problema numero 1: la colpa è degli sviluppatori

Come di solito accade, la colpa di tutto è di tutti tranne che del cliente. Il designer ha realizzato un layout che pesa troppo, l'host ha fornito un server lento, gli sviluppatori hanno realizzato un sito che è pieno di bug e si rompe continuamente, i gestori hanno completato alcune attività che non abbiamo chiesto di eseguire dopo il passaggio da vecchia versione site su 1C-Bitrix, c'è stata una forte diminuzione del traffico di ricerca, ecc. La situazione non è chiara. Da un lato, la responsabilità principale, ovviamente, dovrebbe ricadere sulla società di sviluppo. Era necessario trasmettere al cliente le conseguenze di tutte le azioni con il sito e prepararsi al risultato. Quando si esegue il lavoro, offrire un'architettura olistica sistema futuro e un piano di sviluppo da seguire fino al completamento delle pietre miliari. Condurre un test approfondito della funzionalità e consegnare il lavoro. D'altra parte, mi imbatto spesso in una situazione in cui il cliente sa tutto meglio da solo, perché sua madre una volta ha dipinto, e quindi è miglior progettista, e suo figlio di 7 anni è esperto di SEO perché passa tutto il suo tempo al computer giocando a GTA.

Chi è la colpa, chi ha ragione non sta a noi giudicare. In questo caso, l'appaltatore precedente era un'azienda affidabile abbastanza nota e non posso dire nulla di negativo sul loro sviluppo. E il cliente, oggettivamente, si preoccupa del suo prodotto e cerca di migliorarlo. Non so come sia stato, per me stesso ho trovato una spiegazione nella quantità insufficiente di analisi fornite dall'appaltatore al cliente.

Di conseguenza:

  • Il progetto non è stato portato alla sua logica conclusione. Molte attività vengono abbandonate a metà strada
  • Il progetto non è documentato. Il lavoro di una parte della funzionalità non è ovvio. Durante lo sviluppo di una nuova funzionalità, si scopre che la funzionalità che prima funzionava e la cui esistenza non sospettava il nuovo sviluppatore ha smesso di funzionare
  • Parte del codice scritto dal precedente esecutore deve essere riscritto da zero
  • L'architettura prevista del progetto nelle prime settimane/mesi di lavoro non è chiara al nuovo appaltatore. Il perfezionamento della funzionalità di un modulo porta alla perdita di funzionalità della funzionalità di un modulo che non è in alcun modo correlato ad esso
  • Il cliente è nervoso, l'esecutore è nervoso, i visitatori non sono contenti, le presenze diminuiscono, le vendite diminuiscono

Vedo solo una soluzione al problema: ripulire gradualmente e sistematicamente tutti i moduli del sito a turno per portare il prodotto allo stato richiesto. Alcuni errori sono stati spostati in attività separate ed eseguiti immediatamente, qualcosa è stato corretto parallelamente allo sviluppo di nuove funzionalità. Il risultato: ad ogni aggiornamento, dopo la pulizia operativa dei bug emersi, il sito migliora e diventa più stabile.

Il problema n. 2 è lo sviluppo parallelo.

In conformità con la politica di licenza di 1C-Bitrix, ogni licenza del sito consente di utilizzare 2 copie del sistema. Uno come sito di produzione, il secondo - per lo sviluppo. Il problema è che lo sviluppo viene eseguito continuamente da diversi, nel mio caso tre, sviluppatori. Nel caso dello sviluppo classico, tutto è semplice. Ogni sviluppatore lavora sul proprio modulo. Quindi viene eseguito il test funzionale di ciascun modulo, tutti i miglioramenti vengono uniti nel repository di un sistema di controllo della versione, quindi viene testato tutto insieme (test di integrazione). Se il risultato è normale, al cliente viene presentata la versione di prova. Dopo che la versione di prova è stata accettata, il server di produzione viene aggiornato. In conformità con la metodologia SCRUM, ho deciso di caricare nuove versioni sul sito di produzione una volta alla settimana. Di conseguenza, ci sono 3-4 giorni per lo sviluppo principale. 1 giorno per testare e correggere bug e mezza giornata per aggiornare il server di combattimento. Certo, le scadenze oscillano, ma ho cercato di attenermi rigorosamente alla regola del "rilascio ogni giovedì".

La prima cosa che ho riscontrato è stata che in 1C-Bitrix ci sono situazioni in cui lo stesso file è coinvolto contemporaneamente in diverse funzionalità a diverse estremità del sito. La soluzione più semplice e ovvia è utilizzare un sistema di controllo della versione, nel mio caso SVN, che utilizzo in tutti gli altri progetti. Ma per utilizzare il controllo della versione, è necessario che ogni sviluppatore abbia la propria versione del codice, che modifica e poi unisce il repository comune.

E la licenza? Ho contattato il supporto tecnico 1C-Bitrix. Ha ricevuto un'offerta per l'acquisto di ulteriori. licenze di sviluppo. Per usare un eufemismo, non ero contento, ma non ho ricevuto altre offerte. Ho trovato una via d'uscita abbastanza velocemente. Ha deciso di utilizzare le chiavi NFR. Fortunatamente, lo stato di partner lo consente. Di conseguenza, ho creato 5 installazioni del negozio online:

  • Server di produzione
  • Server di prova
  • 3 server di sviluppo (uno per sviluppatore)

Nel tempo, è andato anche oltre. C'era anche un'installazione separata per il tester. Si è scoperto che con la mia fortuna, il cliente entra sempre nel server di prova nel momento in cui qualcosa viene aggiornato lì. Nel bugtrack ci sono molte attività non necessarie che sono già state completate e il cliente ha l'impressione che non stiamo facendo bene il nostro lavoro.

Attualmente sto usando il seguente schema:

  • Ogni sviluppatore utilizza solo la propria copia locale per lavoro
  • Al momento concordato, tutti i miglioramenti completati vengono uniti in un ramo comune nel repository
  • Il QA preleva una versione "imbrattata" per il test
  • Dopo aver testato e corretto i bug, il server demo viene aggiornato per il cliente
  • Dopo la verifica e l'accettazione da parte del cliente, i miglioramenti vengono trasferiti al server di combattimento.

Tra gli ovvi svantaggi di questo approccio, voglio evidenziare il basso livello di coinvolgimento del cliente nello sviluppo. Il risultato è visibile al cliente solo nella fase finale. Questo approccio è applicabile se hai un buon analista che raramente commette errori ed è in costante contatto con il cliente. Altrimenti, molte attività dovranno essere rifatte da zero.

Durante la costruzione del circuito, mi sono imbattuto in un altro problema. Il progetto occupa circa 80 GB sul disco. Senza cache e file temporanei - circa 60. All'inizio ho provato a rimuovere immagini e video dal controllo della versione - non ha funzionato. Le informazioni sul sito sono in continua evoluzione. È necessario testare i dati correnti. Il primo commit del sito nel repository è andato in pezzi per me per più di 2 giorni. Il primo checkout nella cartella di sviluppo richiede diverse ore (server SVN in rete locale sviluppo). Se, Dio non voglia, fai accidentalmente un aggiornamento completo della cartella del progetto, puoi andare a fumare, cenare, giocare a ping-pong o giocare a curling. Il commit solo di file o cartelle selezionati è abbastanza veloce. Soluzione: completato l'attività: eseguire il commit di una dozzina di file modificati contemporaneamente.

Problema n. 3: aggiornamento del server di produzione e collaborazione con il cliente

Il problema è il più importante, complesso e, alla fine, non risolto. Dopotutto, se il resto dei problemi riguarda la cucina interna del progetto, allora la reputazione e il reddito del cliente, e, di conseguenza, il mio reddito, dipendono dal lavoro del sito.

È qui che entrano in gioco le leggi di Murphy:

  • Se qualcosa non funziona bene su un server di test, si romperà sicuramente su un server di produzione.
  • Se qualcosa funziona bene su un server di prova, si romperà comunque su un server di produzione.
  • Se un bug esiste sul sito per soli 5 secondi, uno dei visitatori lo troverà sicuramente e ne scriverà nelle recensioni o nel modulo di feedback.
  • Se il sito non funziona per 1 minuto durante l'aggiornamento, allora è in questo momento che il titolare dell'azienda lo mostrerà al suo amico o concorrente (e questo nonostante il coordinamento dei tempi e delle modalità di aggiornamento).
Certo, sto esagerando, ma in ogni battuta c'è una parte di battuta. Il carico minimo sul sito è dalle 4 alle 6 del mattino. Certo, sarebbe meglio aggiornare in questo momento, ma davvero non voglio.

Nel caso della maggior parte delle applicazioni Web, esiste una struttura chiara per suddividere l'applicazione in livelli e l'aggiornamento del sito può essere suddiviso in 2 parti:

  • Aggiornamento del codice
  • Aggiornamento del database tramite script SQL

Nel caso di 1C-Bitrix, tutto è un po' più complicato. Innanzitutto, ci sono molti file. Ne ho più di un milione nel mio progetto. Il solito aggiornamento dal repository richiede non meno di 20-30 minuti. Ovviamente puoi aggiornare solo i file modificati, ma poi l'intero punto del repository viene perso. In secondo luogo, e questo è molto più triste, spesso durante l'aggiornamento è necessario apportare modifiche e impostazioni manuali tramite il pannello di amministrazione. E questo è sempre lento, devi ricordare tutte le modifiche che devono essere apportate, c'è un'alta probabilità di commettere un errore accidentale. Ovviamente puoi scrivere uno script SQL che apporterà tutte le modifiche necessarie al database. Nei casi più semplici, ovviamente, facciamo proprio questo. Ma nella maggior parte dei casi, la scrittura e il debug di uno script di questo tipo richiedono più tempo dello sviluppo stesso e molto più tempo rispetto all'esecuzione manuale di tutte le azioni con successiva verifica.

Non ho ancora trovato una buona soluzione. Ora aggiorniamo manualmente le impostazioni nel database. Per ridurre al minimo gli errori, viene compilata una lista di controllo con un elenco di ciò che deve essere fatto durante l'aggiornamento. Cerchiamo di aggiornare il più attentamente e accuratamente possibile. Dopo l'aggiornamento, l'intero team verifica la funzionalità principale del server di produzione e conduce ulteriori test. Il numero di errori è stato ridotto al minimo, ma i bug e i tempi di inattività durante gli aggiornamenti non sono stati ancora completamente eliminati.

La seconda cosa che ho incontrato è lavoro di squadra con il cliente. Perché il progetto è ampio, circa 30 persone ci lavorano costantemente. Gestori di contenuti, responsabili delle vendite, ottimizzatori SEO, marketer e molti altri. Naturalmente ognuno apporta delle modifiche alle pagine del sito e alle impostazioni dei moduli. La prima decisione è stata quella di togliere al cliente i diritti di apportare modifiche al codice del programma del sito. La decisione è assolutamente corretta, ma è solo peggiorata. Se prima il cliente pensava di poter andare anche sul sito e rompere accidentalmente qualcosa, ora tutti i dossi hanno cominciato a cadere solo su di noi. A cosa. Anche se il gestore dei contenuti ha modificato in modo storto il testo sulla pagina e non ha chiuso alcun tag, la colpa è comunque dello sviluppatore. La soluzione si è rivelata abbastanza semplice. Il marketplace ha un modulo di controllo della versione della pagina gratuito. Questo non ha risolto il problema, comunque qualcuno di tanto in tanto farà qualcosa, ma ora è possibile vedere in qualsiasi momento chi è cambiato, cosa è cambiato e perché tutto si è rotto. Il risultato, ovviamente, non è ghiaccio, ma mi fa risparmiare molti nervi.

Inoltre, abbiamo preso una decisione prima di ogni aggiornamento del server di prova, ne portiamo una copia dal server di produzione. Anche questo richiede molto tempo. Archivia il progetto, spostalo su un altro server, decomprimilo. Tutto questo richiede diverse ore. Ma i nuovi miglioramenti vengono testati quasi in condizioni di combattimento. Se le impostazioni dei server di test e di produzione sono identiche, la differenza di funzionamento sarà minima e il numero di errori sarà notevolmente ridotto. Come l'esperienza ha dimostrato, un server di produzione può cambiare così tanto in una settimana che alcune delle nuove funzionalità che funzionano senza problemi su una copia di una settimana fa potrebbero non funzionare affatto su una nuova copia.

Problema numero 4: "fammi urgente, questo è un compito per 5 minuti"

Il problema non riguarda tanto 1C-Bitrix, ma il perfezionamento e il supporto di progetti esistenti. Spesso il cliente ha il desiderio di realizzare qualche piccola cosa, ma urgentemente e immediatamente sul luogo del combattimento. Il risultato è sempre lo stesso: non ne viene fuori niente di buono. Nel migliore dei casi, questo miglioramento verrà semplicemente dimenticato durante il prossimo rilascio, nel peggiore dei casi, il server cadrà semplicemente e ci vorranno diverse ore per ripristinarlo dal backup.

Ho trovato solo una soluzione: non seguire mai l'esempio del cliente a scapito dell'affidabilità e della sicurezza. Non importa come chiede il cliente, la colpa sarà sempre dello sviluppatore. Come mi ha detto il mio ex capo: "Non ti ho chiesto di fare cose cattive".

E poiché abbiamo toccato l'argomento dei backup, voglio sottolineare. Il backup con 1C-Bitrik è sicuramente buono e conveniente, ma molto lento. Se è necessario ripristinare urgentemente 1-2 file o più valori nel database, è necessario attendere fino a quando tutti i 60 GB non vengono decompressi. Qui il seguente schema mi sembra il più efficace:

  • Dovrebbe esserci un backup giornaliero di file e database sotto forma di un archivio su fonte esterna dati.
  • Facciamo sempre un backup immediatamente prima dell'aggiornamento in una delle 2 opzioni:
    1. Option light - Copia l'intera cartella del progetto in una cartella adiacente sul server. Il database sotto forma di dump viene salvato in un file separato. Non archiviamo nulla. Nel caso sia necessario ripristinare qualche valore nel database o in uno dei file, tutto sarà a portata di mano e facilmente accessibile
    2. L'opzione forte è simile alla precedente, solo che copiamo la base su un'altra base Dati MySQL. Ciò consentirà in caso di arresto anomalo completo in 1-2 minuti di correggere la cartella principale del sito nel file hosts e il progetto inizierà a funzionare dalla cartella adiacente con una copia del database.

Conclusione

Grazie a tutti coloro che hanno letto fino alla fine. Spero che la mia esperienza ti possa essere utile. Sarò lieto di suggerimenti su modi più efficaci per risolvere i problemi espressi nei commenti o in un personale. Ora ho cercato di esprimere i principali problemi di perfezionamento e supporto di progetti già avviati con requisiti di elevata affidabilità. Se il materiale risulta essere interessante, ho intenzione di scrivere un seguito sulle caratteristiche dell'architettura 1C-Bitrix che distinguono lo sviluppo di un sito su Bitrix dallo sviluppo di altri progetti web.

Informazioni su come lavorare con può essere trovato nei tutorial e nella documentazione. I corsi di formazione sono progettati per padroneggiare i metodi di lavoro in prodotto software e documentazione - per padroneggiare i principi della personalizzazione CMS.

Quando si lavora con "1C-Bitrix: gestione del sito" i problemi sorgono sotto forma di specifici problemi pratici. Abbiamo raccolto varie pagine di corsi di formazione in argomenti di profilo per aiutarti a trovare più facilmente le risposte alle tue domande.



Centri di formazione Fai una domanda Forum



Segnalibro Gestori di contenutiè destinato a coloro che lavoreranno direttamente con il prodotto, ovvero ai gestori di contenuti che guidano progetti creati sul nostro prodotto software.

Segnalibro Amministratori destinato a chi amministrerà "1C-Bitrix: gestione del sito".

Segnalibro Sviluppatori progettato per gli sviluppatori di progetti basati su "1C-Bitrix: gestione del sito".

Gestori di contenuti

Puoi importare il corso sul tuo sito Gestore di contenuti da questo archivio Corso senza domande per i test.
Versione del corso del 06/05/2015.

Amministratori

Sviluppatori

La documentazione per gli sviluppatori è una descrizione dell'API del sistema. La documentazione per l'utente è una descrizione dei componenti e delle impostazioni del sistema.

La documentazione è disponibile sia online che come file chm. Si consiglia di utilizzare la versione online poiché è più aggiornata. chm vengono aggiornati periodicamente e potrebbero mancare informazioni su ultime modifiche nel sistema di aiuto.

Attenzione! Se non vedi il contenuto del file di formato .chm, quindi il motivo sono le impostazioni di sicurezza del sistema operativo. Nelle proprietà del file, è necessario rimuovere il blocco della visualizzazione del file. Leggi di più inFAQ.

La documentazione è un'informazione di riferimento. Non è sufficiente che uno sviluppatore alle prime armi lavori con il sistema. Nel padroneggiare i principi della programmazione in Struttura Bitrix un corso speciale ti aiuterà:


Superiore