Dizelerle çalışmaya yönelik işlevler 1s 8. Dizelerle çalışmaya yönelik yeni işlevler

1C sorgularında dizelerle çalışmak için birkaç mekanizma vardır. İlk olarak satırlar eklenebilir. İkinci olarak, bir dizeden bir alt dize alabilirsiniz. Üçüncüsü, dizeler, desene göre de dahil olmak üzere karşılaştırılabilir. Muhtemelen dizelerle yapılabilecek tek şey budur.

Dize ekleme

Bir sorguya satır eklemek için “+” işlemi kullanılır. Yalnızca sınırlı uzunlukta dizeler ekleyebilirsiniz.

"Ad: " + Karşı Taraflar SEÇİN. Dizinden AS Sütun 1 Adı. Karşı Taraflar Karşı Taraflar NEREDE Karşı Taraflar. Bağlantı = &Bağlantı

Alt dize işlevi

SUBSTRING(<Строка>, <НачальнаяПозиция>, <Длина>)

Nesne modelindeki Environment() fonksiyonunun bir benzeri. Substring() işlevi dize verilerine uygulanabilir ve bir parça seçmenize olanak tanır <Строки> , karakter numarasıyla başlayarak <НачальнаяПозиция> (bir satırdaki karakterler 1'den başlayarak numaralandırılır) ve uzunluk <Длина> karakterler. Fonksiyon hesaplamasının sonucu değişken uzunluklu bir dize tipine sahiptir ve eğer uzunluk sınırsız olarak kabul edilecektir. <Строка> sınırsız uzunluk ve parametreye sahiptir <Длина> sabit değildir veya 1024'ten büyük değildir.

Eğer dizenin uzunluğu ikinci parametrede belirtilenden daha azsa, işlev boş bir dize döndürecektir.

Dikkat! Sınırsız uzunluktaki dizeleri sınırlı uzunluktaki dizelere dönüştürmek için SUBSTRING() işlevinin kullanılması önerilmez. Bunun yerine EXPRESS() cast operatörünü kullanmak daha iyidir.

İşlev Benzer

Bir dize niteliğinin belirli kriterleri karşıladığından emin olmamız gerekiyorsa onu karşılaştırırız:

Karşı Tarafları SEÇİN Dizinden AS Sütun 1 Adı Karşı Taraflar Karşı Taraflar NEREDE Karşı Taraflar Ad = "Gazprom"

Peki ya daha incelikli bir karşılaştırmaya ihtiyacınız varsa? Sadece eşitlik veya eşitsizlik değil, belirli bir kalıba benzerlik mi? SIMILAR işlevi tam da bunun için yaratıldı.

LIKE — Bir dizenin bir kalıba benzerliğini kontrol etmek için kullanılan operatör. SQL'deki LIKE'ın benzeri.

SIMILAR operatörü, solunda belirtilen ifadenin değerini, sağında belirtilen kalıp dizesiyle karşılaştırmanıza olanak tanır. İfadenin değeri string türünde olmalıdır. İfadenin değeri kalıpla eşleşiyorsa operatörün sonucu DOĞRU, aksi halde YANLIŞ olacaktır.

Şablon dizesindeki aşağıdaki karakterler hizmet karakterleridir ve dize karakterinden farklı bir anlama sahiptirler:

  • % (yüzde): herhangi bir sayıda rastgele karakter içeren bir dizi;
  • _ (alt çizgi): isteğe bağlı bir karakter;
  • […] (köşeli parantez içindeki bir veya daha fazla karakter): köşeli parantez içinde listelenen herhangi bir tek karakter. Numaralandırma, aralığın uçları da dahil olmak üzere aralığa dahil edilen rastgele bir karakter anlamına gelen a-z gibi aralıklar içerebilir;
  • [^...] (köşeli parantez içinde bir olumsuzluk işareti ve ardından bir veya daha fazla karakter): olumsuzluk işaretinin ardından listelenenler dışındaki herhangi bir tek karakter.

Bunun dışındaki herhangi bir sembol kendini ifade eder ve herhangi bir ek yük taşımaz. Listelenen karakterlerden birinin kendisi olarak yazılması gerekiyorsa, önüne şu karakter yazılmalıdır:<Спецсимвол>. Kendim<Спецсимвол>(herhangi bir uygun karakter), ÖZEL KARAKTER anahtar sözcüğünden sonra aynı ifadede tanımlanır.

8.3.6.1977 sürümünde uygulandı.

Dizelerle çalışmak üzere tasarlanmış işlevler kümesini genişlettik. Bunu size dize verilerini ayrıştırmaya yönelik daha gelişmiş araçlar sunmak için yaptık. Yeni işlevler, metin analizinin teknolojik görevlerinde kullanışlı ve faydalı olacaktır. Biçimlendirilmiş biçimde veri içeren metnin ayrıştırılmasıyla ilgili görevlerde. Bu, ekipmandan alınan bazı dosyaların analizi veya örneğin teknolojik bir günlüğün analizi olabilir.

Daha önce yeni işlevler gerçekleştiren tüm eylemleri gerçekleştirebiliyordunuz. Yerleşik bir dilde yazılmış az çok karmaşık algoritmalar kullanmak. Bu nedenle, yeni işlevler size temelde yeni yetenekler sağlamaz. Ancak kod miktarını azaltmanıza ve kodu daha basit ve anlaşılır hale getirmenize olanak tanırlar. Ek olarak, eylemlerin yürütülmesini hızlandırmanıza da olanak tanır. Çünkü platformda uygulanan işlevler elbette yerleşik bir dilde yazılmış benzer bir algoritmadan daha hızlı çalışıyor.

Biçimlendirme işlevi StrTemplate()

Bu işlev, parametreleri bir dizeye dönüştürür. Böyle bir dönüşüme duyulan ihtiyaç, örneğin uyarı mesajları görüntülenirken sıklıkla ortaya çıkar. Bu işlevin sözdizimi aşağıdaki gibidir:

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

<Шаблон>- bu, parametre gösterimlerini değiştirmeniz gereken dizedir.

<Значение1> , ... <Значение10>- bunlar, temsillerinin dizede değiştirilmesi gereken parametrelerdir (en fazla on).

Değiştirme işlemini gerçekleştirmek istediğiniz şablonda belirli bir yeri belirtmek için %1, ... %10 gibi işaretçiler kullanmanız gerekir. Şablonda yer alan işaretçilerin sayısı ile değerleri içeren parametrelerin sayısı eşleşmelidir.

Örneğin, böyle bir operatörün yürütülmesinin sonucu:

bir satır olacak:

2. satırda veri hatası (Tarih türü gerekli)

Dizelerle çalışma işlevi StrCompare()

Bu işlev, iki dizeyi büyük/küçük harfe duyarlı olmayan bir şekilde karşılaştırır. Örneğin şöyle:

Aynı eylemi daha önce Değer Karşılaştırma nesnesini kullanarak gerçekleştirebilirsiniz:

Ancak yeni özelliği kullanmak daha kolay görünüyor. Bunun yanı sıra işlev, Değer Karşılaştırma nesnesinden farklı olarak hem ince istemcide hem de web istemcisinde çalışır.

StrStartsWith(), StrEndsAt() dizeleriyle çalışmaya yönelik işlevler

Bu işlevler, bir dizenin belirli bir alt dizeyle başlayıp başlamadığını veya bir dizenin belirli bir alt dizeyle bitip bitmediğini belirler. Bu işlevlere yönelik algoritmanın gömülü bir dilde uygulanması zor değildir, ancak bunların varlığı daha temiz ve anlaşılır kod yazmanıza olanak tanır. Ve daha hızlı çalışırlar.

Örneğin, If deyiminde kullanılmaya uygundurlar:

StrDivide(), StrConnect() dizeleriyle çalışmaya yönelik işlevler

Bu işlevler, belirtilen sınırlayıcıyı kullanarak bir dizeyi parçalara ayırır. Veya tam tersi, seçilen ayırıcıyı aralarına yerleştirerek birkaç satırı tek bir satırda birleştirirler. Günlükleri ve teknolojik günlükleri oluşturmak veya analiz etmek için uygundurlar. Örneğin, teknolojik bir günlük girişini daha ileri analiz için uygun parçalara kolayca ayrıştırabilirsiniz:

Dizelerle çalışma işlevi StrFind()

Eski Find() işlevi yerine ek yeteneklere sahip yeni bir işlev uyguladık:

  • Farklı yönlerde arama yapın (baştan sona);
  • Belirtilen konumdan arama yapın;
  • Belirtilen sayıda (ikinci, üçüncü vb.) bir oluşumu arayın.

Aslında eski işlevin yeteneklerini kopyalıyor. Bu, eski sürümlerde derlenen modüllerle uyumluluğu korumak için yapılır. Artık eski Find() işlevini kullanmamanız önerilir.

Aşağıda yeni arama yeteneklerinin kullanıldığı bir örnek verilmiştir. Tersine arama, bir URL'deki tam dosya adı gibi resmileştirilmiş bir dizenin son kısmına ihtiyaç duyduğunuzda kullanışlıdır. Ve belirli bir konumdan arama yapmak, satırın tamamında değil, bilinen bir parçada arama yapmanızın gerektiği durumlarda yardımcı olur.

Bir dize, 1C:Enterprise 8 sistemlerindeki ilkel veri türlerinden biridir. astar metin içerir.

Değişken değerlerini yazın astarçift ​​tırnak içine alınır. Bu türden birkaç değişken eklenebilir.

Per1 = "Kelime 1";
Per2 = "Kelime 2";
Per3 = Per1 + " " + Per2 ;

Sonunda Per3"anlamına gelecektir" Kelime 1 Kelime 2″.

Ayrıca 1C:Enterprise 8 sistemleri dizelerle çalışmaya yönelik işlevler sağlar. Başlıcalarına bakalım:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — işlev, kullanıcının bir tür değişkenin değerini belirtebileceği bir iletişim kutusu görüntülemek üzere tasarlanmıştır. Astar. Parametre <Строка> gereklidir ve girilen dizenin yazılacağı değişkenin adını içerir. Parametre <Подсказка> isteğe bağlı - bu, iletişim kutusunun başlığıdır. Parametre <Длина> isteğe bağlı, giriş dizesinin maksimum uzunluğunu gösterir. Varsayılan olarak sıfırdır, bu da sınırsız uzunluk anlamına gelir. Parametre <Многострочность> isteğe bağlı. Çok satırlı metin giriş modunu tanımlar: Doğru—satır ayırıcılarla çok satırlı metin girişi; Yanlış - basit bir dize girin.

Unicode'daki karakter kodunu biliyorsanız bir dize girebilirsiniz:

Sembol(<КодСимвола>) — kod sayı olarak girilir.

Harf= Sembol(1103) ; // BEN

Bir sembolün kodunu bulmanızı sağlayan bir ters fonksiyon da vardır.

SembolKodu(<Строка>, <НомерСимвола>) — Belirtilen karakterin Unicode numarasını sayı olarak döndürür.

Metin durumu dönüştürme işlevleri:

VReg(<Строка>) — Bir dizedeki tüm karakterleri büyük harfe dönüştürür.

NReg(<Строка>) — Bir dizedeki tüm karakterleri küçük harfe dönüştürür.

TReg(<Строка>) — dizedeki tüm karakterleri başlık harfine dönüştürür. Yani tüm kelimelerin ilk harfleri büyük harfe, kalan harfler ise küçük harfe dönüştürülür.

Bir dizedeki karakterleri arama ve değiştirme işlevleri:

Bulmak(<Строка>, <ПодстрокаПоиска>) — arama alt dizisinin oluşumunun karakter numarasını bulur. Örneğin:

Bul ("Dize", "oka"); // 4

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) - arama alt dizisinin oluşumunun karakter numarasını bulur; oluşum numarası ilgili parametrede gösterilir. Bu durumda arama parametrede numarası belirtilen karakterle başlar. İlk pozisyon. Arama dizenin başından veya sonundan itibaren mümkündür. Örneğin:

Sayı4 Oluşumları = Str Bul ( "Savunmacılık", "hakkında", Arama Yönü. Başlangıç, 1, 4); // 7

StrDeğiştir(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – kaynak dizgede arama alt dizgisinin tüm oluşumlarını bulur ve onu değiştirilen alt dizgeyle değiştirir.

StrReplace ("Dize", "oka", ""); // Sayfa

Boş satır(<Строка>) – dizeyi önemli karakterler açısından kontrol eder. Önemli karakter yoksa veya hiç karakter yoksa değer döndürülür Doğru. Aksi takdirde - Yalan.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – Arama alt dizesinin kaynak dizede tekrarlanma sayısını hesaplar.

StrNumberOccurrences ( "Çalışın, çalışın ve tekrar çalışın", "çalışmak" , "" ) ; // 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — parametreleri sayıya göre bir dizeye dönüştürür. Satır şu formdaki değiştirme işaretlerini içermelidir: “%1..%N”. İşaretleyici numaralandırması 1'den başlar. Parametre değeri Tanımsız boş bir dize değiştirilir.

StrTemplate ( "Parametre 1 = %1, Parametre 2 = %2", "1" , "2" ) ; // Parametre 1= 1, Parametre 2 = 2

Dize dönüştürme işlevleri:

Bir aslan(<Строка>, <ЧислоСимволов>) – Bir dizenin ilk karakterlerini döndürür.

Sağ(<Строка>, <ЧислоСимволов>) – Bir dizenin son karakterlerini döndürür.

Çarşamba(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – bir uzunluk dizisi döndürür<ЧислоСимволов>, sembolden başlayarak<НачальныйНомер>.

KısaltL(<Строка>) Anlamlı olmayan karakterleri dizedeki ilk önemli karakterin soluna kırpar.

Kısaltma(<Строка>) — satırdaki son önemli karakterin sağındaki önemsiz karakterleri keser.

KısaltLP(<Строка>) – satırdaki ilk önemli karakterin solundaki ve satırdaki son önemli karakterin sağındaki önemsiz karakterleri keser.

StrGetString(<Строка>, <НомерСтроки>) – Sayıya göre çok satırlı bir dize alır.

Diğer özellikler:

StrLength(<Строка>) – dizedeki karakter sayısını döndürür.

StrNumberRow(<Строка>) – çok satırlı bir dizedeki satır sayısını döndürür. Bir satır öncekinden yeni satır karakteriyle ayrılmışsa yeni satır olarak kabul edilir.

StrKarşılaştır(<Строка1>, <Строка2> ) – iki dizeyi büyük/küçük harfe duyarlı olmayan bir şekilde karşılaştırır. Bir fonksiyon bir nesneye benzer şekilde çalışır Değerlerin Karşılaştırılması. İadeler:

  • 1 - eğer ilk satır ikinciden büyükse
  • -1 - eğer ikinci satır birinciden büyükse
  • 0 - dizeler eşitse

StrCompare("İlk satır", "İkinci satır"); // 1

1C dizeleriyle çalışma işlevlerinin nasıl çalıştığına bir örnek olarak, otomatik bir metin analizi oluşturmak istiyoruz. Metni dosyadan alacağız. Analizin sonucu kullanıcıya herhangi bir biçimde görüntülenir.

Bir metin dosyası seçip analizörü çalıştırmamıza izin verecek harici bir işleyici oluşturmamız gerekiyor.

Metin analizi 1C - form ve düğmeler

Öyleyse harici işleme oluşturalım: Yapılandırıcı/Dosya/Yeni/Harici işleme.

Bir form ekleme. Formun üzerine bir metin dosyası seçim alanı ve bir analiz butonu yerleştirmemiz gerekiyor.

Metin analizi 1C - kalın istemci

Formun üzerine normal bir metin alanı yerleştirelim. Dosyanın yolu (dizin adları) önemli olabileceğinden satırın uzunluğu sınırsızdır.

Kullanıcının dosya adını girmesine gerek kalmadan seçebilmesi için alanda bir seçim düğmesini etkinleştireceğiz.

Alan adını “DosyaAdı” olarak değiştireceğiz, ilgili form özelliğinin adı otomatik olarak aynı şekilde değişecek.

Bir düğme olarak platform tarafından otomatik olarak eklenen "Çalıştır" düğmesini kullanacağız (ve zaten bağlı bir işleyici var - kullanışlı).

Metin analizi 1C - ince istemci

İnce istemcide bağımsız olarak “DosyaAdı” form özelliğini oluşturacağız. Sahne malzemelerini formun üzerine sürükleyelim. Form öğesinin özelliklerinde ayrıca seçme düğmesini de etkinleştireceğiz.

Buton olarak “Çalıştır” komutunu oluşturacağız, ona işlem atayacağız ve forma sürükleyeceğiz.

Metin analizi 1C - programlama

Yapmamız gereken ilk şey, seçim düğmesine tıklamayı işlemek - tıklandığında bir dosya seçimi iletişim kutusu göstermek.

Formdaki metin alanımızın özelliklerine gidelim (kalın istemcide - farenin sol tuşu doğrudan alanın üzerindeyken, ince istemcide - listedeki alanın adının üzerinde) ve olay işleyicisini belirtelim. "Seçimin Başlaması" etkinliği.

1C'nin atandığında oluşturacağı işleyici fonksiyonunun içine bazı basit kodlar yazacağız:

Artık bir dosya adımız var. İçeriğini “almamız” ve metin analizini çağırmamız gerekiyor.

Çalıştır düğmesi için zaten bir işleyicimiz var. Kalın istemcide düğme ve işleyicisi, 1C yapılandırıcısı tarafından otomatik olarak oluşturuldu. İnce istemcide manuel olarak ekledik.

Dosyayı bir dizeye okuyan işleyiciye kod ekleyelim:

Dosya kodlamasıyla ilgili. Kodlamayı belirten bir parametre olmadan bir TextReading() nesnesi oluşturursanız, 1C kodlamayı bağımsız olarak belirlemeye çalışacaktır (imza Bayt Sırası İşareti - BOM ile veya ANSI kodlamasını dikkate alacaktır).

İstediğiniz kodlamayı doğrudan örneğin şu şekilde belirleyebilirsiniz:
Dosya = Yeni ReadText(DosyaAdı, "UTF-8"); //istediğiniz kodlama adını değiştirin

Sonuç olarak şunu elde ettik:

  • "Metin" değişkenindeki dosyadan okunan metin dizesi
  • 1C string fonksiyonlarını kullanarak “TextAnaliz()” adlı bir değişkenden elde edilen stringi analiz edeceğimiz bir prosedür

Bir programlama dilinin temel yetenekleri genellikle sayılar ve dizelerle çalışmayı içerir. Genellikle bu özellikler derleyici koduna sabit olarak kodlanır (veya programlama dilinin "temel" sınıfları uygulanır).

1C'de dizelerle çalışma yeteneği platformun kendisinde programlanmıştır. Bugün yerleşik 1C dilindeki programlarda 1C dizeleriyle çalışmanın özelliklerine bakacağız.

Satır değeri 1C

1. En basitiyle başlayalım. Bir değişken oluşturmak ve ona sabit bir dize değeri atamak 1C'de şöyle görünür:

Değişken = "Merhaba dünya!";

Sabit bir 1C dize değerinde bir tırnak karakteri belirtmeniz gerekiyorsa, onu ikiye katlamanız gerekir ""

Değişken = "Merhaba dünya"!;

2. Satır sonu 1C aynı anda iki şekilde belirtilebilir. İlki | sembolünü kullanıyor.

Değişken = "Merhaba,
| dünya! ";

İkincisi, Semboller sistemi numaralandırmasını kullanmaktır. Hem 1C satır sonlarını hem de TAB gibi diğer yazdırılmayan karakterleri eklemenizi sağlar.

Değişken = "Merhaba" + Semboller.PS + "barış!";

3. 1C'deki konfigürasyonlar yalnızca bir dil için (Rusça, İngilizce veya başka bir) değil, aynı anda birkaç dil için de geliştirilebilir. Bu durumda, şu anda kullanılan dil 1C penceresinin altında seçilir.

Dillerin listesi Genel/Diller bölümündeki yapılandırma penceresinde bulunur. Her dilin aşağıdaki gibi kısa bir tanımlayıcısı vardır: ru veya ingilizce.

Böyle bir konfigürasyon programlanırken 1C hatlarının da çok dilli olabileceği açıktır. Bunu yapmak için, şunu belirterek böyle bir 1C satırı oluşturmak mümkündür; Dil tanımlayıcıya göre seçenekler:

Variable = "ru=""Merhaba dünya! ""; en=""Merhaba dünya! """;

Bu şekilde oluşturulan 1C satırını her zamanki gibi kullanırsanız, içinde yazılanlar olacaktır. Sistemin bunu iki seçeneğe ayırması ve istediğiniz seçeneği kullanması için НStr() işlevini kullanmanız gerekir:

//iki dilli yapılandırmalar için doğru
Rapor(NStr(Değişken));

1C hat tipine sahip aksesuarlar

Nitelik, 1C dizinindeki/belgesindeki bir alandır. 1C dilindeki bir programdaki değişkenden, öznitelik için türünün tam olarak belirtilmesi (sayı, 1C dizesi vb.) bakımından farklılık gösterir. Bir pervanenin ne olduğuna dair hafızanızı tazelemeniz gerekiyorsa aşağıdaki dersi izleyin.

Öznitelik türünü belirtirseniz - satır 1C, o zaman ek olarak parametreleri de belirtmeniz gerekir.

1C satırları sınırsız uzunlukta (uzunluk = 0 olarak gösterilir) ve sınırlı uzunlukta gelir; bu da karakterlerin tam sayısını gösterir. Sınırsız uzunluktaki 1C satırları ayrı bir SQL tablosunda depolanır, dolayısıyla bunların kullanımı sınırlı olanlara göre daha az verimlidir.

Bu nedenle sınırsız uzunluktaki 1C dizilerinin kullanımının sınırlamaları vardır - bunları her yerde kullanmak mümkün değildir. Örneğin belge numarası, referans kodu veya ölçü olarak kullanılmasına izin verilmez.

1C dizeleriyle çalışma

Dizelerle çalışmak için 1C platformunun birkaç yerleşik işlevi vardır.

  • AbbrLP (“İnanılmaz ama gerçek!”)
    1C satırındaki fazladan boşlukları kaldırır. Ayrıca herhangi bir türü 1C dizesine (örneğin sayılar) dönüştürmek için de kullanılabilir.
  • Değişken = "Vasya" + AbbrLP(" artı") + "Olya"; //"Vasya artı Olya" olacak
    Birkaç 1C dize değerinin toplanmasına bir örnek. Sonuç bir satır 1C olacaktır.
  • Değişken = Lev("Müzik", 2); //"Mu" olacak
    Değişken = Orta("Müzik", 2, 2); //"tehdit" olacak
    Değişken = Haklar("Müzik", 2); //"ka" olacak
    1C dizesinden bir alt dize elde etmek için çeşitli seçenekler.
  • Değişken = Bul("Müzik", "zy"); //3 tane olacak
    1C dizesinde 1. karakterden başlayarak bir alt dize arayın.
  • Değişken = StrLength("Müzik"); //6 tane olacak
    1C satırındaki karakter sayısını döndürür.
  • Report("Merhaba") //1C penceresinin altındaki mesaj penceresinde
    Alert("Merhaba") //açılır iletişim kutusu
    Status("Merhaba") //sol alttaki durum görüntüleme satırında
    .

Nesneleri 1C çizgisine getirme

Bildiğiniz gibi şu anda yapılandırılmış bilgi alışverişinde kullanılan en popüler format XML'dir. MS Office Word ve Excel'in en son sürümleri bile dosyaları bu formatta kaydeder (sırasıyla docx ve xlsx, uzantıyı zip olarak değiştirir, bir arşivleyicide açar).

Veri alışverişi için 1C platformu, ana olanı da XML olan çeşitli seçenekler sunar.

1. En basit yöntem Abbreviation() veya String() işlevini kullanmaktır. İstek gövdesinde REPRESENTATION() işlevini kullanabilirsiniz. Eylemlerinin sonucu aynıdır; kullanıcı için herhangi bir 1C nesnesinin dize temsilini oluştururlar.

Bir dizin için varsayılan olarak adı bu olacaktır. Bir belge için – belgenin adı, numarası ve tarihi.

2. Herhangi bir 1C nesnesi (kısıtlamalarla) XML'e dönüştürülebilir ve bunun tersi de geçerlidir. Dönüştürme işlemine serileştirme denir.

StringViewXml = XMLString(Value); //1C değerinden XML alın
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //XML stringinden 1C değerini alıyoruz, alınması gereken 1C tipini belirtmelisiniz

3. 1C platformunun herhangi bir 1C nesnesini bir dizgeye dönüştürmenin kendi yolu vardır. 1C 7.7 sürümünden taşındı. Bu format diğer programlar tarafından anlaşılmaz, ancak diğer 1C bunu anlar, bu da onu 1C veritabanları arasında alışveriş için kullanmayı kolaylaştırır.

Satır = ValueInRowInt(Value1C); //1C değerinden 1C dizesini alıyoruz
ValueVFile("C:\MyFile.txt", Value1C); //başka bir seçenek olarak, 1C değerinden kaydedilmiş bir dize içeren bir dosya alırız
Value1C = ValueFromStringInt(String); //1C satırından geri dön
Value1C = ValueFile("C:\MyFile.txt"); //dosyadan geri dön

Formdaki 1C satırlarını düzenleme

1C dilindeki bir programda 1C dizeleriyle çalışmanın yanı sıra elbette kullanıcının bunları düzenleyebilmesini isterim. Bunun için birkaç olasılık var:

1. En kolay yol, talep üzerine 1C hattının girişini talep etmektir. Bu yöntem 1C programlamayı öğretirken kullanılır, hayatta çok daha az kullanılır (ama kullanılır!).

Değişken = "";
Satır = EnterValue(Değişken, "Tam Adı Girin");

2. Bir 1C nesnesinin (dizin/belge) ayrıntılarını veya form ayrıntılarını (bkz.) görüntülemek için çoğunlukla bir giriş alanı kullanılır. Bu, kullanıcının düzenleme alanlarıyla çalışması için 1C'deki en yaygın araçtır.

3. Giriş alanının yetenekleri genişletilebilir (giriş alanının özelliklerine bakın, sağ tıklayın, daha fazla ayrıntı):

  • Onay Kutusu Çok satırlı düzenleme modu
  • Gelişmiş düzenleme onay kutusu (önceki onay kutusu işaretliyse kullanılabilir)
  • Onay Kutusu Şifre modu (bkz.).

4. Giriş alanının tüm yetenekleri sizin için yeterli değilse yerleşik bir düzenleyici bulunmaktadır. Forma eklemek için Form/Ekle Denetimi menüsüne Metin Belgesi Alanı eklemeniz gerekir. Özelliklerinde çalışma modunu (Uzantı özelliği) belirleyebilirsiniz.

Bir metin belgesi alanı doğrudan verilerle ilişkilendirilemez. Formun OnOpen() olay işleyicisine bir işlev yazmak gerekir (bkz.):

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //burada ValueString, örneğin nitelikten alınan metindir

Kaydetme işleyicisinde (örneğin, Kaydet düğmesinde) bir kaydetme ekleyin:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //Value Buradaki satır değeri kaydettiğimiz özelliktir

5. 1C sürüm 8.2.11'de, yönetilen formlarda, 1C satırını temsil etmek için yeni bir seçenek ortaya çıktı - Biçimlendirilmiş Belge alanı.


Bir metin belgesinin alanına benzer şekilde, onu açarken ayarlamanız ve programı kullanarak kendiniz kaydederken not etmeniz gerekir.

  • Formunu oluşturduğumuz 1C nesnesine (dizin, belge, işleme vb.) - Değer Depolama türüne sahip bir nitelik ekleyin
  • OnReadOnServer() işlevinde, özelliğin metnini ayarladık

    //burada Nitelik, 1C nesnesinin eklenen niteliğidir
    //burada FormattedDocument formda düzenlenecek alanın adıdır
    &Sunucuda

    FormattedDocument = CurrentObject.Attributes.Get();
    Prosedürün Sonu

  • BeforeWritingOnServer() fonksiyonunda veya butonunu kullanarak alandaki metni yazacağız.

    &Sunucuda
    OnServer(CurrentObject) Okunduğunda Prosedür
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Prosedürün Sonu