Функция за получаване на моментна снимка на последните записи в информационния регистър. Функция за получаване на моментна снимка на последните записи в информационния регистър Размери, ресурси и подробности

/
Осъществяване на обработка на данни

Разрешаване на суми за периодични информационни регистри

Обхват на приложение: управлявано приложение, мобилно приложение, редовно приложение.

1.1. За регистри с периодична информация се препоръчва да се разрешават общи суми, ако са изпълнени всички от следните условия:

  • в регистъра се очаква голям обем данни (например, оправдано е за регистър с цени на артикули; но няма смисъл за регистър с обменни курсове);
  • конфигурацията осигурява честотни заявки към срезове от последния в текущия момент и/или срезове от първия за получаване на текущи данни (т.е. когато периодът не е посочен в параметрите на виртуалните таблици Парче от ПървияИ Парче от последния);
  • докато останалите условия за виртуални маси Парче от ПървияИ Парче от последнияса зададени само на стойности на измерване (и разделители в режим Самостоятелно и съвместно);
  • ограниченията за достъп до регистрирани данни използват само размери (и разделители, които са в режим Самостоятелно и съвместно).

За пълен списък на всички условия, когато заявките използват общи суми на регистрите на информация, вижтедокументация за платформата 1C:Enterprise.

Например, ако конфигурацията включва често изпълнявани заявки към регистъра Номенклатури на ценитеза да получите текущи цени на артикулите:

Избери предмет. Артикул КАТО Артикул, Номенклатура на цените. Цена КАТО Цена,. . . ОТ Указател. Номенклатура AS Номенклатура ЛЯВА ВРЪЗКА Информация за регистър. Номенклатури на цените. SliceLast(, PriceView = &Вид на цените) КАК Номенклатури на ценитеНоменклатура на цените на софтуера. Номенклатура = Номенклатура. връзка . . .

след това, при спазване на всички други условия, изброени по-горе, настройка на свойството Разрешаване на общи суми: част от последнитезначително ще ускори изпълнението на такива заявки, поради факта, че селекцията ще се извършва директно от допълнителни таблици, които съхраняват само последните стойности (за изрязване на последните) и първите стойности (за изрязване на първите).

1.2. Освен това трябва да се обмислят алтернативни опции за преразглеждане на заявките в регистъра, така че тези условия да бъдат изпълнени.

Например, ако в някои случаи данните в регистъра Номенклатури на ценитесе записват на бъдеща дата и при избор на стоки към този регистър винаги се изпълнява заявка за текущата дата (датата е изрично посочена в параметъра на виртуалната таблица Парче от последния), тогава резултатите няма да ускорят изпълнението на такива заявки. Тъй като сумите се изграждат само за първия и последния запис на регистъра.

Ако обаче при отваряне на формуляра за избор на продукт анализирате дали има регистратори с бъдеща дата и ако няма такива, стартирате друга заявка за част от последния, без да зададете датата, тогава такава заявка ще работи по-бързо .

2. Във всички останали случаи общите суми не трябва да се допускат за периодични информационни регистри. На първо място, ако

  • най-често (винаги) се правят заявки към виртуалните таблици на първия/последния периодичен регистър на информация за определен период (например за дата на документа).
  • в условия за виртуални маси Парче от ПървияИ Парче от последнияНай-често (винаги) се използват подзаявки и съединения (извиквания „чрез точка“ към полетата на свързани таблици). Например в този случай:

3. Не е необходимо да се предоставя отделен механизъм за преизчисляване на суми в конфигурацията, тъй като актуализирането на таблиците с суми се извършва автоматично всеки път, когато набор от записи се запише в регистъра.

1C информационни регистритова е структуриран набор от данни с измерения и ресурси. Предназначен за съхраняване на периодична информация.

Периодичност

Информацията се съхранява по измерение и период. Можете да зададете честотата на информационния регистър:

  • Непериодични
  • от регистратора
  • второ
  • седмица
  • месец
  • четвърт

Честотата е необходима за избор на информация от регистъра за определен период от време. Ако посочите периодичност, вписванията в регистъра ще се извършват с периода, в който е направено вписването. Да речем, че ако погледнете регистъра „Цени на артикулите“, можете да видите историята на промените в цените, с какви измервания и в какъв период от време е направено въвеждането.

Периодичността в информационните регистри е необходима за информация, която се променя с течение на времето, например: валутни курсове, цени на продукти, отстъпки и надценки на продукти и др.

Регистратори

