Contactos

Nuevas funciones para trabajar con cadenas. Nuevas funciones para trabajar con cadenas Funciones para trabajar con cadenas en 1c

Notas de A través del espejo

18/08/2014 Nuevas funciones para trabajar con cadenas

Implementado en la versión 8.3.6.1977.

Hemos ampliado el conjunto de funciones diseñadas para trabajar con cadenas. Hicimos esto para brindarle herramientas más avanzadas para analizar datos de cadenas. Las nuevas funciones serán convenientes y útiles en tareas tecnológicas de análisis de texto. En tareas relacionadas con el análisis de texto que contiene datos en formato formateado. Podría ser un análisis de algunos archivos recibidos del equipo o, por ejemplo, un análisis de un registro tecnológico.

Podrías realizar todas las acciones que realizan nuevas funciones antes. Utilizando algoritmos más o menos complejos escritos en un lenguaje integrado. Por lo tanto, las nuevas funciones no ofrecen capacidades fundamentalmente nuevas. Sin embargo, le permiten reducir la cantidad de código y hacerlo más simple y comprensible. Además, te permiten acelerar la ejecución de acciones. Porque las funciones implementadas en la plataforma funcionan, por supuesto, más rápido que un algoritmo similar escrito en un lenguaje integrado.

Función de formato StrTemplate()

Esta función sustituye parámetros en una cadena. La necesidad de realizar esta conversión surge a menudo, por ejemplo, al mostrar mensajes de advertencia. La sintaxis de esta función es la siguiente:

PlantillaStr(<Шаблон>, <Значение1-Значение10>)

<Шаблон>- esta es la cadena en la que necesitas sustituir las representaciones de parámetros.

<Значение1> , ... <Значение10>- estos son parámetros (máximo diez), cuyas representaciones deben sustituirse en la cadena.

Para indicar un lugar específico en la plantilla donde desea realizar la sustitución, debe usar marcadores como %1, ... %10. La cantidad de marcadores involucrados en la plantilla y la cantidad de parámetros que contienen valores deben coincidir.

Por ejemplo, el resultado de ejecutar dicho operador:

habrá una línea:

Error de datos en la línea 2 (tipo de fecha requerida)

Función para trabajar con cadenas StrCompare()

Esta función compara dos cadenas sin distinguir entre mayúsculas y minúsculas. Por ejemplo, así:

Podrías realizar la misma acción antes usando el objeto. Comparación de valores:

Sin embargo, usar la nueva función parece más fácil. Y además de esto, una función, a diferencia de un objeto. Comparación de valores, funciona tanto en el cliente ligero como en el cliente web.

Funciones para trabajar con cadenas StrStartsWith(), StrEndsAt()

Estas funciones determinan si una cadena comienza con una subcadena específica o si una cadena termina con una subcadena específica. El algoritmo para estas funciones no es difícil de implementar en un lenguaje integrado, pero su presencia permite escribir código más limpio y comprensible. Y trabajan más rápido.

Por ejemplo, es conveniente utilizarlos en el operador. Si:

Funciones para trabajar con cadenas StrDivide(), StrConnect()

Estas funciones dividen una cadena en partes usando un delimitador específico. O viceversa, combinan varias líneas en una, insertando entre ellas el separador seleccionado. Son convenientes para crear o analizar registros y revistas tecnológicas. Por ejemplo, puede analizar fácilmente una entrada de registro tecnológico en partes adecuadas para un análisis posterior:

Función para trabajar con cadenas StrFind()

En lugar de la antigua función Encontrar() Hemos implementado una nueva función que tiene capacidades adicionales:

  • Buscar en diferentes direcciones (desde el principio, desde el final);
  • Buscar desde una posición específica;
  • Busque una ocurrencia con un número específico (segundo, tercero, etc.).

De hecho, duplica las capacidades de la función anterior. Esto se hace para mantener la compatibilidad con módulos compilados en versiones anteriores. Función antigua Encontrar() Se recomienda no volver a utilizar.

A continuación se muestra un ejemplo que utiliza las nuevas capacidades de búsqueda. La búsqueda inversa es útil cuando necesita la última parte de una cadena formalizada, como el nombre completo del archivo en una URL. Y buscar desde una posición específica ayuda en los casos en que necesita buscar en un fragmento conocido y no en toda la línea.

Implementado en la versión 8.3.6.1977.

