1s 8.3 periyodik dizin ayrıntıları. Dizinlerle çalışmak için kullanılan program kodu nerede?

Dizinlerin amacı

Dizin, belirli bir nesnenin veya özelliğin olası değerlerinin bir listesini saklar. Dizinler, belirsiz girişlerin hariç tutulmasının gerekli olduğu durumlarda kullanılır.od bilgileri. Mesela alıcının, satıcının, mağazacının, müdürün nasıl bir üründen bahsettiğimizi anlaması için herkesin onu aynı şekilde adlandırması gerekiyor. Ve bu durumda bir referans kitabına ihtiyacımız var. Genellikle açık ticaret şirketi fiyat listesine benziyor.

1C:Enterprise 8 sistemi neredeyse sınırsız sayıda gerekli dizini korumanıza olanak tanır. Her dizin homojen nesnelerin bir listesidir: pozisyonlar, çalışanlar, müşteriler, mallar vb. Bu tür nesnelerin her birine dizin öğesi denir.

Kullanıcı açısından bakıldığında, Yapılandırıcıda bir değerler listesi olarak oluşturulan dizinin kendisi değil, dizin için bir şablon, onun şablonu geliştirildiği akılda tutulmalıdır. Yapılandırma işlemi sırasında, dizinde saklanacak bilgilerin yapısı açıklanmakta, dizinin bir ekranı ve gerekiyorsa basılı gösterimi geliştirilmekte ve davranışının çeşitli özellikleri belirtilmektedir.

Dizin ayrıntıları (alanlar)

Zorunlu ayrıntılar olarak her dizin Kod Ve İsim. Dizin öğesi kodu sayısal veya metin olabilir. 1C:Enterprise 8 sistemi, dizin öğesi kodlarıyla çalışmak için geniş fırsatlar sunar: kodların otomatik atanması, kod benzersizliğinin otomatik kontrolü ve diğerleri.

Kod ve Adın yanı sıra, bir dizin öğesi hakkındaki her türlü ek bilgi 1C:Enterprise sistem dizinlerinde saklanabilir. Bu tür bilgileri dizinde saklamak için oluşturabilirsiniz. ek ayrıntılar(tarlalar). Dizin ayrıntıları mekanizmasını kullanarak, örneğin bir çalışan dosyasını düzenlemek kolaydır. Örneğin, Çalışanlar dizini neredeyse kesinlikle Pozisyon, Maaş, Randevu Tarihi ve diğer ayrıntıları içerecektir. 1C şirketi programcıları öngördü ve tüm dizinlere iki zorunlu (önceden tanımlanmış) ayrıntı ekledi: Kod ve Ad. Aslında gerçek hayattaki hemen hemen her nesne bu nitelikleri içerir. Örneğin çalışanlar için kod şöyledir: personel numarası ve adı Soyadı, Adı ve Patronimiktir (tam ad). Ek olarak, kodların kullanımı (kullanırken otomatik numaralandırma) veri tabanına hangi öğenin daha önce, hangisinin daha sonra girildiğini anlamayı kolaylaştırır.

Veri Türleri

Her dizin özelliği için bir veri türü belirtmeniz gerekir; örneğin, "sayı", "dize", "tarih", Boolean (Doğru veya Yanlış). Bunlar temel türlerdir ancak karmaşık veri türleri de belirtilebilir. Örneğin, Konum özelliğinin Konum veri türü vardır. Bu durumda bu niteliğin değerleri Konumlar dizininden seçilecektir. Bu şekilde uygulanıyor en basit bağlantı dizinler arasında, bir dizinin ayrıntılarının değerleri başka bir dizinin öğelerinden seçildiğinde.

Hiyerarşik dizinler

1C:Enterprise 8 sistemindeki dizin öğelerinin listesi çok düzeyli olabilir. Bu durumda, tüm dizin satırları 2 türe bölünecektir: "basitçe" dizin öğeleri ve dizin grupları. Gruplar, çok düzeyli bir dizinin daha alt düzeylerine geçmenize olanak tanır. Çok düzeyli dizinlerin kullanılması, dizine bilgi girişini gerekli ayrıntı düzeyiyle düzenlemenize olanak tanır. Çok düzeyli bir dizindeki öğeler ve öğe grupları bir gruptan diğerine aktarılabilir.

