Por que, Bitrix? Ou o mundo das fadas 1C

Um dia, na segunda-feira, ocorreu-me o pensamento - “mas eu entro no novo núcleo” (relativamente novo, mas mais sobre isso mais tarde). O pensamento não apareceu do nada, mas os pré-requisitos para ele foram:


  • tarefa de teste, de um dos principais estúdios da Mãe Rússia (em que a abreviação ORM apareceu),
  • a ideia de escrever um módulo simples,
  • o desejo de um dos clientes, no futuro, de fazer uma loja.

Então, quero compartilhar a história desta campanha na densa floresta tropical.


Uma breve introdução


Não me considero um guru da programação nem no Bitrix nem em qualquer outra coisa. O artigo reflete minhas observações, experiências e pensamentos. Críticas construtivas são bem-vindas, bem como disputas bem fundamentadas (como Sócrates legou). Os antecedentes destacaram três tópicos amplos que não serão abordados. Como seu principal aspecto - programação trabalhando com dados na estrutura do kernel do Bitrix D7 (ORM), embora seja um fator fundamental para escrevê-lo.


Na piscina com a cabeça


O aspecto de trabalhar com dados é fundamental e sem eles, em lugar algum, pensei, e decidi ir imediatamente Google examine a documentação, esperando uma descrição detalhada e a disponibilidade de exemplos, e, claro, os cursos. Com a mão leve e a esperança de algo saboroso e novo. Não vendo motivo para preocupação, fui acampar. As nuvens estavam se acumulando ...


O que você precisa saber sobre a selva ou as regras de sobrevivência


Regra número 1 - Cuidado com agentes de viagem sem escrúpulos


Decidi começar com os cursos, tendo visto os itens de menu que me interessam (módulo e ORM), pensei em vários textos e inserções de código - tudo será rápido, vamos lá ... Então, meu próximo erro foi cometido. De fato, aconteceu:


  • os cursos são mal estruturados - a ordem do estudo não é pensada; você pode encontrar a ausência de qualquer conexão entre os capítulos;


  • permalinks - Não estou falando de links para documentação, mas links para excesso de pilha e outros capítulos (no final do curso, entre os quais há um mar de informações) são muito perturbadores, isso não é sério;


  • água e palavras comuns - você pode verificar o número de caracteres;


    O tipo de letra em negrito é usado para destacar palavras importantes, termos, frases e frases. Ou seja, o que é especialmente importante no contexto da funcionalidade descrita:

  • a interpretação de conceitos à sua maneira ainda é um tópico antigo (API - Component - Template aka MVC);


  • inserções da documentação - copiar e colar peças inteiras, às vezes apenas para preencher um local;


  • citações de desenvolvedores - simplesmente não há palavras -_-, por que esse alarido;


  • capítulos desatualizados - apenas parece impossível excluí-los; eles reforçam a confusão às vezes.


    Relações entre entidade (obsoleta) ou configurações de desconto do produto


Obviamente, a vantagem é que, em princípio, existem cursos. Provavelmente uma vantagem, porque escrever algo apenas com base ainda é essa tarefa. Oh bem. Depois de revisar os cursos, principalmente inserindo o código, decidi tentar, mas ainda há documentação. Começou a chuviscar ...


Regra número 2 - Cuidado com os matagais densos


Tendo feito algumas amostras simples usando fita adesiva documentação, decidi tentar obter um desconto nas mercadorias. E então a chuva começou. Núcleo de Pseudon e ovos de páscoa:


  • dois módulos para descontos - sim, sim, pensei durante muito tempo - por que adicionei o desconto, ele está no produto, mas não consigo obtê-lo através da classe de entidade DiscountTable . Eu tive que escrever em apoio. A resposta foi esta:

DiscountTable - descontos em mercadorias, pertencem ao módulo Trade Catalog, a funcionalidade está desatualizada e não é usada. Recomendamos o uso das regras do carrinho.

  • falta de documentação - mas você pode obter um link para a documentação - perguntou
    eu Esperando que de 2013 a 2015 ela aparecesse. A resposta é:

A documentação para criar as Regras da cesta ainda está em desenvolvimento.

  • os cenários de trabalho não foram pensados - minha próxima pergunta era lógica - como posso obter um desconto? À qual recebi uma resposta encantadora e encerrei a comunicação com suporte:

Para obter as regras de cesta que se aplicam ao produto, você precisará criar um objeto de cesta e executar um cálculo para o produto.

  • funcionalidade incompleta - alguns métodos de classe podem retornar mensagens de erro como:

Para adicionar descontos de produtos, use a chamada CCatalogDiscount :: Add ()

  • arquitetura complexa - para criar uma seleção complexa de várias tabelas, objetos de relacionamento especiais são usados, que devem ser adicionados ao SomeTable::getMap() . Isso nem sempre é fácil (algumas classes de descrição da entidade são geradas automaticamente). Além disso, entristece o fato de que é impossível obter uma amostra complexa simplesmente no formato de uma matriz multidimensional. E a construção de relações pode levar mais de uma dúzia de linhas.
  • labirintos de funcionalidade - no D7 existem lugares que são constantemente reescritos e ao mesmo tempo todas as variações são suportadas. Os mesmos objetos de relacionamento podem ser implementados através de: Entity\ReferenceField || Bitrix\Main\ORM\Fields\Relations || runtime (mediante solicitação)

