Registre fontes de dados externas 1s. Fontes de dados externas

20.02.2024

Por que esta oportunidade é tão interessante? Qualquer pessoa que tenha programado em 1C e esteja bastante familiarizada com SQL e pelo menos geralmente familiarizada com a arquitetura e os princípios de desenvolvimento de outras plataformas tecnológicas para aplicativos de negócios dirá com total confiança o que ele mais gosta em 1C. Obviamente, o construtor de consultas é o mecanismo mais conveniente e atencioso para escrever consultas para recuperar dados de estruturas relacionais que já encontrei pessoalmente. E agora 1C nos deu uma oportunidade maravilhosa de usá-lo não apenas com 1C, mas também com qualquer outra tabela. Só que esse “barril de mel” tem muitas “moscas na sopa”. Primeiras coisas primeiro:

1) Configuração e uso- sem “dançar com pandeiro” não vai funcionar
a) Adicione uma fonte de dados externa – não parece complicado
b) marque a caixa de seleção “Selecionar da lista” - isso é necessário - isso é necessário para verificar a funcionalidade no início e evitará problemas desnecessários
c) - certifique-se de clicar em "..." - a conexão é ODBC. Não OLEDB como estamos acostumados, mas um nível abaixo

D) Mas aqui tenha MUITO CUIDADO.

Este é um driver ODBC - se você usar a versão cliente-servidor, ele deverá estar no servidor. Se você estiver desenvolvendo em um sistema e trabalhando em outro (como geralmente acontece), certifique-se de que não haja surpresas esperando por você. Uma recomendação estranha, mas escolha o driver mais antigo ou mais comum se você não estiver particularmente preocupado com a velocidade e não pretende ir além dos recursos do padrão SQL92. Isso lhe dará melhor compatibilidade. Por exemplo, para o SQL Server 2008, o melhor driver será o SQL Server Native Client 11, mas recomendo escolher apenas o SQL Server, caso contrário esse cliente muito nativo terá que ser instalado no servidor ou em todas as máquinas clientes (se estiver usando o versão do arquivo), e o benefício é especial para o simples, ele não lhe dará nenhuma tarefa.
e) Diálogos de seleção de servidor padrão

E) Recomendo responder “sim” à pergunta sobre como salvar a senha, caso contrário você não conseguirá iniciar isso.
g) Selecione a tabela e os detalhes... uma oportunidade maravilhosa - você pode renomeá-la imediatamente como quiser (e os detalhes também), e nas propriedades você verá os nomes dos campos da fonte de dados

Z) Agora você inicia, abre o designer de consultas - seleciona estupidamente todos os registros da tabela e OPA - um erro. O que fazer? Se você tiver uma interface gerenciada, dê uma olhada no menu de serviço e, se for uma interface normal...
Eu pessoalmente usei este código:
Código 1C v 8.x Parâmetros = ExternalDataSources.DAX.GetGeneralConnectionParameters();
Parâmetros.AuthenticationStandard = Verdadeiro;
Parâmetros.UserName = "sa";
Parâmetros.Password = "pas";
Parameters.ConnectionString = "DRIVER=(SQL Server);SERVER=servet;UID=sa;PWD=;DATABASE=banco de dados";
Parâmetros.DBMS = "MSSQLServer";

ExternalDataSources.DAX.SetCommonConnectionParameters(Parâmetros);
ExternalDataSources.DAX.SetUserConnectionParameters(UserName(), Parâmetros);
ExternalDataSources.DAX.SetSessionConnectionParameters(Parâmetros);

ExternalDataSources.DAX.SetConnection();
Algumas peças podem não ser necessárias, mas funciona.
Você precisa executar o código UMA VEZ. Depois disso, será normal conectar-se... misticismo, é claro - por que isso foi necessário não está claro...

2) Fontes de dados somente leitura- Sim, milagres não acontecem... mas às vezes você quer...

3) NÃO PODEM SER USADOS JUNTO COM FONTES DE DADOS INTERNAS
Pessoalmente, esse fato me matou na hora.