Alt dizinler

Dizinler arasında bir bağlılık ilişkisi kurulabilir. açısından ilişkisel veritabanları veriler arasında tablolar arasında bire-çok ilişki kurulur. Bu durumda, alt dizinin her öğesi, sahip dizinin öğelerinden biriyle ilişkilendirilecektir. Bazen bir dizinin elemanlarının diğerinin elemanlarına ait olduğunu söyleyebilirsiniz. Örneğin sistemin bir Sözleşme dizini olabilir. Daha sonra Müşteriler dizinine bağlı hale getirilebilir. Bu, müşterinin sözleşmelerin sahibi olduğu ve bir müşterinin birden fazla sözleşmeye sahip olabileceği anlamına gelir.

Masa parçaları

Sürüm 1C 8.0'dan başlayarak platform, bir dizin öğesi için bir veya daha fazla tablo bölümü belirtme özelliğini uygulamaya koydu. Bu özelliğin, belirli bir öğeyle ilgili bilgileri yansıtmak için kullanılması önerilir, ancak kendi nesne varlığına sahip değildir (bunun için alt dizinler oluşturulması önerilir). Örneğin Çalışanlar dizini için Eğitim ve Aile Kompozisyonu tablo bölümleri oluşturulabilir. Tablo parçalarıyla çalışmak, alt dizinlerle çalışmaya benzer; ancak tablo parçaları, diğer nesnelerin ayrıntıları için değer olarak kullanılamaz.

Dizinlerle çalışmak için kullanılan program kodu nerede?

Program kodunu yürütmek için veritabanına erişmemiz gerektiğinden, program kodunun bu parçaları prosedürlere ve işlevlere (veya modüllere) yerleştirilmelidir. sunucu tarafında yürütülür. Daha fazla bilgi için bölümüne bakın.

1. Dizine bağlantı

Herhangi bir modüldeki bir dizinle çalışmak için öncelikle bu dizine bir bağlantı oluşturmalısınız.

RefEmployees = Dizinler . Çalışanlar ; // veya seçenek 2
Dizinler = Dizinler ["Konumlar"];

2. Yeni bir dizin öğesi oluşturma ve kaydetme

NovEl = Dizinler. Çalışanlar . CreateItem();
Roman. İsim = "Petrov Petrovich";
Roman. Maaş = 25000;
Roman. Yazmak(); // veritabanına yazmanın gerçekleştiği an budur

3. Yeni bir dizin grubu oluşturma ve kaydetme (hiyerarşik bir dizin için)

Yeni = Dizinler.Çalışanlar. CreateGroup();

Yeni Yazmak();
// veya seçenek 2
Yeni = Dizinler ["Çalışanlar"]. CreateGroup();
Yeni Ad = "Çalışıyor";
Yeni Yazmak();

4. Bir dizin öğesi arayın

// eğer eleman bulunursa döndürülür, aksi takdirde Tanımsız değeri döndürülür

FoundSotr = RefCotr . FindByCode(123);
//koda göre arama FoundSotr = RefCotr . Ada Göre Bul (“İvanov İvan İvanoviç”);
//koda göre arama //isme göre Ayrıntılara Göre Bul

("Maaş", 5000); //ayrıntılara göre
BulunduysaCotr
= Tanımsız O halde

//öğe bulunamadı

endIf;

5. Bir dizin öğesinin silinmesi SprSotr = Dizinler. Çalışanlar ;

Ref. Silmek (); //geçerli dizin öğesinin doğrudan silinmesi Ref. AyarlaKaldırMark
Ref. Silmek (); //geçerli dizin öğesinin doğrudan silinmesi(Doğru); //silinmek üzere işaretle

(Yalan);
//silme işaretini kaldır

//bir öğenin silinmek üzere işaretlenip işaretlenmediğini kontrol edebilirsiniz //MarkDelete özelliği Boolean türündedir (Doğru veya Yanlış)İşaret = SprSotr .
Bayrak Silme
; //not: bu bir özelliktir
= Tanımsız O halde

Eğer İşaretle = Doğruysa O halde

//öğe silinmek üzere işaretlendi 6. Dizin öğelerinin numaralandırılması();
Seçim = Dizinler.
Çalışanlar.Seçin

