- Bir register'ın doğru sanal tablosunu seçmek ve parametrelerini doldurmak
- Bir koşulun sanal tablo parametresinde mi yoksa
ГДЕ'de mi olması gerektiğine karar vermek - Toplu sorgularda geçici tablolar kullanmak ve sorguları iyileştirmek
Müdür üç şey istiyor: 1 Eylül'deki stok bakiyeleri, aylara göre satışlar ve bugünkü fiyat listesi. Her biri bir register'ın sanal tablosuna yapılan tek bir sorguyla alınır. Sanal tablo tabanda fiziksel olarak saklanmaz; platform onu register'ın toplamlarından ve hareketlerinden, verdiğin parametrelerle hesaplar.
Sanal tablolar ve parametreleri
| Sanal tablo | Parametreler | Kaynak alanları (kaynak Количество) |
|---|---|---|
Остатки | (Период, Условие) | КоличествоОстаток |
Обороты | (НачалоПериода, КонецПериода, Периодичность, Условие) | КоличествоОборот, КоличествоПриход, КоличествоРасход |
ОстаткиИОбороты | (НачалоПериода, КонецПериода, Периодичность, МетодДополнения, Условие) | КоличествоНачальныйОстаток, КоличествоПриход, КоличествоРасход, КоличествоКонечныйОстаток |
СрезПоследних / СрезПервых | (Период, Условие) | periyodik bilgi register'ının kaynakları |
Приход/Расход alanları yalnızca bakiye register'larında bulunur. Muhasebe register'larında ayrıca ОборотыДтКт (DrCrTurnovers) vardır.// Остатки на дату по одному складу
ВЫБРАТЬ
Остатки.Товар КАК Товар,
Остатки.КоличествоОстаток КАК Остаток
ИЗ
РегистрНакопления.ОстаткиТоваров.Остатки(&НаДату, Склад = &Склад) КАК Остатки
ГДЕ
Остатки.КоличествоОстаток > 0Остатки()) güncel bakiyeler alınır; bu en hızlı seçenektir.// Продажи по месяцам (регистр оборотов Продажи)
ВЫБРАТЬ
Продажи.Период КАК Период,
Продажи.Товар КАК Товар,
Продажи.КоличествоОборот КАК Количество,
Продажи.СуммаОборот КАК Сумма
ИЗ
РегистрНакопления.Продажи.Обороты(&Начало, &Конец, Месяц, ) КАК Продажи
УПОРЯДОЧИТЬ ПО
Период,
Сумма УБЫВДень, Месяц, Год, Регистратор…) verildiğinde bir Период alanı oluşur.// Цены на дату (периодический регистр сведений)
ВЫБРАТЬ
Цены.Товар КАК Товар,
Цены.Цена КАК Цена
ИЗ
РегистрСведений.ЦеныТоваров.СрезПоследних(&НаДату, ) КАК ЦеныKoşul: parametrede mi, WHERE'de mi?
Sanal tablonun Условие (koşul) parametresi kayıtları hesaplamadan önce, ГДЕ ise hazır sonucu sonra süzer. Bir boyut koşulu (Склад = &Склад) için sonuç aynıdır ama parametre çok daha hızlıdır, çünkü platform gereksiz depoların bakiyelerini hiç hesaplamaz. Bir kaynak koşulu (КоличествоОстаток > 0) ise yalnızca ГДЕ'de olabilir; kaynak ancak hesaplamadan sonra bilinir.
Geçici tablolar ve toplu sorgular
ПОМЕСТИТЬ (INTO), bir sorgu sonucunu geçici bir tabloya yazar; sonraki sorgular onu sıradan bir tablo gibi okur. Tek metinde ; ile ayrılmış birkaç sorgu bir toplu sorgu (batch) oluşturur. Büyük geçici tablolar için ИНДЕКСИРОВАТЬ ПО (INDEX BY) ekle. Geçici tablo birkaç ayrı Запрос nesnesi arasında gerekiyorsa МенеджерВременныхТаблиц (TempTablesManager) kullanılır.
ВЫБРАТЬ
Строки.Товар КАК Товар,
СУММА(Строки.Количество) КАК Нужно
ПОМЕСТИТЬ ВТТовары
ИЗ
Документ.РасходТовара.Товары КАК Строки
ГДЕ
Строки.Ссылка = &Ссылка
СГРУППИРОВАТЬ ПО
Строки.Товар
ИНДЕКСИРОВАТЬ ПО
Товар
;
ВЫБРАТЬ
ВТТовары.Товар КАК Товар,
ВТТовары.Нужно КАК Нужно,
ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК Есть
ИЗ
ВТТовары КАК ВТТовары
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(
, Товар В (ВЫБРАТЬ Т.Товар ИЗ ВТТовары КАК Т)) КАК Остатки
ПО ВТТовары.Товар = Остатки.Товар
ГДЕ
ЕСТЬNULL(Остатки.КоличествоОстаток, 0) < ВТТовары.НужноBir toplu sorguyu Выполнить() ile çalıştırdığında son sorgunun sonucunu alırsın. Her sorgunun sonucu gerekiyorsa ВыполнитьПакет() (ExecuteBatch) çağır; sonuçların bir dizisini döndürür.
Hızlı sorgu kuralları
- Döngü içinde sorgu çalıştırma. Gereken her şeyi tek bir toplu sorguda al.
- Boyut koşullarını sanal tablonun parametresine yaz.
ВЫБРАТЬ *yazma; yalnızca gereken alanları seç.- Uzun nokta zincirlerinden kaçın; bileşik türleri
ВЫРАЗИТЬile daralt. - Birleştirme koşullarında
ИЛИyerine çoğu zamanОБЪЕДИНИТЬ ВСЕdaha hızlıdır. - Yavaşlığın yerini tahmin etme, ölç:
Отладка › Замер производительности(Performans ölçümü) her satırın süresini gösterir.
Önemli noktalar
Остаткиtarihteki bakiye,Оборотыdönem cirosu,ОстаткиИОборотыikisi birden,СрезПоследнихtarihteki son değerdir.- Tarih parametresi o anı dahil etmez; gerektiğinde
Новый Граница(…, ВидГраницы.Включая)kullan. - Boyut koşulları parametreye, kaynak koşulları
ГДЕ'ye yazılır. ПОМЕСТИТЬgeçici tablo oluşturur;;sorguları bir toplu sorguda birleştirir.- Hız: döngüde sorgu yok, yalnızca gerekli alanlar, kısa nokta zincirleri, önce ölçüm.
Kendini test et
10 soru. Her doğru cevap XP kazandırır.