Bilgi kayıt defterinden en geç tarih dilimleri. Belge tarihindeki fiyat talebindeki makbuz. bir istekte

Müşterinin veritabanına girilen "Mal ve hizmet satışları" belgeleri hakkında bir rapor almak istediği bir görev aldığımızı ve her belge için "Adlandırma fiyatları" bilgi kaydından bir fiyat almamız gerektiğini varsayalım. belgenin tarihi. Rapor, "Manufacturing Enterprise Management" sürüm 1.3 yapılandırması için yazılmıştır.

Dönem, fiyat türü ve terminolojinin karşılık gelen koşullarına göre belge tablosundaki kayda "Nomenklatür Fiyatları.Dilim Son" sanal tablosundan bir kayıt eklenir. Fiyat türü, aynı adı taşıyan belge özniteliğinden elde edilir.

Sorunun birkaç çözümü var. Bunlardan ikisini ele alalım: ACS hakkında iki veri kümesi kullanan ve gerekli tüm verileri tek bir istekte alan bir rapor. Şimdi sırayla.

ACS'yi kullanma

ACS'de böyle bir raporu uygulamak için veri kompozisyon şemasında iki veri seti oluşturacağız. İlki bir belge listesi alacak, ikincisi seçilen kalem ve fiyat türü için belge tarihleri ​​için fiyatları alacak. İki veri seti arasındaki bağlantı isimlendirme, dönem (belge tarihi) ve fiyat türü ile gerçekleştirilir. İlk setten “Nomenklatür”, “Fiyat Tipi” ve “Dönem” parametrelerinin ikinci sete aktarılması gerekmektedir.

İlk veri kümesi aşağıdaki sorguyu içerir:

Sorgu, belge tablosundan ve "Ürünler" sekmeli bölümünden şu alanları seçer: "Referans", "Tarih", "Fiyat Türü", "Terminoloji". Şimdi ikinci veri kümesini düşünün:

İkinci veri setinde ise isteğe iletilen parametrelere dikkat etmelisiniz. Seçilebilir alanların listesi "Dönem", "Terminoloji" ve "Fiyat Tipi" parametrelerini içerir.Aynı parametreler "Maddelerin Fiyatları. Son Slice" sanal tablosunun parametrelerinde kullanılır.Bu parametreleri görüntülemek gereklidir. bu parametrelerin değerlerini birinci kümeden ikinci kümeye aktarabilmeniz için seçilebilir alanlar listesinde.Bu, Veri Bileşimi Şema Tasarımcısı sekmesinde "Veri Kümesi Bağlantıları"nda veri kümeleri arasındaki bağlantı ayarları kullanılarak yapılır. Onun değerlendirmesine geçelim:

Veri kaynakları arasındaki ilişkiler, sorgudaki seçim alanı kullanılarak yapılandırılır. İkinci veri setinde seçim alanlarına sorgu parametreleri ekledik. Kümeler arası ilişki kurarken, ilişki için "Parametre" sütununda bir alan seçerseniz, "Kaynak İfade" sütunundaki değer "Hedef İfade"ye aktarılır ve seçilen parametre uygun değerle doldurulur.

Rapor yapısını kurduktan ve oluşturduktan sonra aşağıdaki sonucu alacağız:

Rapor çalışıyor. Tek bir talepte belgenin tarihi için fiyat alma seçeneklerini düşünmeye devam edelim.

bir istekte

Benzer çıktı alanları ve rapor ayarları ile yeni bir rapor oluşturalım. Tek fark veri kaynaklarında olacaktır. Bu sefer rapor, tüm belge öğelerini ve bunlarla ilişkili fiyatları tek bir sorguda seçen tek bir veri kümesi içerecektir. İstek metni şöyle görünür:

"SELECT | DocumentNomenclaturePeriod.Document, | DocumentNomenclaturePeriod.Document.Date AS Date, | DocumentNomenclaturePeriod.Document.PriceType AS PriceType, | DocumentNomenclaturePeriod.Nomenclature, | PriceNomenclature.Price |FROM | , | MAKSİMUM(Nomenklatür.Dönem Fiyatları) AS Dönemi | BAŞLANGIÇ | Dönem | Malların/Hizmetlerin Gerçekleşmesi.Referans.FiyatTürü = FiyatlarNomenklatürler.FiyatTürü | | GROUP BY | GerçekleşmelerMallarHizmetlerMallar.Referans, | GerçekleşmelerMallarHizmetlerMallar.NomenklatürPeriyodu) AS Belgesi terminolojiPeriod.Nomenklatür = FiyatlarNomenklatür.Adlandırma | Ve DocumentNomenclaturePeriod.Document.PriceType = FiyatlarNomenclature.PriceType | Ve DocumentNomenclaturePeriod.Period = FiyatlarNomenclature.Period"

Sorgulamanın prensibi, tablo bölümünde kullanılan her bir kalem için en yakın fiyat değişim tarihini belgeye getirmek ve ardından “Madde fiyatları” fiziksel tablosundaki verileri dönem, kalem ve türüne göre sorgu sonucuna eklemektir. Fiyat:% s. İlk bakışta, sorgu karmaşık görünebilir, ancak aslında sözdizimi oldukça basittir.

Yürütme sonucu, önceki raporun sonucuna benzer (yukarıdaki ekran görüntüsüne bakın).

sonuca varmak

Görevi tamamlamanın en iyi yolu nedir? Her şey belirli koşullara bağlıdır. Bazı durumlarda, iki veri kümesi içeren bir rapor, bir rapor için tüm verileri tek bir sorguda almaktan daha hızlı olacaktır. Makale çerçevesinde, ele alınan sorunu çözme yöntemleri için performans konularına değinemeyeceğiz.

Belgelerdeki bilgilerin güvenilir olmayabileceğine inanıldığından, 1C'den gelen geliştirme metodolojisi tarafından belge tablolarına dayalı raporlar oluşturulmasının önerilmediğini de hatırlamakta fayda var. Tüm raporlar kayıtlar temelinde oluşturulmalıdır.

Bilgi kayıtları 1C boyutlar ve kaynaklar içeren yapılandırılmış bir veri kümesidir. Periyodik bilgileri depolamak için tasarlanmıştır.

periyodiklik

Bilgiler, ölçümler ve periyot olarak saklanır. Kayıt bilgileri, frekansı ayarlayabilirsiniz:

  • Düzenli olmayan
  • kayıt memuru tarafından
  • ikinci
  • bir hafta
  • ay
  • çeyrek

Belirli bir süre için kayıttan bilgi seçmek için periyodiklik gereklidir. Bir frekans belirtirseniz, sicile girişler, girişin yapıldığı dönem ile yapılacaktır. Diyelim ki "Madde fiyatları" kaydına bakarsanız, fiyat değişikliklerinin tarihçesini, hangi ölçümlerle ve hangi zaman diliminde kaydın yapıldığını görebilirsiniz.

Zaman içinde değişen bilgiler için bilgi kayıtlarında periyodiklik gereklidir, örneğin: döviz kurları, ürün fiyatları, ürün indirimleri ve marjlar vb.

kayıt memurları

Bilgi kaydına bir belge kullanarak yazarsanız, kayıt modunu ayarlamanız gerekir: “Kayıt memuruna gönderme” ve sicile yazmak için kullanılacak belgeyi seçmeniz gerekir. Ardından, bilgilerin saklanacağı kayıtta, girişin hangi belge ile yapıldığı "Kayıtçı" alanı görünecektir. Ayrıca, kayıt memuru bir dönem olarak kullanılabilir, bunun için "Periyodiklik" - "Kayıtçıya göre" alanında belirtin. Sicil memuruna ibraz, sicilin belgeye sıkıca bağlanması ve sicildeki girişlerin değiştirilmesi gerektiğinde yapılır. manuel mod kullanılamaz hale gelir.

Kayıt memurları rolünde olacak birkaç belge olabilir. Bir kayıt memuru eklemek için, gerekli bilgi kaydının özelliklerine gitmeniz, "Kayıtçılar" sekmesine gitmeniz ve kayıt memuru olarak görev yapacak belgelerin yanındaki kutuları işaretlemeniz gerekir.

Kayıt memurunun yaptığı hareketleri belgeden görebilirsiniz. Bunu yapmak için ilgilendiğiniz belgeye gitmeniz gerekir, tıklayın: Git - Kayıt şirketi aracılığıyla belge hareketleri.