// bir döngüdeki dizin elemanları arasında arama yapmaya başlayın

//sonraki elemanla yapılan işlemler...

EndCycle;

endIf;
7. Ebeveyn. Bir grup içindeki öğeler üzerinde yineleme yapın. 1C açısından bir grup bir “ebeveyndir”. FoundSotr = RefCotr . Grup Çalışması
= SprSotr . 7. Ebeveyn. Bir grup içindeki öğeler üzerinde yineleme yapın.);
("Çalışma");

Seçim = SprSotr . Seçmek (
// bir döngüdeki dizin elemanları arasında arama yapmaya başlayın

Güle güle Seçim. Sonraki() = 1 Döngü

Rapor ("Çalışan" + Seçim. Ad);

//öğe silinmek üzere işaretlendi Vergi Avantajları. Select(, Çalışan); //burada çalışan - çalışan dizini öğesine bağlantı
("Çalışma");
//sonraki elemanla yapılan işlemler
Rapor ("faydalar" + Örnek. İsim);
// bir döngüdeki dizin elemanları arasında arama yapmaya başlayın


9. İşlem

Çok sayıda dizin öğesi oluştururken, işi hızlandırmak için bir işlemin içine bir döngü dahil edebilirsiniz. Bu durumda, tüm öğelerin asıl oluşturulması yalnızca CommitTransaction() komutuyla gerçekleşecektir. İşlemleri kullanırken, eylem ya tamamen tamamlanacak (dizinin tüm öğeleri oluşturulur) ya da hiç gerçekleştirilmeyecek (herhangi bir arıza durumunda tek bir yeni öğe oluşturulmayacak, her şey öncekiyle aynı kalacaktır). işlem başlatıldı). Bankacılık sektöründe işlemler yaygın olarak kullanılmaktadır. Sonuçta hiç kimse para gönderirken hesabınızdan başarılı bir şekilde tahsil edilmesini, ancak bazı başarısızlıklar nedeniyle muhatabına ulaşmamasını istemez.

endIf;
İşlemi Başlat();

Nom için = 1 ila 100 Döngü
Yeni = SprSotr . CreateItem();
Yeni Ad = "Yeni" + String(Nom);
Yeni Yazmak();
// bir döngüdeki dizin elemanları arasında arama yapmaya başlayın

İşlemi Gerçekleştir();

Kullanıcının 1C'deki referans kitapları ve belgelerle çalışması, formdaki alanların doldurulmasından oluşur.

1C ayrıntıları, kullanıcının doldurması için formda görüntülenen dizin ve belge alanlarıdır.

1C'deki ayrıntılar konusuna daha yakından bakalım.

1C Detayları Nelerdir?

Her dizin ve 1C belgesi bir dizi alandan oluşur. Bu tür alanlara 1C ayrıntıları denir (1C programcısı için).

Yapılandırıcıda, 1C yapılandırma ağacında herhangi bir dizini veya belgeyi açın; Ayrıntılar dalını göreceksiniz. Bu, dizin ayrıntılarının (alanların) bir listesidir.

Aynı 1C ayrıntılarının 1C dizin formunda nasıl göründüğüne bakın.

Her 1C niteliği, öznitelikte ne tür bir değerin saklandığını (dize, sayı vb.) ve kullanıcının bununla nasıl çalışacağını gösteren özelliklere sahiptir.

Herhangi bir 1C özelliğine sağ tıklayın ve Özellikler'e tıklayın. Seçilen özelliğin özelliklerinin bir listesi sağdaki pencerede açılacaktır.

1C detaylarının ana özellikleri:

Standart 1C ayrıntıları

Fark ettiğiniz gibi, dizin formunda yapılandırıcıda listelenmeyen 1C ayrıntıları var: grup, ad, BIC.

Dizin listesi formu ayrıca listede olmayan 1C ayrıntılarını da içerir: silme işareti.

Bunlar standart 1C detaylarıdır. Nedir? Herkesin varsayılan bir 1C ayrıntıları seti vardır. Dizinler için bu, örneğin kod ve addır. Belgeler için bu tarih ve numaradır.