Como pode ser assim... o que estávamos esperando e já imaginamos e lambemos a boca sobre como agora iremos combinar nossos dados com 1C em uma solicitação, recolhê-los - agrupá-los, inseri-los no relatório, mas isso não é o caso...
Mas é claro que isso não impede as pessoas experientes... que pensamento veio à mente? Isso mesmo – tabelas temporárias:

4) NÃO PODEM SER UTILIZADOS JUNTO COM MESAS TEMPORÁRIAS

Mas isto já não se parece com dificuldades tecnológicas, mas sim com o que querem que façamos “para que a vida não pareça um paraíso” :).

5) Só pode ser usado em conexões ACS
Para quem não sabe, isso está no ACS na aba “Data Set Links”. Você os usa com frequência? Confortável? Aparentemente eles querem nos forçar a usá-los com mais frequência. Somente existe uma coluna “Condição de comunicação” e “Parâmetro de comunicação”. Não encontrei um exemplo de seu uso em nenhuma configuração padrão e, de alguma forma, nem tudo é transparente na documentação e no trabalho de Khrustaleva. Alguém pode me explicar como funciona a "condição de conexão". Se você escrever Atributos de Origem = Atributos do Receptor lá, não funciona. Claro, a condição pode ser escrita no campo “Expressão” - na maioria dos casos isso é suficiente... mas de alguma forma não funciona muito facilmente.

No total, esse problema foi resolvido anteriormente em algum lugar assim:
Código 1C v 8.x Função InitializeDataSource()

DateStart = SettingsComposer.Settings.DataParameters.Items.Value;
DataCon = SettingsBuilder.Settings.DataParameters.Items.Value;
Se DataCon > "20100101" Então
DataCon = "20100101";
fimSe;

CN = Novos Números de Qualificadores(15,2);
KS = NewStringQualifiers(255);

ArrayNumber = Novo Array();
ArrayNumber.Add(Type("Número"));

ArrayString = Novo Array();
ArrayString.Add(Type("String"));

ArrayData = Novo Array();
ArrayDate.Add(Type("Data"));

//Preenchemos o custo contábil na tabela
TypeNumber = Novo DescriptionTypes(ArrayNumber, CN);
TypeString = Novo TypeDescription(ArrayString, KS);
TypeDate = Novo TypeDescription(ArrayDate);

//tabela para carregar dados do SQL
TZ = Nova TabelaValor();
TK.Columns.Add("NomenclatureCode", TypeString);
TK.Columns.Add("Qnty", TipoNumber);
TK.Columns.Add("Período", DateType);

TK.Indices.Add("Período");

//Conecta ao SQL
String de conexão = "Provider=SQLOLEDB.1;Persistir informações de segurança=True;ID do usuário=sa;Pwd=;Fonte de dados=;Usar procedimento para preparar=1;Auto Translate=True;Tamanho do pacote=4096;ID da estação de trabalho=;Usar Criptografia para Dados=False;Tag com agrupamento de colunas quando possível=False;Catálogo Inicial=Relatórios";
Conexão = New COMObject("ADODB.Connection");
Comando = Novo COMObject("ADODB.Command");
RecordSet = New COMObject("ADODB.RecordSet");
Data = "";
Tentar
Connection.Open(AbbrLP(ConnectionString));
Command.ActiveConnection = Conexão;
Command.CommandText = "S_elect * from PH onde período >= "" + String(Format(DateStart, "DF=yyyyMMdd"))) + "" e ponto final<= "" + Строка(Формат(ДатаКон, "ДФ=ггггММдд")) + """;
RecordSet = Command.Execute();
RecordSet.MoveFirst();
Exceção
Devolução de especificações técnicas;
FimTentativa;

Enquanto RecordSet.EOF = Loop Falso
Linha = TZ.Adicionar();
Row.NomenclatureCode = RecordSet.Fields(RecordSet.Fields.Item(1).Nome).Valor;
Linha.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Nome).Valor;
Linha.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Nome).Valor;
RecordSet.MoveNext();
Fim do Ciclo;

Solicitação = Nova Solicitação();
VrTable = Novo TemporaryTableManager();
Query.SetParameter("vrDataTable", TK);
Query.SetParameter("Data de início", Data de início);
Request.SetParameter("DataCon", DateCon);
Consulta.Text = "SELECIONE
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|Colocar DataTable
|DE
| &vDataTable AS vrDataTable
|ONDE
| vrDataTable.Period >= &DataInício
| E vrDataTable.Period<= &ДатаКон";
Solicitação.Run();
TZ = Indefinido;