Tudo isso é muito deprimente e deixa você indignado, para dizer o mínimo. E além disso, existem outros inconvenientes.


Regra 3 - Malditos Insetos


O Bitrix tem uma série de características estranhas e intrusivas que você esquece constantemente, mas novamente piscam diante dos seus olhos:


  • regras de nomeação de classe e arquivo - sua própria empilhadeira que reduz tudo para minúsculas, diferentes nomes de classe e arquivo;
  • maneiras de conectar soluções de terceiros - por exemplo, compositor ou vue (que está simplesmente contido na biblioteca BX, sem motivos óbvios e complementos) ;

UPD 1. Alteração ao Vue

Investigou a questão.
De fato, o BX reivindica os seguintes benefícios do wrapper Vue:


  1. Suporte ao multilinguismo (Bitrix Framework) - você pode adicionar algumas funções do BX js ao componente Vue, com a reatividade desativada para eles;
  2. Barramento de Eventos Global - para comunicação entre aplicativos (se houver vários);
  3. Herança de componentes - açúcar sintático, simples se estende;
  4. Customização de componentes - açúcar sintático, algo como uma substituição (como / bitrix / components / e / local / components /);
  5. Uma única versão da biblioteca (dentro da estrutura do site) - é lógico, eu não pensei imediatamente (obrigado k0rinf ).

  • suporte para código antigo - um monte de classes desnecessárias e redundantes e confusão constante;
  • componentes esquecidos - somente os componentes do módulo iblock foram atualizados;
  • modelos de componentes - notórios e conhecidos por todos, com a lógica de negócios pronta;
  • lógica implícita e problemas com a personalização - após alterar o script do pedido, é possível detectar um erro sutil e problemas com os módulos;
  • estática onipresente - você começa a pensar que isso é normal;
  • painel de administração controverso - às vezes não é conveniente e não é adaptável, mas para desenvolver módulos para ele ... mmm;

Ninharias, mas elas sempre estão próximas.


Regra número 4 - Estranhos e nativos são perigosos


O Bitrix tem mais um benefício (não) - uma grande comunidade. Você pode encontrar qualquer informação, mas sua correção e relevância serão uma grande questão. Freqüentemente, você só pode aprender a criar muletas ou usar um código antigo que já tenha uma substituição adequada. Mas também existem messias que podem mostrar o caminho para o seu rebanho. Um deles disse:


Para trabalhar com infoblocks, use o kernel antigo, que funciona bem e de forma estável.

Eu acho que vou fazer isso.


Regra número 5 - Predadores em algum lugar próximo


Marqueteiros elogiando um produto. Artigos comparativos em que o Bitrix é o líder indiscutível. Um monte o chão programadores, como eu sou. Muitos sites que pedem para terminar seu tormento. Também o flagelo da comunidade.


Regra # 6 - Tenha água


A cada novo problema e a falta de uma solução adequada, a moralidade cai e você pula um movimento pensamentos vêm, mas é tudo o que é necessário para esse desperdício de tempo. A estrutura, a conteinerização e a integração contínua podem ser melhores, e não essas meias medidas. Nesses casos, apenas uma decisão de força de vontade bem, demanda salva a situação.


Regra número 7 - Chuva tropical é difícil


E termina um fato desagradável: tentativas de programação, busca e estruturação de informações, comunicação com especialistas e retorno ao passado, aprendendo algo novo, leva muito tempo, na ausência de um resultado inteligível - deprime constantemente.


Civilização aka conclusões


E aqui você sai da selva. Gasto, mas vivo. Quebrado, mas ainda não quebrado. Seus olhos cansados ​​estão abertos e eles vêem tudo. Um caminho em que realmente vale a pena se deslocar e trilhas onde são necessários cuidados especiais.


Bitrix é um produto controverso, dizendo que ele geralmente desenvolvendo desenvolve incorretamente - não vale a pena. Mas dizer que ele é o melhor sem perceber as falhas é acreditar cegamente.


Para mim, eu decidi, Bitrix - não. Uma rejeição completa, é claro, não funcionará, mas será desenvolvida em um produto no qual o suporte à funcionalidade básica e à documentação inteligível não apareça há 5 anos, para o novo e anunciado kernel - não vejo razão. É melhor escrever uma solução simples que será usada de projeto em projeto no núcleo antigo e aprender uma nova.


O velho Frankenstein, é claro, é digno da vida, pelo menos algumas idéias dignas nele. Afinal, não estamos na Idade Média para queimar na fogueira todos aqueles que pensam de maneira diferente. Ou ainda vale o que você pensa?


PS O artigo é escrito às pressas, se você não conseguir construir uma cadeia consistente de pensamentos.

Source: https://habr.com/ru/post/pt473672/


All Articles