Hemos ampliado el conjunto de funciones diseñadas para trabajar con cadenas. Hicimos esto para brindarle herramientas más avanzadas para analizar datos de cadenas. Las nuevas funciones serán convenientes y útiles en tareas tecnológicas de análisis de texto. En tareas relacionadas con el análisis de texto que contiene datos en formato formateado. Podría ser un análisis de algunos archivos recibidos del equipo o, por ejemplo, un análisis de un registro tecnológico.

Podrías realizar todas las acciones que realizan nuevas funciones antes. Utilizando algoritmos más o menos complejos escritos en un lenguaje integrado. Por lo tanto, las nuevas funciones no ofrecen capacidades fundamentalmente nuevas. Sin embargo, le permiten reducir la cantidad de código y hacerlo más simple y comprensible. Además, te permiten acelerar la ejecución de acciones. Porque las funciones implementadas en la plataforma funcionan, por supuesto, más rápido que un algoritmo similar escrito en un lenguaje integrado.

Función de formato StrTemplate()

Esta función sustituye parámetros en una cadena. La necesidad de realizar esta conversión surge a menudo, por ejemplo, al mostrar mensajes de advertencia. La sintaxis de esta función es la siguiente:

PlantillaStr(<Шаблон>, <Значение1-Значение10>)

<Шаблон>- esta es la cadena en la que necesitas sustituir las representaciones de parámetros.

<Значение1> , ... <Значение10>- estos son parámetros (máximo diez), cuyas representaciones deben sustituirse en la cadena.

Para indicar un lugar específico en la plantilla donde desea realizar la sustitución, debe usar marcadores como %1, ... %10. La cantidad de marcadores involucrados en la plantilla y la cantidad de parámetros que contienen valores deben coincidir.

Por ejemplo, el resultado de ejecutar dicho operador:

habrá una línea:

Error de datos en la línea 2 (tipo de fecha requerida)

Función para trabajar con cadenas StrCompare()

Esta función compara dos cadenas sin distinguir entre mayúsculas y minúsculas. Por ejemplo, así:

Podrías realizar la misma acción antes usando el objeto Comparación de valores:

Sin embargo, usar la nueva función parece más fácil. Y además, la función, a diferencia del objeto Comparación de valores, funciona tanto en el cliente ligero como en el cliente web.

Funciones para trabajar con cadenas StrStartsWith(), StrEndsAt()

Estas funciones determinan si una cadena comienza con una subcadena específica o si una cadena termina con una subcadena específica. El algoritmo para estas funciones no es difícil de implementar en un lenguaje integrado, pero su presencia permite escribir código más limpio y comprensible. Y trabajan más rápido.

Por ejemplo, son convenientes de usar en la declaración If:

Funciones para trabajar con cadenas StrDivide(), StrConnect()

Estas funciones dividen una cadena en partes usando un delimitador específico. O viceversa, combinan varias líneas en una, insertando entre ellas el separador seleccionado. Son convenientes para crear o analizar registros y revistas tecnológicas. Por ejemplo, puede analizar fácilmente una entrada de registro tecnológico en partes adecuadas para un análisis posterior:

Función para trabajar con cadenas StrFind()

En lugar de la antigua función Find(), hemos implementado una nueva función que tiene capacidades adicionales:

  • Buscar en diferentes direcciones (desde el principio, desde el final);
  • Buscar desde una posición específica;
  • Busque una ocurrencia con un número específico (segundo, tercero, etc.).

De hecho, duplica las capacidades de la función anterior. Esto se hace para mantener la compatibilidad con módulos compilados en versiones anteriores. Se recomienda que ya no utilice la antigua función Buscar().

A continuación se muestra un ejemplo que utiliza las nuevas capacidades de búsqueda. La búsqueda inversa es útil cuando necesita la última parte de una cadena formalizada, como el nombre completo del archivo en una URL. Y buscar desde una posición específica ayuda en los casos en que necesita buscar en un fragmento conocido y no en toda la línea.

Las filas en 1C 8.3 en el lenguaje integrado 1C representan valores de un tipo primitivo Línea. Los valores de este tipo contienen una cadena Unicode de longitud arbitraria. Las variables de tipo cadena son un conjunto de caracteres entre comillas.

Ejemplo 1. Creemos una variable de cadena con texto.

StringVariable = "¡Hola mundo!";

Funciones para trabajar con cadenas en 1s 8.3

Esta sección proporcionará las funciones principales que le permitirán cambiar líneas en 1c o analizar la información contenida en ellas.

Longitud de cadena