Solicitação = Nova Solicitação;
Query.TemporaryTableManager = VrTable;
Query.Text = "Aqui está uma consulta envolvendo uma tabela de variáveis";

Resultado = Consulta.Run();
Resultado de retorno;

Função Final

ExternalSet = InitializeDataSource();
DataSet = nova Estrutura();
DataSet.Insert("Tabela SQL",ExternalSet);
TypicalReports.GenerateTypicalReport(ThisObject, Resultado, Dados de descriptografia, OutputToReportForm, DataSet);

Na verdade, não existem muitas linhas de código e elas são bastante padronizadas... neste caso, você pode usar todas as funcionalidades do designer de consultas, e fornecer apenas a função DATA COMPOSITION ao ACS

Mas certamente não parece tão bom... e toda vez que você precisar escrever código para fazer upload de valores em uma tabela e verificar se cometeu um erro no nome dos detalhes... e o que nos foi dado 1C parece um tanto indiferente. Ainda não decidi qual é mais conveniente de usar. Você decide e escreve sobre suas decisões e o que o levou a tomá-las.

Informações retiradas do site

Na versão 8 do programa 1C, os desenvolvedores adicionaram à funcionalidade a capacidade de conectar bancos de dados de terceiros e obter informações deles diretamente do configurador, sem utilizar conexões COM e objetos OLE. Este recurso é implementado usando um novo objeto - “Fontes de dados externas”

Fontes de dados externas em 1C podem ser usadas da mesma forma que outras tabelas do sistema:

  1. Ao criar relatórios e cálculos utilizando um sistema de composição de dados (DCS);
  2. Para obter links para informações armazenadas em fontes de terceiros;
  3. Para alterar dados armazenados em tabelas;
  4. Ao gerar solicitações.

É importante saber que este mecanismo não foi projetado para funcionar com outros bancos de dados 1C, uma vez que o modelo operacional 1C.Enterprise em si não envolve interferência nos dados no nível das tabelas físicas.

Criando uma nova fonte

A adição de uma nova fonte externa ao programa ocorre no modo “Configurador”. Existe um ramo correspondente na árvore de configuração (Fig. 1)

Você terá que trabalhar muito ao criar uma nova fonte, apesar do formulário do novo objeto ter apenas quatro abas:

  1. Básico;
  2. Dados;
  3. Funções;
  4. Direitos.

A primeira guia possui apenas um parâmetro interessante - o modo de controle de bloqueio. Se você não tiver dúvidas sobre o bloqueio de dados em transações ou sobre os meandros da paralelização dos fluxos de informações, poderá deixar esta opção no modo de bloqueio automático. No entanto, tal abordagem pode levar a restrições excessivas (por exemplo, quando, em vez de um registro separado, o programa bloqueia toda a tabela física, privando outros usuários da capacidade de trabalhar com ela).

Os bloqueios gerenciados, ao contrário dos automáticos, utilizam o mecanismo de transação inerente ao próprio programa, e não ao SGBD, o que permite que as capturas de tabelas sejam transferidas para um nível muito inferior.

Ao definir este parâmetro como “Automático e Gerenciado”, fornecemos ao sistema a capacidade de determinar qual modo usar, acessando diretamente uma propriedade semelhante para cada tabela específica.

Guia “Dados” do formulário de propriedades de fonte externa

O formato da aba “Dados” é mostrado na Fig. 2

Arroz. 2

Aqui podemos adicionar tabelas e cubos de origem externos. Existem duas maneiras de adicionar uma tabela:

  1. Manualmente, então o formulário para adição de tabela se abrirá na nossa frente (Fig. 3);

Arroz. 3

  1. Ou selecione na lista de tabelas de origem física (Fig. 4), caso em que um construtor especial se abre diante de nós.

Arroz. 4

Vamos dar uma olhada mais de perto no formulário para adicionar uma tabela. A propriedade “Nome” é usada para identificar exclusivamente um objeto na configuração.

A comparação do objeto de metadados e da tabela física final ocorre através da propriedade “Nome na fonte de dados” localizada na aba “Avançado” (Fig. 5)