Ако правите запис в информационния регистър с помощта на документ, трябва да зададете режим на въвеждане: „Подаване на регистратора“ и да изберете документа, с който ще се извърши записът в регистъра. След това в регистъра ще се появи полето „Регистратор”, където ще се съхранява информация с какъв документ е извършено вписването. Записващото устройство може да се използва и като период, посочете в полето „Честота“ - „По записващо устройство“. Подчинение на регистратора се извършва, когато е необходимо стриктно да се свърже регистър с документ и ръчната промяна на записи в регистъра става недостъпна.

Може да има няколко документа, които ще действат като регистратори. За да добавите регистратор, трябва да отидете в свойствата на желания информационен регистър, да отидете в раздела „Регистратори“ и да поставите отметки в квадратчетата до документите, които ще действат като регистратор.

Можете да видите движенията, които записващото устройство прави от документа. За да направите това, трябва да отидете на документа, който ви интересува, щракнете върху: Отиди – Движения на документи от регистратора.

Не забравяйте да добавите права в свойствата на регистъра; те могат да бъдат присвоени в раздела „Права“. След това в списъка с роли трябва да изберете ролята, към която искате да добавите права в регистъра и в списъка с права да зададете правата за избраната роля.

Уникалност на записите

Уникалността на запис зависи от периода и измерванията. Например, ако искате да запишете запис със същите размери в регистъра „Цени на артикулите“ в същия ден, тогава няма да можете да направите това и програмата ще причини грешка, тъй като периодичността на регистъра е в рамките на един ден.

Ако честотата е зададена от регистратора, тя също участва в уникалността на записа.

За непериодични и независими регистри уникалността зависи от комбинацията от измерения.

Форми

За да прегледате записите, използвайте формата за списък, в нея можете да зададете избор според полетата, които ви интересуват, да видите хронологията на записите и да ги промените през формата за запис. Можете да видите записите в регистъра, както следва: в горното меню щракнете върху бутона „Операции“ - „Информационни регистри“. В прозореца, който се отваря, изберете регистъра, от който се нуждаете. След това ще се отвори списък със списък под формата на таблица, където всеки запис е уникален запис.

За редактиране/създаване използвайте формуляра за запис; ако записът е подчинен на регистратора, полето няма да бъде достъпно и формулярът не може да бъде създаден.

Трябва да добавите формуляри в конфигуратора, като отидете в информационния регистър, в раздела „Формуляри“ и щракнете върху „лупа“ до желания тип формуляр. След това ще се отвори прозорец, където можете да конфигурирате полетата на бъдещия формуляр (местоположение, имена и да посочите функционалност).


Размери, ресурси и детайли

Размерите са предназначени да формират уникалността на записа в бъдеще, можете да ги изберете и да направите разрез въз основа на конкретно измерение. Комбинацията от измервания формира ключа за запис. По-добре е да не създавате голям брой размери, така че масата да не расте и да не се забавя, докато работите с нея.

Измеренията имат квадратче за отметка „Водещо“; ако е отметнато, записът ще се съхранява в базата данни, докато съществува това измерение. Могат да се направят няколко водещи измервания. Например в информационен регистър „Цени на артикули“ водещото измерение е артикулът; ако изтриете артикул, който е включен в записа, записът в информационния регистър за този артикул ще бъде изтрит автоматично.

Ресурсите са предназначени да съхраняват обобщена информация: количество, цена и др. В бъдеще ще получаваме ресурси за определен период от време (ако регистърът е периодичен), според измерванията.

Подробностите в повечето случаи са предназначени за съхраняване на допълнителна информация; Например, можете да въведете информация като автор, коментар и т.н. в детайлите.

Можете да извършвате следните действия с информационния регистър:

  • Изтриване на запис в информационния регистър 1C

Особености

— Уникалност на записите въз основа на набор от измерения: всеки запис в информационния регистър е нова ресурсна стойност.

— Вписванията в информационния регистър могат да бъдат периодични или не.

— Информационният регистър може да бъде зависим и независим от регистратора.

— Възможно е да се направи разрез на първия и последния запис за желаната дата. Това се осъществява чрез виртуални таблици: „Отрез на първия“ и „Отрез от последния“. За да използвате тези таблици, можете да използвате както селекция, така и заявка (в дизайнера на заявки ще изберете тези виртуални таблици и можете да направите заявка за тях). Тези таблици ще бъдат налични, ако информационният регистър е периодичен.

Регистър „Цени на артикули” е периодичен регистър на информацията, вписванията се извършват според регистратора.

Изображението показва, че честотата е зададена в рамките на един ден. Това означава, че цената може да се променя веднъж на ден въз основа на уникални измервания през деня.

Регистърът е подчинен на документ „Определяне на артикулни цени”. Това означава, че вписването в регистъра идва от този документ. Движенията по конкретен документ могат да се видят от документната форма „Задаване на цени на артикули“.