Longitud de cadena (<Строка>) . Devuelve el número de caracteres contenidos en la cadena pasada como parámetro.

Ejemplo 2. Contemos el número de caracteres en la línea "¡Hola mundo!"

Cadena = "¡Hola mundo!"; NúmerodeCaracteres = StrLength(String); Informe (Número de caracteres);

El resultado de ejecutar este código será la visualización del número de caracteres en la línea: 11.

AbrL

AbrL(<Строка>) . Recorta los caracteres no significativos a la izquierda del primer carácter significativo de la cadena.
Personajes secundarios:

  • espacio;
  • espacio irrompible;
  • tabulación;
  • retorno de carro;
  • traducción de líneas;
  • traducción del formulario (página).

Ejemplo 3. Elimine todos los espacios del lado izquierdo de la línea "¡mundo!" y agregue la línea "Hola".

Cadena = Abreviatura ("mundo!"); Cadena = "Hola"+Cadena; Informe (cadena);

El resultado de ejecutar este código será la visualización de la línea "¡Hola mundo!" en la pantalla.

Abreviado

Abreviatura(<Строка>) . Recorta los caracteres no significativos a la derecha del primer carácter significativo de la cadena.

Ejemplo 4. Forma a partir de las líneas "¡Hola" y "paz!" la frase "¡Hola mundo!"

Línea = Abreviatura("Hola ")+" "+ Abreviatura(" ¡mundo!"); Informe (cadena);

AbbrLP

AbbrLP(<Строка>) . Recorta los caracteres no significativos a la derecha del primer carácter significativo de la cadena y también recorta los caracteres no significativos a la izquierda del primer carácter significativo de la cadena. Esta función se utiliza con más frecuencia que las dos anteriores, ya que es más universal.

Ejemplo 5. Elimine los caracteres insignificantes a la izquierda y a la derecha del nombre de la contraparte.

Contraparte = Directorios Contrapartes.Buscar por detalles("TIN", "0777121211"); AccountObject = Cuenta.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

un leon

Un leon(<Строка>, <ЧислоСимволов>) . Obtiene los primeros caracteres de la cadena, el número de caracteres se especifica en el parámetro Número de caracteres.

Ejemplo 6. Dejar entrar la estructura. Empleado contener el nombre, apellido y patronímico del empleado. Obtenga una cadena con apellido e iniciales.

NombreInicial = Lev(Empleado.Nombre, 1); Inicial patronímico = Leo(Empleado. Patronímico, 1); Nombre Completo = Empleado.Apellido + " " + Inicial del Nombre + "." + Inicial del segundo nombre + ".";

Bien

Bien(<Строка>, <ЧислоСимволов>) . Obtiene los últimos caracteres de una cadena, el número de caracteres especificados en el parámetro Número de caracteres. Si el número de caracteres especificado excede la longitud de la cadena, se devuelve la cadena completa.

Ejemplo 7. Deje que se escriba una fecha en el formato “aaaammdd” al final de una variable de cadena, obtenga una cadena con la fecha y conviértala a tipo fecha.

Cadena = "Fecha actual: 20170910"; StringDate = Derechos(String, 8); Fecha = Fecha(StringDate);

Miércoles