Standart 1C ayrıntıları şu şekilde görüntülenebilir:

  • Fareyle çift tıklayarak 1C nesnesinin (dizin veya belge) düzenleyicisine gidin
  • Açılan düzenleyicide Veri sekmesini seçin
  • Burada standart ayrıntıları Kod ve Dizin Adını yapılandırabilirsiniz.
  • Tam listeyi görüntülemek için 1C Standart Ayrıntıları düğmesini tıklayın.

Genel 1C ayrıntıları

1C 8.2.14 sürümünden başlayarak, 1C - Genel 1C Ayrıntılarında yeni bir 1C Nesnesi ortaya çıktı. Bunu kullanarak, birçok dizinde ve belgede aynı anda bulunacak bir özelliği (alanı) ekleyebilirsiniz.

Genel 1C niteliklerinin özellikleri:

  • Otomatik kullanım – ekler genel sahne 1C aynı anda tüm dizinlere ve belgelere
  • Kompozisyon - yalnızca gerekli dizinlere ve belgelere genel 1C ayrıntılarını eklemenizi sağlar (otomatik kullanım daha sonra Kullanma olarak ayarlanır).

1C ayrıntıları nasıl eklenir?

İstediğiniz dizinin 1C Ayrıntılar dalına sağ tıklayın ve Ekle'yi seçin.

1C özelliğinin Adını girmemiz gerekiyor, örneğin “Ofis Adresi” ve “Ofis Adresi” eşanlamlısı. Varsayılan türü String olarak bırakın ancak Sınırsız uzunluk onay kutusunu işaretleyin.

Aynı şekilde bir 1C niteliği daha ekleyelim, sadece Boolean tipini seçip “Hafta Sonu Çalışıyor” adını vereceğiz.

1C formundaki ayrıntılar nasıl görüntülenir (1C kalın istemci)

Aynı dizinin Forms dalını genişletelim. Formu açmak için eleman formunu seçin ve üzerine fareyle çift tıklayın.

Şeklin kenarını farenizle sürükleyin ve uzatın (isteğe bağlı).

Yapılandırıcı panelinde "Veri yerleştirme" düğmesini tıklayın. Form/Veri Yerleştirme menüsünü de kullanabilirsiniz.

Bilgilerimizin formda görüntülenmediğini görüyorsunuz. Onları kontrol et. Ayrıca Etiketler ekle ve Otomatik olarak yerleştir onay kutuları.

1C formundaki ayrıntılar nasıl görüntülenir (1C ince istemci)

Aynı dizinin Forms dalını genişletelim. Elemanın şeklini seçin ve fareyle üzerine çift tıklayın.

Ayrıntılar sekmesinde Nesne satırını genişletin. Daha önce dizine eklenmiş ayrıntıların bir listesini göreceksiniz.

Şimdi gerekli özelliği sağ pencereden soldaki pencereye sürükleyin; formda görünecektir.

Form 1C ayrıntıları

Kalın istemcide formun kendi ayrıntıları vardır. Ayrıntılar sekmesinde bulunurlar.

Bu ayrıntılar veri tabanına kaydedilmez ancak form üzerinde, formla çalışmak için gerekli alanlar için kullanılabilir.

Örneğin forma bir onay işareti eklediniz. Tıkladığınızda formda bir şeyler oluyor. Onay kutusunun anlamı sizin için önemli değil (onu yazmanıza gerek yok) - yalnızca formla çalışırken formu değiştirmek için kullanılır. Bu durumda veri olarak dizin niteliğini değil, form niteliğini kullanırsınız.

Periyodik ayrıntılar 1C

1C sürüm 7.7'de periyodik ayrıntılar vardı. Anlamı şudur: Sahnelerin anlamı farklı tarihlerde farklıdır. Örneğin, 1 Eylül'deki değer bir, 1 Ekim'deki değer ise başkadır. Aynı aksesuarlar.

1C 8'de periyodik ayrıntılar yoktur. Bu şu şekilde uygulanır:

1s 7.7'de dizinler ilginç ayrıntılara sahipti - periyodik, zamana bağlı olarak ayrıntıların değerini hatırlayabiliyorlardı, onlarla çalışmak pek uygun değildi, ancak alternatiflerin yokluğunda gerekliydi. 8'e geçtikten sonra birçok programcı, referans kitaplarında periyodik ayrıntıların bulunmadığını keşfettiklerinde şaşırdılar.