Регистърът е предназначен за съхраняване на информация за цената на артикул, с дименсии „Вид цена“, „Артикул“ и „Характеристики на артикул“. Водещото измерение са всички три измерени полета; ще бъде възможно да се правят селекции въз основа на него при вземане на проби.

Заключение:След като прочетете статията, ще можете да създадете 1C информационен регистър, да добавите измерения и ресурси, да конфигурирате формуляри за редактиране и списъци. Създайте запис и изберете съществуващи записи. Ако имате въпроси, използвайте коментарите в статията, ще се опитам бързо да отговоря на въпроса ви.

Понякога трябва да използвате заявка, за да получите данни за няколко дати наведнъж от регистър с периодична информация. Типичен пример е работата с валутни курсове. Нека разгледаме алгоритъм за решаване на този проблем, използвайки пример.

Формулиране на проблема

В базата данни е създаден документ „Продажби на стоки и услуги“, в чийто хедър има атрибут „Валута“. Заявката изисква за всеки документ да се получи текущият валутен курс от заглавката към датата на документа. Валутните курсове се съхраняват в периодичен информационен регистър „Курсови курсове”.
Директно решение на този проблем може да бъде заявка в цикъл: получаване на всички документи с техните дати и валути и, в извадката, достъп до виртуалната таблица с част от най-новия регистър „Валутни курсове“. Но защото заявка в цикъл е „лоша“, нека се опитаме да изпълним задачата с една заявка.

Решение

За да разрешим проблема, ще използваме факта, че таблиците в заявката могат да бъдат свързани не само за равенство на полетата.

ИЗБЕРЕТЕ Sales of GoodsServices.Link, Sales of GoodsServices.Currency, MAXIMUM(Currency Rates.Period) AS Period PLACE IN PeriodsSetting Rates FROM Document.Sale of GoodsServices HOW Sales of GoodsServices LEFT CONNECTION Регистър на информация.Валутни курсове КАК Валутни курсове Продажби на продукти Услуги.Валута = Валутни курсове.Валута и продажби на стоки.Услуги.Дата >= Валутни курсове.ГРУПА Продажби на стоки и услуги.Връзка, Продажби на стоки и услуги. /////////////////////////////////////////////// // /////////////////////////// ИЗБЕРЕТЕ VTPeriodsSetting Rates.Link, VTPeriodsSetting Rates.Currency, RatesCurrency.Rate FROM VTPeriodsSetting Rates AS VTPeriodsSetting Rates LEFT CONNECTION Register Information . Валутни курсове КАТО Валутни курсове НА VTPeriodsRate Settings.Period = Валутни курсове.Period И VTPeriodsRate Settings.Currency = Валутни курсове.Currency

Процедура за заявка:

  1. Получаване на срок за настройка на обменния курс за всеки документ.Документите са свързани с ФИЗИЧЕСКАТА таблица “Валутни курсове”. Тук трябва да обърнете внимание на условията за свързване. Валутите трябва да са еднакви, а датата на документа >= периода на информационния регистър.
    В резултат на такава връзка за всеки документ ще се получи набор от редове, които отговарят на условието: всички записи на обменните курсове за валутата на документа, установени не по-късно от датата на документа.
    Последната стъпка ще бъде групирането на редовете, за да се получи максималния период на ставка. В резултат на това за всеки документ ще бъде получен необходимия период за настройка на обменния курс за желаната валута (максималната дата за настройка на обменния курс, но не повече от датата на документа). Резултатът се поставя във временната таблица VTPeriodsSettingRates.
  2. Получаване на курс.Временната таблица VTPeriodsSetting Rates е свързана с ФИЗИЧЕСКАТА таблица „Валутни курсове“. Връзката се осъществява според валутата на документа и периода на настройка на курса, дефиниран във втората временна таблица.

: Парче от ПървияИ Парче от последнияНека разгледаме работата с тези виртуални таблици с помощта на 1C. Много по-често се използва Парче от последния, така че нека започнем с него.

Част от най-новото ви позволява да получите последния запис на информационния регистър за определена дата в контекста на измерванията. За последната (първата) таблица на срезове е възможно да се зададат два параметъра в скоби, разделени със запетаи. Първият параметър съдържа датата, на която е направен срезът (ако параметърът не е зададен, срезът се прави на текущата дата). Вторият параметър е условие в езика за заявки 1C и ви позволява да зададете различни селекции. По правило при тези селекции се използват измервания. Всичко това звучи доста неясно, така че е невъзможно да се направи без пример.
Така че нека имаме периодичен регистър на информацията Ценакойто съхранява цени по продукти и доставчици. Периодичността на регистъра е ден.

Регистърът съдържа следните записи

Като начало ще получим част от последното, без да използваме параметри, като изпълним следната заявка:

ИЗБЕРЕТЕ PriceSliceLast.Period AS Период, PriceSliceLast.Product AS Product, PriceSliceLast.Supplier AS Supplier, PriceSliceLast.Amount AS Amount FROM Register Information.Price.SliceLast AS PriceSliceLast

Тъй като параметрите не са посочени, срезът се извършва на текущата дата - 01.02.2017 г. В резултат на това получаваме следната таблица

Тук виждаме, че комбинацията от измерения Продукт + Доставчик е уникална, т.е. За всяка комбинация от регистрационни измервания е взет записът с максималната дата и датата на запис е по-малка или равна на текущата дата.

Да кажем, че трябва да направим същото, но искаме да получим записи с дата, по-малка или равна на 01/15/2017. За да направите това, трябва да промените реда с последната таблица на срезове в заявката, както следва

ОТ RegisterInformation.Price.SliceLast(&CutDate,) AS PriceSliceLast

Преди да изпълните заявката, разбира се, трябва да й предадете параметър &Дата на рязане. Сега резултатът от заявката ще изглежда така

И накрая, представете си, че трябва да получим моментна снимка на най-новите за същата дата при условие, че имаме стоките Молив, и доставчика Канцеларски материали. За да направите това, посочете втория параметър в заявката

FROM RegisterInformation.Price.Last Cut(&CutDate, Product = &Product AND Supplier = &Supplier) AS PriceLast Cut

В резултат на това получаваме само един запис

За да не се изгубите във всички тези скоби и запетаи, по-добре е да използвате конструктор на заявки. Ще ви покажа, използвайки последната заявка като пример.

След като изберете таблица с част от най-новите в дизайнера на заявки, трябва да щракнете върху бутона Опции за виртуална масаи в прозореца, който се отваря, напишете

Не е трудно да се досетите, че за първия срез принципът на работа е същият, с изключение на това, че се избира първият запис след датата на изрязване.

В тестовата конфигурация имаме периодичен информационен регистър „Номенклатурни цени” със следните изходни данни:

Фигурата също така показва структурата на метаданните на регистъра. Както виждаме, регистърът съдържа измерението „Продукт“ с референтен тип „Продукти“, както и цифров ресурс „Цена“ и атрибут „OldPrice“.

Да кажем, че в отчет трябва да получим част от най-новите записи за продукти и техните цени при условие, че старата цена е по-малка или равна на 50.

Две опции за заявка

Веднага ще кажа, че ще разгледаме правилните и неправилните опции. Това е грешка, която начинаещите програмисти често правят. И така, следната заявка беше написана за отчета:

Заявка = Нова заявка; Заявка. Текст = "ИЗБЕРЕТЕ | | | | | ОТ | Регистър на информацията. Номенклатури на цените. Отрязък от най-новите HOW PricesNomenclatureОтрезък от най-новите|КЪДЕ | PricesNomenclatureSliceLast. Стара цена< = 50 " ;

Обърнете внимание на условието в раздел "КЪДЕ". Това е основната грешка! Тази заявка няма да върне нито един запис и ето защо: когато използвате виртуални таблици, в нашия случай „Последен отрязък“, данните първо се извличат от базата данни според условията, описани във виртуалната таблица, и след това действията, описани в текст на заявката се извършва (групиране, условия в секцията "КЪДЕ", сортиране и др.).

Следователно в нашия пример заявката не връща резултат. Първо, той получава парче от последното и едва след това задава условието на атрибута „Стара цена“. Ето как изглежда на диаграмата:

За да разрешите проблема правилно, условието за атрибута „Стара цена“ трябва да бъде прехвърлено към условията на виртуалната таблица. Ето как ще изглежда правилният текст на заявката:

Заявка = Нова заявка; Заявка. Текст = "ИЗБЕРЕТЕ PricesNomenclatureSliceLatest. Месечен цикъл, PricesNomenclatureSliceLatest. продукт, PricesNomenclatureSliceLatest. Цена, PricesNomenclatureSliceLatest. Стара цена ОТ Регистър на информацията. Номенклатури на цените. SliceLast(, OldPrice< = 50 ) КАК ЦЕНИНоменклатураРазрез Последни"

Сега заявката ще получи правилните данни, тъй като ще бъде получена част от последните цени, като се вземе предвид условието за атрибута „OldPrice“.

резултати

Трябва да се разбере, че горното се отнася за всички случаи на използване на виртуални таблици в заявки (за натрупващи регистри, счетоводни регистри, задачи и др.).

Това също предполага основното правило за използване на виртуални таблици: „когато използвате виртуална таблица, не забравяйте да зададете параметрите за избор директно във виртуалната таблица, в противен случай заявката ще получи ненужни данни, които след това ще бъдат използвани за избор.“