Arroz. 5

A seguir devemos determinar o tipo da tabela, ou melhor, sua objetividade. Se os dados armazenados em uma estrutura puderem ser identificados exclusivamente por meio de qualquer campo, a tabela poderá ser um objeto. Se a individualidade de um registro for determinada por um conjunto de campos-chave, a tabela deverá ter um tipo não-objeto.

Comparando tais tabelas com outros objetos de metadados, a seguinte analogia pode ser dada:

  • As tabelas de objetos são livros de referência;
  • Os não-objetos são registros de informação.

O conjunto de campos-chave é definido no seguinte parâmetro de formulário (“Campos-chave”). Este campo é obrigatório; se você deixá-lo em branco, o salvamento da configuração falhará.

Como pode ser visto na Figura 5, alguns campos e botões do formulário não são editáveis:

  • Expressão na fonte de dados;
  • Tipo de dados da tabela;
  • Campo de apresentação;
  • Ver manipuladores.

Eles só poderão ser utilizados após preenchermos os campos da tabela, definindo seu tipo e atribuindo-lhes identificadores (Fig. 6)

Arroz. 6

Aqui você deve prestar atenção ao parâmetro “Permitir Nulo”; se esta caixa de seleção estiver marcada, não é aconselhável usar tal campo como chave.

Construtor de tabela

Talvez o ponto mais importante e interessante ao trabalhar com fontes externas seja a criação de uma cadeia de conexão. Seu construtor abre se você clicar no botão com três pontos próximo ao parâmetro “String de conexão”.

Em primeiro lugar, seremos solicitados a decidir sobre o driver que será utilizado para a conexão (Fig. 7)

Arroz. 7

A definição incorreta deste parâmetro não permitirá que você se conecte a uma infobase de terceiros. Você também deve compreender que nem todos os drivers especificados na lista suspensa podem ser usados ​​para gerar automaticamente uma cadeia de conexão. Se a plataforma gerar um erro (Fig. 8), a cadeia de conexão deverá ser inserida manualmente.

Figura 8

Arroz. 9

A linha em si é uma construção estritamente regulamentada.

Exemplo de string de conexão

Vamos considerar um banco de dados de terceiros criado no Microsoft Access e localizado na raiz da unidade D. Para conectar esse banco de dados, devemos usar o driver apropriado, mas selecioná-lo no construtor de linha resulta no erro Fig.

Nós mesmos configuraremos os parâmetros de conexão.

Driver=(Microsoft Access Driver (*.mdb)) – é assim que se parece a primeira parte da linha. Entre chaves definimos o driver.

Para arquivos Excel será semelhante a (Microsoft Excel Driver (*.xls)), para arquivos Excel criados em um escritório anterior a 2003, a linha do driver será semelhante a (Microsoft Excel Driver (*.xls, *.xlsx, *. xlsm, *.xlsb)).

Separando este parâmetro do próximo com vírgula, devemos inserir o endereço do nosso armazenamento (no nosso caso DBQ=D:\Database1.mdb).

Somando esses dois parâmetros, obtemos Driver=(Microsoft Access Driver (*.mdb));DBQ=D:\Database1.mdb. Ao escrever este parâmetro, obtemos acesso às estruturas internas deste banco de dados.

Para o objeto “Fonte Externa”, não basta apenas criá-lo na configuração, ele também precisa estar conectado no modo “Enterprise”. Isto pode ser feito no menu “Todas as funções”->Fontes externas. Quando entramos em nossa tabela pela primeira vez, precisamos inserir a mesma string de conexão no modo “Enterprise”.

Trabalhe com eles em listas no modo 1C Enterprise.

No entanto, no trabalho, muitas vezes surge uma situação em que parte dos dados é armazenada em outro lugar.

  • Loja online (geralmente armazena dados em um banco de dados MySQL/SQL externo)
  • Outra base.

Para trabalhar com esses dados armazenados em outras bases de dados, é necessário desenvolver mecanismos especiais.