Periyodik bilgi kayıtları yardımıyla çözülen tipik görevler, zamana bağlı bilgilerin depolanmasıdır. Bilgiler; kalemlerin fiyatları, bir çalışanın farklı zaman dilimlerinde tuttuğu pozisyonlar ve işletmenin vergi muhasebesi parametreleri gibi heterojen olabilir. 8'de periyodik ayrıntıların benzeri, birleştirilmiş periyodik kayıtlardır.

7.7'nin işlevselliğini tekrarlamak için aşağıdakileri yapmanız gerekir:

Birleştirilmiş bir "Periyodik Karşı Taraf Verileri" kaydı oluşturun, bunun bir günlük periyodikliğe sahip periyodik bir bilgi kaydı olduğunu belirtin.

Şimdi "Veri" sekmesine - "Hesap" boyutunu, periyodik ayrıntılara benzer işlevsellik uygulamak istediğimiz dizine uygun bir tür eklememiz gerekiyor. “Ayrıntılar” dalına zamana bağlı ayrıntıları ekliyoruz. Karşı taraf için bu, yasal ve fiziksel bir adres, ana telefon numarası, yöneticinin adı, ana faks vb. olabilir.

Yapılandırmayı kaydettikten sonra bilgi kaydına yan menüden (yönetilen uygulama modunda) erişebilirsiniz, ekran görüntüsüne bakın.

Modunda düzenli uygulama"Git" butonu aracılığıyla

Ancak tamamlanmış kayda bakarsak, yalnızca mevcut olanı değil, tüm veri kümesini bir bütün olarak gördüğümüz için hangi bilgilerin alakalı olduğunu anlamanın oldukça zor olduğunu fark edeceğiz. şu anda bilgi.

Çok fazla bilgi olduğunda ve kolayca hata yapılabiliyorsa, karşı tarafın kartında güncel bilgilerin gösterilmesi tavsiye edilir. Burada programlamadan yapamazsınız.

Öncelikle forma “İletişim Bilgileri” adını vereceğimiz bir grup ekleyelim ve ona “Yönetici” ve “Telefon” olmak üzere iki detay ekleyelim.


Ve form modülünde, güncel verileri elde etmek için “Açılışta” olayına eylemler atayacağız:

& OnClient Açma Prosedürü (Ret) //Kolektörün yerine yerleştiriyoruz data=CurrentData'yı Al();

girişim Yönetmen = dani. kerivnik;

istisna son denemesi; //Kolektörün yerine yerleştiriyoruz telefon = veriyi deneyin. telefon; istisna son denemesi; Prosedürün Sonu Güncel verileri elde etme işlevi aşağıdaki gibidir: OtrimatiCurrentData() işlevi //((QUERY_CONSTRUCTOR_WITH_RESULT_PROCESSING // Yapıcı isteminin Danca parçası. // Yapıcıyı tekrar revize ederseniz, manuel olarak yapılan değişiklikler kaybolacaktır!!! Talep = Yeni Talep; |Rica etmek. Metin = " SEÇ | En Son Periyodik Karşı Taraf Veri Özeti. Karşı taraf,| En Son Periyodik Karşı Taraf Veri Özeti. Kerivnyk, | En Son Periyodik Karşı Taraf Veri Özeti. Adresler,| En Son Periyodik Karşı Taraf Veri Özeti. Telefon İTİBAREN | Bilgi Kaydı. Karşı Tarafın periyodik verileri. Karşı Tarafın En Son AS Periyodik Verilerinden Bir Kesit En Sondan Bir Kesit|NEREDE | En Son Periyodik Karşı Taraf Veri Özeti. Karşı Taraf = & Karşı Taraf" ; request. SetParameter(" Account ", object. Link); İstek Sonucu = İstek. Execute () ; SelectionDetailedRecords = İstek Sonucu. Select(); data= yeni yapı; While SelectionDetailedRecords. Next() Döngüsü

// Bir seçim örneği ekleyin SelectionDetailedRecords

//SelectionDetailedRecords.Kerivnik;

haraç Insert("kerivnik", SelectionDetailedRecords.Kerivnik) ; haraç Insert("phone", SelectDetailRecords.Phone) ; Rapor(SeçimDetaylıKayıtlar.Telefon) ;

EndCycle;

Haraç iadesi;