Kayıt defteri özelliklerinde hakları eklemeyi unutmayın, "Haklar" sekmesinde atanabilirler. Ardından, roller listesinde, sicile haklar eklemek istediğiniz rolü seçmeniz ve haklar listesinde seçilen rolün haklarını ayarlamanız gerekir.

Kayıtların benzersizliği

Kaydın benzersizliği, döneme ve ölçümlere bağlıdır. Örneğin “Madde fiyatları” kaydına aynı gün aynı ölçülerde bir kayıt yazmak isterseniz, kaydın sıklığı bir gün içinde olduğu için başarılı olamazsınız ve program hata verir.

Frekans kayıt memuru tarafından belirlenirse, kaydın benzersizliğine de katılır.

Periyodik olmayan ve bağımsız kayıtlar için benzersizlik, ölçümlerin kombinasyonuna bağlıdır.

Formlar

Kayıtları görüntülemek için liste formunu kullanabilir, ilgilendiğiniz alanlar için seçim yapabilir, kayıtların geçmişini görüntüleyebilir ve kayıt formu üzerinden değiştirebilirsiniz. Kayıt girişlerini aşağıdaki şekilde görüntüleyebilirsiniz: üst menü"İşlemler" - "Bilgi kayıtları" düğmesine basın. Açılan pencerede ihtiyacınız olan kaydı seçin. Bundan sonra, her satırın benzersiz bir giriş olduğu bir tablo şeklinde bir liste formu açılır.

Düzenleme / oluşturma için giriş formunu kullanın, eğer giriş kayıt memuruna bağlıysa, alan kullanılamaz ve form oluşturulmaz.

Formları yapılandırıcıya, "Formlar" sekmesindeki bilgi kaydına giderek ve istediğiniz form türünün yanındaki "büyüteç" düğmesine tıklayarak eklemeniz gerekir. Ardından, gelecekteki formun alanlarını (konum, adlar ve işlevselliği reçete) yapılandırabileceğiniz bir pencere açılacaktır.


Boyutlar, kaynaklar ve aksesuarlar

Boyutların kaydın benzersizliğini oluşturması amaçlanır, daha sonra belirli bir boyutu seçmek ve kesmek için kullanılabilirler. Ölçümlerin kombinasyonu kaydın anahtarını oluşturur. yaratmamak daha iyi çok sayıdaölçümler, böylece masa büyümez ve onunla çalışma sürecinde yavaşlamaz.

Boyutların bir "Lider" onay kutusu vardır, eğer ayarlanmışsa, bu boyut var olduğu sürece kayıt veritabanında saklanacaktır. Birkaç öncü ölçüm yapılabilir. Örneğin, "Madde fiyatları" bilgi kaydında, önde gelen boyut kalemdir, kayda katılan kalemi silerseniz, bu kalem için bilgi kaydındaki kayıt otomatik olarak silinir.

Kaynaklar özet bilgileri depolamak için tasarlanmıştır: miktar, fiyat vb. Gelecekte, ölçümlere göre belirli bir süre için (kayıt periyodik ise) kaynak alacağız.

Gereksinimler, çoğu durumda, depolama amaçlıdır ek bilgi, kaydın benzersizliğine katkıda bulunmazlar. Örneğin yazar, yorum vb. bilgiler ayrıntılara girilebilir.

Bilgi kaydı ile aşağıdaki eylemleri gerçekleştirebilirsiniz:

  • 1C bilgi kaydındaki bir girişi silme

özellikler

- Bir dizi boyuta göre kayıtların benzersizliği: bilgi kaydındaki her kayıt, kaynağın yeni bir değeridir.

- Bilgi kaydının kayıtları periyodik olabilir veya olmayabilir.

- Bilgi kaydı, kayıt memuruna bağımlı ve bağımsız olabilir.

- İstenilen tarihte ilk ve son kayıtların kesimini yapmak mümkündür. Bu, sanal tablolar tarafından uygulanır: SliceFirst ve SliceLast. Bu tabloları kullanmak için hem seçim hem de sorgu kullanabilirsiniz (sorgu tasarımcısında bu sanal tabloları alıp sorgulayabilirsiniz). Bu tablolar, bilgi kaydı periyodik ise mevcut olacaktır.