Na versão 1C 8.2.14, apareceu uma nova chamada Fontes de Dados Externas 1C, que facilita muito o trabalho do programador, pois:

  • agora não há necessidade de criar mecanismos especiais para obtenção de dados
  • esses dados podem ser acessados ​​da maneira usual
  • esses dados podem ser visualizados em listas 1C.
    • Fonte de dados externa 1C – banco de dados SQL externo

      Digamos que temos um banco de dados SQL no qual os dados de que precisamos estão armazenados. Vamos tentar ler os dados dele usando o mecanismo Fonte de dados externa 1C.

      Vamos adicionar uma fonte de dados 1C externa. Você precisa ir ao configurador, as fontes de dados externas estão localizadas na janela de configuração, na parte inferior da árvore.

      1. Conexão

      Vamos adicionar uma nova fonte de dados externa 1C, nomeá-la arbitrariamente.

      O banco de dados consiste em tabelas. Precisamos adicioná-los dentro da fonte de dados externa adicionada. Clique com o botão direito nele e selecione Adicionar tabela.

      Na primeira vez, ele solicitará que você forneça uma string de conexão. Pode ser inserido manualmente ou gerado clicando no botão “…”.

      No nosso caso específico, selecionaremos “SQL Server” como driver

      Vamos preencher os parâmetros básicos para conexão com SQL. O nome do servidor pode ser inserido ou selecionado na lista.

      1C se conectará ao SQL e se oferecerá para selecionar um banco de dados específico da lista.

      Depois disso, 1C exibirá uma lista de tabelas deste banco de dados e suas colunas. Você precisa marcar as caixas para selecionar as tabelas necessárias.

      Tabelas e colunas serão adicionadas. Os nomes serão os mesmos definidos no banco de dados remoto. Em 1C você pode renomeá-los (em propriedades).

      Aqui está um exemplo da tabela adicionada:

      Aqui está um exemplo de uma coluna adicionada:

      Para que a plataforma 1C funcione com uma tabela externa da mesma forma que funciona com diretórios 1C, você pode especificar parâmetros adicionais na tabela:

      • Na propriedade Key Field, especifique uma das colunas que fornecerá uma identificação única da linha; se várias linhas fornecerem exclusividade, então este método não funciona (análogo ao campo Código)
      • Na propriedade Campo Apresentação – especifique uma das colunas que fornecerá uma breve representação da linha (análoga ao campo Nome)
      • Na propriedade de tipo de dados da tabela, especifique Dados do objeto.

      2. Ver

      A conexão com a base remota não é feita automaticamente. Para conectar, você precisa selecionar um menu padrão.

      Na ramificação Padrão existe um comando especial Gerenciando fontes de dados externas, que permite especificar parâmetros de conexão (específicos para o modo 1C Enterprise) e estabelecer uma conexão.

      Primeiro você precisa especificar os parâmetros para conexão ao banco de dados.

      Quando você fez as configurações no configurador, ele mostrou a string de conexão como resultado. Você pode vê-lo novamente clicando em Adicionar Tabela no configurador novamente.

      Copie a string de conexão e especifique-a no modo 1C Enterprise.

      Depois disso, você precisa fazer a conexão real.

      Após a conexão ser feita, é possível trabalhar com listas.

      3. Use na linguagem 1C

      A conexão também pode ser feita a partir do código do programa na linguagem 1C.

      Os parâmetros de conexão são especificados da seguinte forma:
      ConnectionParameters = ExternalDataSources.SourceNameConfigurator.GetGeneralConnectionParameters();

      ConnectionParameters.AuthenticationStandard = Verdadeiro;
      ConnectionParameters.UserName = "sa";
      ConnectionParameters.Password = "senha";
      ConnectionParameters.ConnectionString = “string de conexão do configurador”;
      ConnectionParameters.DBMS = "MSSQLServer";

      ExternalDataSources.SourceNameConfigurator.SetGeneralConnectionParameters(ConnectionParameters);
      ExternalDataSources.SourceNameConfigurator.SetUserConnectionParameters(UserName(), Parâmetros);
      ExternalDataSources.SourceNameConfigurator.SetSessionConnectionParameters(Parâmetros);
      ExternalDataSources.SourceNameConfigurator.SetConnection();

      Você pode consultar dados de um banco de dados usando um arquivo . Um exemplo de texto de consulta para uma fonte externa OurExternalSource e tabelas ExternalSource Table:

      ESCOLHER
      TabelaOrigemExterna.FieldName
      DE
      ExternalDataSource.OurExternalSource.Table.ExternalSourceTable"

      Fonte de dados externa 1C - trabalhando com arquivo Excel

      Vamos tentar outra opção - trabalhar com um arquivo Excel por meio de uma fonte de dados 1C externa.

      Vamos criar um arquivo Excel simples.

      Vamos adicionar uma fonte externa, nomeá-la arbitrariamente como FileExcel. Vamos adicionar a tabela “Sheet1$” a ela. Como você pode ver facilmente, este é o nome da planilha no Excel com a adição do símbolo “$”.

      Como no caso do SQL, vamos adicionar colunas. Eles podem ser adicionados manualmente. É importante garantir que os tipos de colunas adicionadas correspondam, caso contrário, você poderá receber posteriormente um erro como “Incompatibilidade de tipo de dados”.

      Para a coluna você precisa especificar um nome em 1C e um nome na fonte de dados.

      Existe um recurso para Excel (erro como “Poucos parâmetros. 3 necessários”):

      • Se a primeira linha de uma tabela Excel contiver nomes de colunas, basta indicar o nome desta coluna, por exemplo “Código”.
      • Caso contrário, você precisa especificar o nome completo com o nome da tabela “Sheet1$.Code”, mas adicionar “HDR=NO;” nos parâmetros.

      Os parâmetros de conexão para o arquivo Excel são assim:

      • Arquivos XLSX (Office 2007 e posterior)
        Driver=(Driver Microsoft Excel (*.xls, *.xlsx, *.xlsm, *.xlsb));DBQ=D:\FileExcel.xlsx;
      • Arquivos XLS (anteriormente)
        Driver=(Driver Microsoft Excel (*.xls)); IDDoMotorista=790; DBQ=D:\ArquivoExcel.xls;
        Você deve especificar seu próprio nome e caminho para o arquivo.