Miércoles(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Obtiene una subcadena de la cadena pasada como parámetro Línea, comenzando por el carácter cuyo número se especifica en el parámetro Número inicial y la longitud pasada al parámetro Número de caracteres. La numeración de caracteres en una línea comienza desde 1. Si en el parámetro Número inicial se especifica un valor menor o igual a cero, entonces el parámetro toma el valor 1. Si el parámetro Número de caracteres no se especifica, se seleccionan los caracteres hasta el final de la línea.

Ejemplo 8. Deje que la variable de cadena que comienza en la novena posición contenga el código de región, debe obtenerlo y escribirlo en una línea separada.

Cadena = "Región: 99 Moscú"; Región = Promedio(Cadena, 9, 2);

Buscar página

StrBuscar(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Busca una subcadena especificada en una cadena y devuelve el número de posición del primer carácter de la subcadena encontrada. Veamos los parámetros de esta función:

  • Línea. Cadena fuente;
  • Buscar subcadena. Subcadena de búsqueda;
  • Dirección de búsqueda. Especifica la dirección para buscar una subcadena en una cadena. Puede tomar valores:
    • Dirección de búsqueda. Desde el inicio;
    • Búsqueda. Dirección final;
  • Posición inicial. Especifica la posición en la cadena en la que comienza la búsqueda;
  • Número de ocurrencias. Especifica el número de aparición de la subcadena buscada en la cadena de origen.

Ejemplo 9. En la línea "¡Hola mundo!" Determine la posición de la última aparición del carácter "y".

PositionNumber = StrFind("¡Hola mundo!", "y", SearchDirection.End); Informe (Número de posición);

El resultado de ejecutar este código será mostrar el número de la última aparición del símbolo “y”: 9.

VReg

VReg(<Строка>) . Convierte todos los caracteres de la cadena especificada en 1s8 a mayúsculas.

Ejemplo 10: convierta la cadena "¡hola mundo!" a mayúsculas.

StringVreg = VReg("¡hola mundo!"); Informe (StringVreg);

El resultado de ejecutar este código será la visualización de la línea "¡HOLA MUNDO!"

NReg

NReg(<Строка>) . Convierte todos los caracteres de la cadena especificada en 1s 8 a minúsculas.

Ejemplo 11: Convierta la cadena "¡HOLA MUNDO!" a minúsculas.

StringNreg = NReg("¡HOLA MUNDO!"); Informe (StringVreg);

El resultado de ejecutar este código será la visualización de la línea "¡hola mundo!"

Treg

TReg(<Строка>) . Convierte una cadena de la siguiente manera: el primer carácter de cada palabra se convierte a mayúsculas, los caracteres restantes de la palabra se convierten a minúsculas.

Ejemplo 12: Escriba en mayúscula las primeras letras de las palabras en la línea "¡hola mundo!"

StringTreg = TReg("¡hola mundo!"); Informe (StringTreg);

El resultado de ejecutar este código será la visualización de la línea "¡Hola mundo!"

Símbolo

Símbolo(<КодСимвола>) . Obtiene un carácter por su código Unicod.

Ejemplo 13. Agregue izquierda y derecha a la línea "¡Hola mundo!" símbolo ★

StringWithStars = Símbolo("9733")+"¡Hola mundo!"+Símbolo("9733"); Informe (StringWithStars);

El resultado de ejecutar este código será la visualización de la línea “★Hello World!★”

Código de símbolo

Código de símbolo (<Строка>, <НомерСимвола>) . Obtiene el código de carácter Unicode de la cadena especificada en el primer parámetro, ubicada en la posición especificada en el segundo parámetro.

Ejemplo 14. Descubra el código del último carácter de la línea "¡Hola mundo!"

Cadena = "¡Hola mundo!"; Código de carácter = Código de carácter (Cadena, Longitud de cadena (Cadena)); Notificar (Código de carácter);

El resultado de ejecutar este código será la visualización del código de símbolo “!” - 33.

linea vacia

Línea vacía (<Строка>) . Comprueba si la cadena consta únicamente de caracteres insignificantes, es decir, si está vacía.

Ejemplo 15. Compruebe si una cadena que consta de tres espacios está vacía.

Vacío = Cadena Vacía(" "); Informe (vacío);

El resultado de ejecutar este código será la visualización de la palabra "Sí" (una expresión de cadena de un valor lógico Verdadero).

Reemplazar página

StrReemplazar(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Encuentra todas las apariciones de la subcadena de búsqueda en la cadena de origen y la reemplaza con la subcadena de reemplazo.

Ejemplo 16. En la línea "¡Hola mundo!" sustituir la palabra “Paz” por la palabra “Amigos”.

String = StrReplace("¡Hola mundo!", "Mundo", "Amigos"); Informe (cadena);

El resultado de ejecutar este código será la visualización de la línea "¡Hola amigos!"

StrNumberLines

StrNumberRow(<Строка>) . Le permite contar el número de líneas en una cadena de varias líneas. Para ir a una nueva línea en 1s 8, use el símbolo PD(carácter de nueva línea).

Ejemplo 17. Determine el número de líneas del texto:
"Primera linea
Segunda linea
Tercera línea"

Número = StrNumberString("Primera línea"+Caracteres.PS +"Segunda línea"+Símbolos.PS +"Tercera línea"); Numero de reporte);

El resultado de ejecutar este código será la visualización del número de líneas en el texto: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Obtiene una línea en una cadena multilínea por su número. La numeración de líneas comienza desde 1.

Ejemplo 18. Obtenga la última línea del texto:
"Primera linea
Segunda linea
Tercera línea"

Texto = "Primera línea" + Símbolos. PS + "Segunda línea" + Símbolos. PS + "Tercera línea"; Última fila = StrGetRow(Texto, StrNumberLines(Texto)); Informe (Última línea);

El resultado de ejecutar este código será la visualización de la línea "Tercera línea".

Número de páginaOcurrencias

StrNumberOcurrencias(<Строка>, <ПодстрокаПоиска>) . Devuelve el número de apariciones de la subcadena especificada en una cadena. La función distingue entre mayúsculas y minúsculas.

Ejemplo 19. Determina cuántas veces aparece la letra “c” en la línea “Líneas en 1s 8.3 y 8.2”, independientemente de su caso.

Línea = "Líneas en 1s 8.3 y 8.2"; NúmeroOcurrencias = StrNumberOcurrencias(Vreg(Cadena), "C"); Informe (Número de ocurrencias);

El resultado de ejecutar este código será la visualización del número de ocurrencias: 2.

La página comienza con

StrStartsWith(<Строка>, <СтрокаПоиска>) . Comprueba si la cadena pasada en el primer parámetro comienza con la cadena del segundo parámetro.

Ejemplo 20. Determinar si el TIN de la contraparte seleccionada comienza con el número 1. Dejemos entrar la variable Contraparte Contrapartes.

TIN = Contraparte.TIN; StartsUNits = StrStartsWith(TIN, "1"); Si comienza con unidades Entonces //Tu código EndIf;

Fin de página activado

Cuerdas con (<Строка>, <СтрокаПоиска>) . Comprueba si la cadena pasada en el primer parámetro termina con la cadena del segundo parámetro.

Ejemplo 21. Determinar si el TIN de la contraparte seleccionada termina en el número 2. Dejemos entrar la variable Contraparte se almacena una referencia a un elemento del directorio Contrapartes.

TIN = Contraparte.TIN; TerminaConDos = StrEndsWith(TIN, "2"); If EndsInTwo Then //Tu código EndIf;

División de página

StrDivid(<Строка>, <Разделитель>, <ВключатьПустые>) . Divide una cadena en partes utilizando los caracteres delimitadores especificados y escribe las cadenas resultantes en una matriz. El primer parámetro almacena la cadena de origen, el segundo contiene la cadena que contiene el delimitador y el tercero indica si las cadenas vacías deben escribirse en la matriz (de forma predeterminada Verdadero).

Ejemplo 22. Tengamos una cadena que contenga números separados por el símbolo “;”, obtengamos una matriz de números de la cadena.

Cadena = "1; 2; 3"; Matriz = StrDivide(Cadena, ";"); Para Count = 0 By Array.Quantity() - 1 intento de ciclo Array[Count] = Number(AbbrLP(Array[Count])); Matriz de excepciones[Sch] = 0; EndAttemptsEndCycle;

Como resultado de la ejecución se obtendrá una matriz con números del 1 al 3.

PáginaConectar

StrConectar(<Строки>, <Разделитель>) . Convierte la matriz de cadenas del primer parámetro en una cadena que contiene todos los elementos de la matriz separados por el delimitador especificado en el segundo parámetro.

Ejemplo 23. Usando la matriz de números del ejemplo anterior, obtenga la cadena original.

Para Cuenta = 0 Por Array.Quantity() - 1 Ciclo Array[Act] = String(Array[Act]); Fin del ciclo; Fila = StrConnect(Matriz, "; ");

Las capacidades básicas de un lenguaje de programación suelen incluir trabajar con números y cadenas. Por lo general, estas características están codificadas en el código del compilador (o se implementan las clases "base" del lenguaje de programación).

En 1C, la capacidad de trabajar con cadenas está programada en la propia plataforma. Hoy veremos las características de trabajar con cadenas 1C en programas en el lenguaje 1C integrado.

Valor de línea 1C

1. Empecemos por lo más sencillo. Crear una variable y asignarle un valor de cadena constante se ve así en 1C:

Variable = "¡Hola mundo!";

Si necesita especificar un carácter de comilla en un valor de cadena 1C constante, debe duplicarlo ""

Variable = "¡Hola mundo"!;

2. El salto de línea 1C se puede especificar de dos formas a la vez. El primero es usar el símbolo |

Variable = "Hola,
| ¡mundo! ";

El segundo es utilizar la enumeración del sistema Símbolos. Le permite agregar saltos de línea 1C y otros caracteres que no se imprimen, como TAB.

Variable = "Hola" + Símbolos.PS + "¡paz!";

3. Las configuraciones en 1C se pueden desarrollar no solo para un idioma (ruso, inglés u otro), sino también para varios idiomas simultáneamente. En este caso, el idioma utilizado actualmente se selecciona en la parte inferior de la ventana 1C.

La lista de idiomas se encuentra en la ventana de configuración en la rama General/Idiomas. Cada idioma tiene un identificador corto como ru o eng.

Está claro que al programar dicha configuración, las líneas 1C también pueden ser multilingües. Para hacer esto, es posible crear dicha línea 1C especificando a través de; opciones por identificador de idioma:

Variable = "ru=""¡Hola mundo! ""; es=""¡Hola mundo! """;

Si usa la línea 1C formada de esta manera como de costumbre, será lo que está escrito en ella. Para que el sistema lo divida en dos opciones y use la deseada, debe usar la función НStr():

//corregir para configuraciones bilingües
Informe(NStr(Variable));

Accesorios con línea tipo 1C.

El atributo es un campo en el directorio/documento 1C. Se diferencia de una variable en un programa en lenguaje 1C en que para el atributo se indica con precisión su tipo (número, cadena 1C, etc.). Si necesita refrescar su memoria sobre qué es un accesorio, mire la lección a continuación.

Si especifica el tipo de atributo: línea 1C, deberá especificar adicionalmente los parámetros.

Las líneas 1C tienen una longitud ilimitada (indicada como longitud = 0) y una longitud limitada, lo que indica el número exacto de caracteres. Las filas 1C de longitud ilimitada se almacenan en una tabla SQL separada, por lo que su uso es menos productivo que las limitadas.

Es por eso que el uso de cadenas 1C de longitud ilimitada tiene sus limitaciones: no es posible utilizarlas en todas partes. Por ejemplo, no está permitido como número de documento, código de referencia o medida.

Trabajar con cuerdas 1C

Hay varias funciones integradas en la plataforma 1C para trabajar con cadenas.

  • AbbrLP (“¡Increíble, pero cierto!”)
    Elimina espacios adicionales de la línea 1C. También se puede utilizar para convertir cualquier tipo a una cadena 1C (por ejemplo, números).
  • Variable = "Vasya" + AbbrLP(" más") + "Olya"; //habrá "Vasya más Olya"
    Un ejemplo de suma de varios valores de cadena 1C. El resultado será una línea 1C.
  • Variable = Lev("Música", 2); //será "Mu"
    Variable = Medio("Música", 2, 2); //habrá "amenaza"
    Variable = Derechos("Música", 2); //habrá "ka"
    Varias opciones para obtener una subcadena de una cadena 1C.
  • Variable = Buscar("Música", "zy"); //serán 3
    Busque una subcadena en la cadena 1C, comenzando con el carácter 1.
  • Variable = StrLength("Música"); //serán 6
    Devuelve el número de caracteres en la línea 1C.
  • Informe("Hola") //en la ventana de mensaje en la parte inferior de la ventana 1C
    Alerta("Hola") //diálogo emergente
    Estado("Hola") //en la línea de visualización de estado en la parte inferior izquierda
    .

Llevar objetos a la línea 1C

Como sabes, el formato más popular para intercambiar información estructurada en la actualidad es XML. Incluso la última versión de MS Office Word y Excel guarda archivos en este formato (docx y xlsx, respectivamente, cambie la extensión a zip, ábralo en un archivador).

La plataforma 1C para el intercambio de datos ofrece varias opciones, la principal de las cuales también es XML.

1. El método más sencillo es utilizar la función Abreviatura() o Cadena(). Puede utilizar la función REPRESENTACIÓN() en el cuerpo de la solicitud. El resultado de su acción es el mismo: generan una representación de cadena de cualquier objeto 1C para el usuario.

Para un directorio de forma predeterminada, este será su nombre. Para un documento: nombre del documento, número y fecha.

2. Cualquier objeto 1C (con restricciones) se puede convertir a XML y viceversa. El proceso de conversión se llama serialización.

StringViewXml = XMLString(Valor); //obtener XML del valor 1C
Valor1C = XMLValue(Tipo("DirectoryLink.Nomenclature"),TypeStringXml); //obtiene el valor 1C de la cadena XML, debe especificar el tipo 1C que debe recibirse

3. Existe una forma propia de la plataforma 1C de convertir cualquier objeto 1C en una cadena. Migró desde la versión 1C 7.7. Otros programas no comprenden este formato, pero otros 1C lo entienden, lo que facilita su uso para el intercambio entre bases de datos 1C.

Fila = ValorInRowInt(Valor1C); //obtenemos la cadena 1C del valor 1C
ValueVFile("C:\MyFile.txt", Valor1C); //otra opción, obtenemos un archivo con una cadena guardada del valor 1C
Valor1C = ValorFromStringInt(Cadena); //volver de la línea 1C
Valor1C = ValorArchivo("C:\MiArchivo.txt"); //volver del archivo

Editar líneas 1C en el formulario

Además de trabajar con cadenas 1C en un programa en lenguaje 1C, por supuesto, me gustaría que el usuario pudiera editarlas. Hay varias posibilidades para esto:

1. La forma más sencilla es solicitar el ingreso de una línea 1C a pedido. Este método se utiliza cuando se enseña programación 1C, en la vida se usa con mucha menos frecuencia (¡pero se usa!).

Variable = "";
Fila = EnterValue(Variable, "Ingrese el nombre completo");

2. Para mostrar los detalles de un objeto 1C (directorio/documento) o los detalles del formulario (ver), se utiliza con mayor frecuencia un campo de entrada. Esta es la herramienta más común en 1C para que el usuario trabaje con campos de edición.

3. Las capacidades del campo de entrada se pueden ampliar (ver propiedades del campo de entrada, hacer clic derecho sobre él, más detalles):

  • Casilla de verificación Modo de edición multilínea
  • Casilla de edición avanzada (disponible si la casilla anterior está marcada)
  • Casilla de verificación Modo de contraseña (ver).

4. Si todas las capacidades del campo de entrada no son suficientes para usted, hay un editor incorporado. Para agregarlo al formulario, debe agregar un campo de documento de texto al menú Formulario/Insertar control. En sus propiedades puede especificar su modo de funcionamiento: la propiedad Extensión.

Un campo de documento de texto no se puede asociar directamente con datos. Es necesario escribir una función en el controlador de eventos OnOpen() de la forma (ver):

Elementos de formulario.ElementNameTextDocumentField.SetText(StringValue); //aquí ValueString es el texto recibido, por ejemplo, del atributo

Y en el controlador de guardado, por ejemplo, en el botón Guardar, agregue un guardado:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValorLa línea aquí es el atributo donde guardamos el valor

5. En 1C versión 8.2.11, en los formularios administrados, apareció una nueva opción para representar una línea 1C: el campo Documento formateado.


De manera similar al campo de un documento de texto, debes configurarlo al abrirlo y escribirlo al guardarlo tú mismo usando el programa.

  • En el objeto 1C cuyo formulario estamos creando (directorio, documento, procesamiento, etc.), agregue un atributo con el tipo de Almacenamiento de valor
  • En la función OnReadOnServer() configuramos el texto del atributo

    //aquí el Atributo es el atributo agregado del objeto 1C
    //aquí FormattedDocument es el nombre del campo en el formulario para editar
    &En el servidor

    FormattedDocument = CurrentObject.Attributes.Get();
    Fin del Procedimiento

  • En la función BeforeWritingOnServer() o mediante el botón escribiremos el texto del campo

    &En el servidor
    Procedimiento al leer en el servidor (objeto actual)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Fin del Procedimiento

Una cadena es uno de los tipos de datos primitivos en los sistemas 1C:Enterprise 8. Variables con el tipo línea contener texto.

Escriba valores de variables línea están entre comillas dobles. Se pueden agregar varias variables de este tipo.

Per1 = "Palabra 1";
Per2 = "Palabra 2";
Por3 = Por1 + " " + Por2;

Eventualmente por3 Significará " Palabra 1 Palabra 2”.

Además, los sistemas 1C:Enterprise 8 proporcionan funciones para trabajar con cadenas. Veamos los principales:

Ingresar cadena (<Строка>, <Подсказка>, <Длина>, <Многострочность>) — la función está diseñada para mostrar un cuadro de diálogo en el que el usuario puede especificar el valor de una variable de tipo Línea. Parámetro <Строка> es obligatorio y contiene el nombre de la variable en la que se escribirá la cadena ingresada. Parámetro <Подсказка> opcional: este es el título del cuadro de diálogo. Parámetro <Длина> Opcional, muestra la longitud máxima de la cadena de entrada. El valor predeterminado es cero, lo que significa longitud ilimitada. Parámetro <Многострочность> opcional. Define el modo de entrada de texto multilínea: Verdadero: entrada de texto multilínea con separadores de línea; Falso: ingrese una cadena simple.

Puede ingresar una cadena si conoce el código de carácter en Unicode:

Símbolo(<КодСимвола>) — el código se ingresa como un número.

Letra= Símbolo(1103); // I

También hay una función inversa que le permite averiguar el código de un símbolo.

Código de símbolo (<Строка>, <НомерСимвола>) — devuelve el número Unicode del carácter especificado como un número.

Funciones de conversión de mayúsculas y minúsculas:

VReg(<Строка>) — Convierte todos los caracteres de una cadena a mayúsculas.

NReg(<Строка>) — Convierte todos los caracteres de una cadena a minúsculas.

TReg(<Строка>) — convierte todos los caracteres de la cadena a mayúsculas y minúsculas. Es decir, las primeras letras de todas las palabras se convierten a mayúsculas y las letras restantes se convierten a minúsculas.

Funciones para buscar y reemplazar caracteres en una cadena:

Encontrar(<Строка>, <ПодстрокаПоиска>) — busca el número de carácter de la aparición de la subcadena de búsqueda. Por ejemplo:

Buscar ("Cadena", "oka"); // 4

StrBuscar(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — busca el número de carácter de la aparición de la subcadena de búsqueda, el número de aparición se indica en el parámetro correspondiente. En este caso, la búsqueda comienza con el carácter cuyo número se especifica en el parámetro Posición inicial. La búsqueda es posible desde el principio o el final de la cadena. Por ejemplo:

Número4 Ocurrencias = Str Buscar ( "Defensividad", "acerca de", Dirección de búsqueda. Desde el inicio, 1, 4); // 7

StrReemplazar(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – busca todas las apariciones de la subcadena de búsqueda en la cadena de origen y la reemplaza con la subcadena de reemplazo.

StrReplace ("Cadena", "oka", ""); // Página

Línea vacía (<Строка>) – comprueba la cadena en busca de caracteres significativos. Si no hay caracteres significativos, o no hay ningún carácter, se devuelve el valor Verdadero. De lo contrario - Mentir.

StrNumberOcurrencias(<Строка>, <ПодстрокаПоиска>) – Calcula el número de apariciones de la subcadena de búsqueda en la cadena de origen.

StrNumberOcurrencias ( "Estudiar, estudiar y volver a estudiar", "estudiar" , "" ) ; // 3

PlantillaStr(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — sustituye parámetros en una cadena por número. La línea debe contener marcadores de sustitución del formato: “%1..%N”. La numeración de los marcadores comienza desde 1. Si el valor del parámetro Indefinido, se sustituye una cadena vacía.

PlantillaStr ( "Parámetro 1 = %1, Parámetro 2 = %2", "1" , "2" ) ; // Parámetro 1= 1, Parámetro 2 = 2

Funciones de conversión de cadenas:

Un leon(<Строка>, <ЧислоСимволов>) – devuelve los primeros caracteres de una cadena.

Bien(<Строка>, <ЧислоСимволов>) – devuelve los últimos caracteres de una cadena.

Miércoles(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – devuelve una cadena de longitud<ЧислоСимволов>, empezando por el símbolo<НачальныйНомер>.

AbrL(<Строка>) recorta los caracteres no significativos a la izquierda del primer carácter significativo de la cadena.

Abreviatura(<Строка>) — corta los caracteres insignificantes a la derecha del último carácter significativo de la línea.

AbbrLP(<Строка>) – corta los caracteres insignificantes a la izquierda del primer carácter significativo de la línea y a la derecha del último carácter significativo de la línea.

StrGetString(<Строка>, <НомерСтроки>) – Obtiene una cadena multilínea por número.

Otras características:

Longitud de cadena (<Строка>) – devuelve el número de caracteres de la cadena.

StrNumberRow(<Строка>) – devuelve el número de líneas en una cadena de varias líneas. Una línea se considera nueva si está separada de la anterior por un carácter de nueva línea.

StrComparar(<Строка1>, <Строка2> ) – compara dos cadenas sin distinguir entre mayúsculas y minúsculas. Una función funciona de manera similar a un objeto. Comparación de valores. Devoluciones:

  • 1 - si la primera línea es mayor que la segunda
  • -1 - si la segunda línea es mayor que la primera
  • 0 - si las cadenas son iguales

StrCompare("Primera línea", "Segunda línea"); // 1



¿Te gustó el artículo? Compártelo