"Adlandırma fiyatları" kaydı, periyodik bir bilgi kaydıdır, girişler kayıt memuruna göre yapılır.

Resim, frekansın bir gün içinde ayarlandığını göstermektedir. Bu, gün içindeki benzersiz ölçümlere göre fiyatın günde bir kez değiştirilebileceği anlamına gelir.

Kayıt, "Öğeler için fiyatların ayarlanması" belgesine tabidir. Yani, sicildeki giriş bu belgeden geliyor. Belirli bir belgedeki hareketler, "Madde fiyatlarının ayarlanması" belgesinin biçiminden görüntülenebilir.

Kayıt, "Fiyat tipi", "Terminoloji" ve "Maddenin karakteristiği" boyutlarıyla öğenin fiyatı hakkında bilgi depolamak için tasarlanmıştır. Önde gelen boyutlar, boyutun üç alanıdır, seçim sırasında üzerinde seçim yapmak mümkün olacaktır.

Çözüm: makaleyi okuduktan sonra, 1C bilgi kaydı oluşturabilecek, boyutlar ve kaynaklar ekleyebilecek, düzenleme ve liste formları oluşturabileceksiniz. Bir kayıt oluşturun ve mevcut kayıtlardan bir seçim yapın. Herhangi bir sorunuz varsa, makaledeki yorumları kullanın, sorunuza hızlı bir şekilde cevap vermeye çalışacağım.

V test yapılandırması Aşağıdaki ilk verilerle birlikte periyodik bir "Nomenklatür Fiyatları" bilgi kaydına sahibiz:

Şekil ayrıca kaydın meta verilerinin yapısını da gösterir. Gördüğümüz gibi, kayıt, "Ürünler" aramasına başvuru türüyle birlikte "Ürün" boyutunu, ayrıca "Fiyat" sayısal kaynağını ve "OldPrice" özniteliğini içerir.

Diyelim ki raporda, eski fiyatın 50 veya daha az olması şartıyla, ürünler ve fiyatları için en son kayıtlardan bir dilim almamız gerekiyor.

İki istek seçeneği

Doğru ve yanlış seçenekleri değerlendireceğimizi hemen söylemeliyim, sonuncusuyla başlayalım. Bu hata genellikle acemi programcılar tarafından yapılır. Böylece rapor için aşağıdaki sorgu yazıldı:

İstek = Yeni İstek; Sorgu. Metin = " SEÇ | | | | | İTİBAREN | RegisterInformation. FiyatlarNomenklatür. Dilim Son AS Fiyatlar Öğeler Son Dilim NEREDE | FiyatlarÜrünlerDilimSon. Eski fiyat< = 50 " ;

"WHERE" bölümündeki duruma dikkat edin. Ana hata bu! Bu sorgu herhangi bir kayıt döndürmez ve nedeni şudur: sanal tablolar kullanılırken bizim durumumuzda "Son Dilim" veri tabanından önce sanal tabloda anlatılan koşullara göre veri seçilir ve ardından sorguda anlatılan işlemler yapılır. metin (gruplama, "NEREDE" bölümündeki koşullar, sıralama vb.).

Bu nedenle, örneğimizde sorgu bir sonuç döndürmez. İlk olarak, ikincisinden bir dilim alır ve bundan sonra "OldPrice" özniteliği için bir koşul belirler. Diyagramda şöyle görünüyor:

Sorunu doğru bir şekilde çözmek için "OldPrice" özniteliğinin koşulu sanal tablonun koşullarına aktarılmalıdır. Doğru istek metni şöyle görünür:

İstek = Yeni İstek; Sorgu. Metin = " SEÇ FiyatlarÜrünlerDilimSon. Dönem, FiyatlarÜrünlerDilimSon. Ürün, FiyatlarÜrünlerDilimSon. Fiyat, FiyatlarÜrünlerDilimSon. Eski fiyat İTİBAREN RegisterInformation. FiyatlarNomenklatür. DilimSon(, EskiFiyat< = 50 ) AS FiyatlarÜrünlerDilimSon"

Şimdi istek doğru verileri alacaktır, çünkü en son fiyatların dilimi "OldPrice" özniteliğinin koşulu zaten dikkate alınarak alınacaktır.

Sonuçlar