Na plataforma versão 8.3.5.1068 (e posterior), tornou-se possível adicionar, alterar e excluir dados em fontes externas usando o software 1C. Exemplos desse recurso são apresentados neste artigo.

Para tornar possível a gravação em fontes externas, a empresa 1C adicionou novas propriedades às tabelas de dados e campos de fontes externas:

  • Para toda a tabela - propriedade Somente leitura. Somente leitura = Verdadeiro significa que é impossível alterar os dados desta tabela;
  • Para campos de tabela individuais - propriedades Somente leitura, PermitirNulo E Valor de preenchimento:
    • Somente leitura = Verdadeiro significa que é impossível alterar os dados neste campo;
    • PermitirNulo = Verdadeiro significa que um valor pode ser escrito neste campo NULO;
    • Valor de preenchimento contém o valor padrão deste campo (se existir).

Você (ao descrever tabelas manualmente) ou a plataforma (ao criar tabelas usando um designer) pode usar essas propriedades da seguinte maneira.

  • Somente leitura = Verdadeiro definir, por exemplo, para visualizações, tabelas obtidas com base em uma expressão (resultado da função) e similares. Os dados nessas tabelas não podem ser alterados;
  • Somente leitura = Verdadeiro especifique para campos que são definidos automaticamente ( AUTOINCREMENTO), campos calculados e similares. Os dados nesses campos não podem ser alterados;
  • PermitirNulo = Verdadeiro definido para todos os campos, exceto campos-chave e aqueles que são descritos em uma fonte externa como NÃO NULO;
  • Valor de preenchimento campos devem ser definidos no caso em que a fonte externa especifica o valor padrão deste campo (valor PADRÃO).

Você pode adicionar, alterar e excluir dados em fontes externas usando a linguagem integrada ou de forma interativa. A linguagem integrada usa os seguintes métodos de gerenciador de tabelas para isso:

  • CriarRecordSet()- para tabelas não-objetos;
  • Novo método CriarObjeto()- para tabelas de objetos.

Assim, os objetos DataSourceTableRecordSetExterno E ObjetoExternoDataSourceTable novos métodos apareceram Escrever() E Excluir().

Adicionando dados

Ao adicionar dados a uma fonte externa, você cria um objeto (ou conjunto de registros), define valores de campo e grava. No entanto, existem alguns recursos que é útil conhecer.

Por exemplo, se você tentar definir o valor de um campo que possui Somente leitura = Verdadeiro, um erro será gerado. E ao escrever diretamente no banco de dados na expressão INSERIR esses campos serão ignorados. Os campos restantes contêm os valores que você atribuiu a eles. Portanto os valores Nulo e os valores padrão devem ser atribuídos explicitamente aos campos.

  • eu ia(AllowNull = Verdadeiro);
  • nome(AllowNull = Verdadeiro);
mFeature = ExternalDataSources.TableIm.shop_feature.CreateObject();

mCaracterística.id = Código; Escrever() mCaracterística.nome = Nome; mCharacteristic.Write(); Execução de declaração INSERIR fará com que o manipulador de eventos seja chamado primeiro Antes de gravar.

, então uma gravação física na tabela de origem externa é executada ( INSERIR), então o manipulador de eventos será chamado Ao gravar Você pode fazer o seguinte com o campo-chave da tabela de origem externa. Se um campo-chave puder ser alterado, você definirá “manualmente” seu valor antes de escrever. Se a alteração do campo-chave for proibida, a plataforma receberá a chave de forma independente mCharacteristic.Write(); ou imediatamente depois. Você pode interferir neste processo usando o método Antes de gravar).

DefinirLinkNovo()

antes da gravação física (no manipulador de eventos ) ou imediatamente após a gravação física (no manipulador de eventos.

Alterando dados

Quando os dados mudam, os valores de todos os campos da tabela que possuem Somente leitura = falso E MFeature = ExternalDataSources.TableIm.shop_feature.FindByField("id",código); mObject = mCharacteristic.GetObject(); mObject.name = Nome; mObject.Write();.

Se você precisar gravar apenas alguns campos, poderá especificar uma lista deles diretamente da linguagem integrada usando os métodos

SetWritableFields() GetWrittenFields().

Excluindo dados

A exclusão de dados exclui diretamente uma linha de uma tabela de banco de dados. Neste caso, a busca por referências ao objeto que está sendo excluído não é realizada. Se tal funcionalidade for necessária, você mesmo pode programá-la no manipulador de eventos

A leitura de dados de fontes externas, como antes, é realizada fora de uma transação e, ao escrever, a plataforma abre uma transação implícita. Ao mesmo tempo, você pode realizar leitura e gravação em transações explícitas usando métodos de objeto Gerenciador de DataSourceExterno:

  • IniciarTransação();
  • ConfirmarTransação();
  • Cancelar transação().

Fechaduras

  • Auto;
  • Gerenciou;
  • Automático e controlado.

bem como a propriedade da tabela de origem externa Nível de isolamento de transação:

Além disso, você pode definir independentemente o nível de bloqueio no método IniciarTransação().

Adicionei exemplos ao artigo padrão. Se tiver mais tempo, adicionarei mais exemplos.

Fontes de dados externas 1C - um objeto de metadados relativamente novo 1C 8.3 e 8.2, com o qual é possível conectar-se a fontes de dados externas 1C: tabelas SQL, Excel, Access, FoxPro (dbf), outro banco de dados 1C, Oracle, Paradox (db) , - e até mesmo lendo arquivos txt/csv simples.

Isto dá muitas possibilidades de interoperabilidade com outros sistemas. Vamos dar uma olhada mais de perto.

Configurando fontes de dados externas em 1C 8

A configuração de fontes externas é individual para cada tipo de sistema. Mas, como regra, a parte geral da configuração é a mesma - esta é a configuração da string de conexão:

Obtenha 267 videoaulas em 1C gratuitamente:

Se a string de conexão for especificada corretamente, o sistema solicitará que você selecione a tabela desejada no banco de dados. Como resultado, obteremos uma tabela pronta na qual podemos especificar o campo-chave (campo único) e o campo de apresentação (como o registro será refletido em 1C):

Usando fontes de dados externas em 1C 8.3

Fontes de dados externas em 1C podem ser usadas como outras tabelas de banco de dados. A plataforma gera automaticamente um formulário para eles, caso nenhum seja especificado. Também é possível utilizar dados de fontes externas em consultas.