Yukarıdakilerin, sorgularda (birikim kayıtları, muhasebe kayıtları, görevler vb. için) sanal tabloların kullanıldığı tüm durumlar için geçerli olduğu anlaşılmalıdır.

Bu aynı zamanda sanal tabloların kullanımının ana kuralına da işaret eder: "bir sanal tablo kullanarak, filtre parametrelerini doğrudan sanal tabloda ayarladığınızdan emin olun, aksi takdirde sorgu gereksiz verileri alır ve bu daha sonra filtrelenir."

Bazen, periyodik bilgi kaydından aynı anda birkaç tarih için veri alınması talep edilir. Tipik bir örnek döviz kurlarıyla çalışmaktır. Bir örnek kullanarak bu sorunu çözmek için algoritmayı düşünün.

Sorunun formülasyonu

Veritabanında, başlığında “Para Birimi” özelliği bulunan “Mal ve Hizmet Satışı” belgesi oluşturulmuştur. Talep, her belge için belge tarihindeki başlıktan güncel döviz kurunu almak için gereklidir. Döviz kurlarının depolanması, "Döviz Kurları" bilgisinin periyodik kaydında gerçekleştirilir.
Bu soruna doğrudan bir çözüm, bir döngü içinde bir sorgu olabilir: tüm belgeleri tarihleri ​​ve para birimleri ile almak ve seçimde, en son “Döviz Oranları” kaydının diliminin sanal tablosuna erişmek. Ama o zamandan beri döngüdeki bir istek “kötü” ise, görevi tek bir istekle uygulamaya çalışalım.

Çözüm

Sorunu çözmek için sorgudaki tabloların olduğu gerçeğini kullanacağız. sadece alanların eşitliği için değil bağlanabilir.

RealizatsiyaTovarovUslug.Ssylka, Dokument.RealizatsiyaTovarovUslug RealizatsiyaTovarovUslug RegistrSvedeniy.KursyValyut NASIL YAPILIR KursyValyut RealizatsiyaTovarovUslug.Valyuta = KursyValyut.Valyuta katılmak sol NASIL bir dönem VTPeriodyUstanovkiKursov PUT OUT olarak RealizatsiyaTovarovUslug.Valyuta, MAX (KursyValyut.Period) Ve RealizatsiyaTovarovUslug.Data> = KursyValyut.Period TERCİH Gruplandırılmış Hizmet Mallarının Yazılım Gerçekleştirilmesi Link, Hizmet Mallarının Gerçekleştirilmesi Para Birimi; ///////////////////////////////////////////// //////////////////////// VTPeriodsAyar Oranlarını SEÇ.Referans, VTPeriyodlarAyar Oranları.Para Birimi, OranlarPara Birimi.VTPeriyodlardan Olan OranlarıVTPeriyodlar Olarak Ayarlama Oranları LEFT JOIN Veri kaydı Döviz Kurları AS Para Birimi Oranları ON TUPeriodsRateSettings.Period = Döviz Oranları.Period ve SalPeriodsCurrencySettings.Currency = Currencies.Currency

İstekteki eylemlerin sırası:

  1. Döviz kurunu belirleme döneminin her belgesi için alma. Belgeler FİZİKSEL tablosu "Döviz Oranları"na bağlanır. Burada bağlantı koşullarına dikkat etmelisiniz. Para birimleri eşit olmalı ve belgenin tarihi >= bilgi kaydının süresi.
    Böyle bir bağlantının bir sonucu olarak, her belge için, koşulu karşılayan bir dizi satır elde edilecektir: belgenin para birimi için tüm oran kayıtları, en geç belge tarihinden itibaren belirlenir.
    Son adım, maksimum oran dönemini elde etmek için satırların gruplandırılması olacaktır. Sonuç olarak, her belge için gerekli oran belirleme süresi istenilen para birimi(döviz kurunu ayarlamak için maksimum tarih, ancak belgenin tarihinden daha fazla değil). Sonuç, VTPeriodsSettingRate geçici tablosuna yerleştirilir.
  2. Kurs almak. Geçici tablo VT Dönemleri Oranları Ayarlama FİZİKSEL tablosu "Döviz Oranları"na bağlanır. Bağlantı, Belge Para Birimi ve ikinci zaman tablosunda tanımlanan kur belirleme periyoduna göre yapılır.

Tepe