Малки трикове на големи искания. Предварително дефинирани типове данни

Малки трикове на големи искания.  Предварително дефинирани типове данни
Малки трикове на големи искания. Предварително дефинирани типове данни

За формиране и изпълнение на заявки към таблици на база данни в платформата 1C се използва специален обект на език за програмиране. Заявка. Този обект се създава чрез извикване на конструкцията Нова заявка. Удобно е да използвате заявка, когато трябва да получите сложна селекция от данни, групирани и сортирани според нуждите. Класически пример за използване на заявка е получаването на обобщена информация за състоянието на регистъра за натрупване определен моментвреме. Освен това механизмът за заявки улеснява получаването на информация в различни времеви секции.

Текстът на заявката е инструкцията, според която заявката трябва да бъде изпълнена. Основният текст на заявката описва:

  • таблици на информационна база, използвани като източници на данни за заявки;
  • полета на таблица, които трябва да бъдат обработени в заявката;
  • правила за групиране;
  • сортиране на резултатите;
  • и т.н.
Инструкцията е съставена на специален език - езикът на заявките и се състои от отделни части - секции, изречения, ключови думи, функции, аритметични и логически оператори, коментари, константи и параметри.

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

  • enum стойности;
  • предварително дефинирани данни:
  • указатели;
  • планове на типове характеристики;
  • сметкопланове;
  • планове за видове изчисления;
  • празни връзки;
  • стойности на точки на бизнес процеси.
Освен това текстът на заявката може да съдържа системни изброени стойности, които могат да бъдат присвоени на полетата в таблиците на базата данни: AccumulationMotionType, AccountType и AccountingMovementType. Заявките се отнасят до предварително дефинирани конфигурационни данни и стойности на системно изброяване с помощта на литерал от тип функция ЗНАЧЕНИЕ. Този литерал подобрява четливостта на заявката и намалява броя на параметрите на заявката.

Пример за използване на литерал ЗНАЧЕНИЕ:
WHERE Град = СТОЙНОСТ(Директория.Градове.Москва)
WHERE Град = VALUE(Reference.Cities.EmptyReference)
WHEREItemType = VALUE(Enumeration.ProductTypes.Service)
WHEREMovementType = VALUE(MovementTypeAccumulation.Income)
WHERE RoutePoint = VALUE(BusinessProcess.BusinessProcess1.RoutePoint.Action1

2) Използване на инструкции АВТОМАТИЧНА ПОРЪЧКАв заявка времето за изпълнение на заявката може да бъде много високо, така че ако не се изисква сортиране, тогава е по-добре да не го използвате изобщо. В повечето случаи най-добрият начин за прилагане на сортиране е с израза СОРТИРАНЕ ПО.

Автоматичното подреждане работи съгласно следните принципи:

  • Ако клаузата ORDER BY е посочена в заявката, тогава всяка препратка към таблицата в тази клауза ще бъде заменена от полетата, по които таблицата е сортирана по подразбиране (за директории, това е кодът или името, за документи, датата на документа). Ако полето за подреждане се отнася за йерархична директория, тогава ще се приложи йерархично сортиране по тази директория.
  • Ако в заявката няма клауза ORDER BY, но има клауза TOTAL, тогава резултатът от заявката ще бъде подреден по полетата, налични в клаузата TOTAL след ключова думаСофтуер, в същата последователност и, ако общите суми са изчислени от полетата - връзки, след това от полетата за сортиране по подразбиране на таблиците, които са били препратени.
  • Ако в заявката няма клаузи ORDER BY и TOTAL, но има клауза GROUP BY, тогава резултатът от заявката ще бъде сортиран по присъстващите в изречението полета в същата последователност и, ако групирането е извършено по полета - връзки, след което по подразбиране полета за сортиране на таблици, които са били посочени.
  • Ако заявката не съдържа клаузите и ORDER BY, TOTAL и GROUP BY, резултатът ще бъде подреден по полетата за сортиране по подразбиране за таблиците, от които са избрани данните, в реда, в който се показват в заявката.

Ако заявката съдържа клаузата TOTAL, всяко ниво на сумите се подрежда отделно.

3) За да избегнете повторна заявка към базата данни при показване на резултата от заявката на потребителя (например създаване на заявка или показване на резултата от заявката с помощта на документ с електронна таблица) е полезно да използвате инструкцията ВРЪЗКИ ЗА ПРЕЗЕНТАЦИЯ A, което ви позволява да получите представяне на референтна стойност.

Също така е възможно да използвате инструкцията ПРОИЗВОДИТЕЛНОСТ- предназначени за получаване на низово представяне на стойност от произволен тип. Разликата между тези инструкции е, че в първия случай, ако инструкциите предават препратка, резултатът ще бъде низ, а в други случаи резултатът ще бъде стойността на предадения параметър. Във втория случай резултатът от инструкцията винаги ще бъде низ!

4) Ако заявката съдържа поле със съставен тип, тогава за такива полета става необходимо да се прехвърлят стойностите на полето към конкретен тип с помощта на инструкцията ЕКСПРЕСНО, което ще ви позволи да премахнете ненужните таблици от лявата връзка с поле от съставен тип данни и да ускорите заявката.

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

ИЗБИРАМ
EXPRESS(Остатъци от стоки. Регистратор AS Документ. Разписка за стоки). Номер AS Номер на разписка,
EXPRESS(Остатъци от стоки.Регистратор AS Документ.Получаване на стоки).Дата КАТО Дата на получаване
ОТ
Регистър на натрупване. Остатъци от стоки КАТО остатъци от стоки

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

5) Не забравяйте за инструкциите ПОЗВОЛЕН, което означава, че заявката ще избере само онези записи, за които текущия потребителимат права. Ако тази дума не е посочена, тогава в случай, че заявката избира записи, за които потребителят няма права, заявката ще работи с грешка.

6) Ако заявката използва съединение и в някои части на съединението има вложени таблици (документ с таблична част), а някои не, става необходимо да се допълни списъкът за избор с полета - празни вложени таблици. Това става с помощта на ключовата дума EMPTYTABLE, след което в скоби са посочени псевдонимите на полетата, от които ще се състои вложената таблица.

Пример:
// Изберете полета Число и Състав
// от виртуална таблица Document.Invoice
ИЗБЕРЕТЕ Reference.Number, EMPTYTABLE.(Nom, Tov, Qty) КАТО КОМПОЗИЦИЯ
ОТ Документ.Фактура
ОБЕДИНЯВАЙТЕ ВСИЧКИ
ИЗБЕРЕТЕ Link.Number, Composition.(LineNumber, Product, Quantity)
ОТ Документ.Фактура Документ.Фактура.Състав.*
7) За да избегнете дублиране на редове в резултата от заявката, трябва да използвате инструкцията РАЗЛИЧНИ, защото е по-ясно и по-ясно, и инструкцията ГРУПИРАЙ ПОизползвани за групиране агрегатни функции. Между другото, когато използвате агрегатни функции, изречението ГРУПИРАЙ ПОможе изобщо да не се посочва, докато всички резултати от заявката ще бъдат групирани в един ред.

Пример:
// Необходимо е да се установи кои контрагенти
// стоките са изпратени за периода.
Изберете Различни
Документ.Фактура.Изпълнител

8) Инструкция ГРУПИРАЙ ПОпозволява достъп до полета Най-високо ниво, без групиране на резултатите по тези полета, ако обобщените функции се прилагат към полета на вложена таблица. Въпреки че е написано в помощта на 1C, когато групирате резултатите от заявката, агрегатните функции трябва да бъдат посочени в списъка с полета за избор и в допълнение към агрегатните функции, само полетата, по които се извършва групирането, могат да бъдат посочени в списъка за избор полета.

Пример:
ИЗБИРАМ
Получаване на стоки и услуги. Стоки. (СУМА (Количество), Номенклатура),
Получаване на стоки и услуги. Връзка,
Получаване на стоки и услуги Контрагент
ОТ
Документ Получаване на стоки и услуги КАТО Получаване на стоки и услуги
ГРУПИРАЙ ПО
Получаване на стоки и услуги. Стоки. (Номенклатура)

9) Инструкция Е НУЛЕВима за цел да замени стойността NULL с друга стойност, но не забравяйте, че вторият параметър ще бъде преобразуван в типа на първия, ако типът на първия параметър е низ или число.

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

Пример (търсене на документи, съдържащи определен продукт в табличния раздел):
ИЗБИРАМ
Вход.Връзка
ОТ
Document.Incoming Where Incoming.Goods.Nomenclature = &Номенклатура.

Предимството на тази заявка пред заявката в подтаблицата Incoming.Products е, че ако има дубликати в документи, резултатът от заявката ще върне само уникални документи, без да използва ключовата дума РАЗЛИЧНИ.

11) Интересна опция за оператор INе проверка на появата на подреден набор в множеството от такива набори (Поле1, Поле2, ... , ПолеN) В (Поле1, Поле2, ... , ПолеN).

Пример:
ИЗБИРАМ
Изпълнители.Връзка
КЪДЕТО
(Изпълнители.Връзка, Стоки.Връзка)
(ИЗБЕРЕТЕ Sales.Customer, Sales.Product
ОТ Регистър на натрупване Продажби КАТО Продажби)
ОТ
Справочник. Контрагенти,
Справочник.Продукти

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

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

  • Всички виртуални таблици са параметризирани, т.е. на разработчика се дава възможност да зададе някои параметри, които системата да използва при генериране на заявка за създаване на виртуална таблица. В зависимост от параметрите на виртуалната таблица, зададени от разработчика, системата може да генерира РАЗЛИЧНИ заявки, за да получи една и съща виртуална таблица, и те ще бъдат оптимизирани по отношение на предадените параметри.
  • Не винаги е възможно разработчикът да получи достъп до данните, до които системата има достъп.
13) В режим на работа клиент-сървър функцията ПОДНИЗ()се реализира с помощта на функцията SUBSTRING() на съответния SQL изразпредава на сървъра на базата данни SQL данниСървър, който изчислява типа резултат на функцията SUBSTRING() по сложни правила, в зависимост от типа и стойностите на нейните параметри, както и в зависимост от контекста, в който се използва. В повечето случаи тези правила не влияят на изпълнението на заявка, но има случаи, когато максималната дължина на резултантния низ, изчислена от SQL сървър. Важно е да имате предвид, че в някои контексти, когато използвате функцията SUBSTRING(), максималната дължина на нейния резултат може да бъде равна на максималната дължина на низ с ограничена дължина, която е 4000 знака в SQL Server. Това може да доведе до неочакван срив при изпълнението на заявката:
Доставчик на Microsoft OLE DB за SQL Server: Предупреждение: Процесорът на заявка не можа да създаде план за заявка от оптимизатора, защото общата дължина на всички колони в клаузата GROUP BY или ORDER BY надвишава 8000 байта.
HRESULT=80040E14, SQLSTATE=42000, собствен =8618
За да избегнете тази грешка, не се препоръчва да използвате функцията SUBSTRING() за преобразуване на низове с неограничена дължина в низове с ограничена дължина. Вместо това е по-добре да използвате cast оператора EXPRESS().

14) Използвайте внимателно ИЛИв конструкцията WHERE, тъй като използването на условие с OR може значително да "утежни" заявката. Можете да решите проблема с конструкцията CONNECT ALL.

Пример:
ИЗБИРАМ

ОТ

КЪДЕТО
_DemoContractors.Link = &Link1

ОБЕДИНЯВАЙТЕ ВСИЧКИ

ИЗБИРАМ
_Демо контрагенти.ИмеПълно
ОТ
Директория._DemoContractors КАК _DemoContractors
КЪДЕТО
_DemoContractors.Link = &Link2

15) Състояние НЕ Вв конструкцията WHERE увеличава времето за изпълнение на заявката, тъй като е един вид NOT (OR1 OR2 ... ORn), така че за големи таблици опитайте да използвате LEFT JOIN с условието IS NULL.

Пример:
ИЗБИРАМ
_DemoContractors.Link
ОТ
Директория._DemoContractors КАК _DemoContractors
LEFT JOIN Документ._DemoBuyerOrder AS _DemoBuyerOrder
Софтуер _DemoContractors.Link = _BuyerDemoOrder.Contractor
КЪДЕТО
_DemoOrder.Counterparty на купувача Е НУЛЕВ

15) При използване Временни маситрябва да индексирате условието и обединените полета в тези таблици, НО когато използвате индекси, заявката може да работи дори по-бавно. Следователно е необходимо да се анализира всяка заявка с и без индекс, да се измери скоростта на изпълнение на заявката и да се вземе окончателно решение.
Ако поставите данни във временна таблица, която първоначално е индексирана на някои полета, тогава вече няма да има индекс на тези полета във временната таблица.

16) Ако не използвате Мениджър на временни таблици, тогава няма нужда изрично да изтривате временната таблица, тя ще бъде изтрита след завършване на пакетната заявка, в противен случай временната таблица трябва да бъде изтрита по един от следните начини: като използвате командата DELETE в заявката, извикайте TemporaryTable Метод Manager.Close().

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

Заявката получава първоначална информация от набор от таблици. Тези таблици представят данните от реални таблици на база данни в удобна за анализ форма. Могат да се разделят на две големи групи: истинскиИ виртуален.

Реалните таблици от своя страна могат да бъдат обектни (референтни) и необектни (безреферентни), фиг. 97.

Ориз. 97. Таблици за заявки

Отличителна черта на реалните таблици е, че те съдържат данни от всяка една реална таблица, съхранявана в базата данни.. Например таблицата Справочник.Клиенти, съответстваща на директорията Клиенти, или таблицата Регистър натрупване.Остатъци от материали, съответстваща на регистъра на натрупване на Остатъци от материали, е реална.

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

Понякога виртуални таблици могат да се формират и от една реална таблица (например виртуалната таблица Prices. Slice of the Last се формира на базата на таблицата на Ценовия информационен регистър). Общото между всички виртуални таблици обаче е, че могат да им бъдат дадени редица параметри, които определят какви данни ще бъдат включени в тези виртуални таблици. Наборът от такива параметри може да бъде различен за различните виртуални таблици и се определя от данните, съхранени в таблиците на изходната база данни.

Реалните таблици се делят на обектни (референтни) и необектни (нереферентни).

IN обектни (референтни) таблиципредставена е информация за типове справочни данни (справочници, документи, планове на типове характеристики и др.). И в необективен (нереферентен)– всички други типове данни (константи, регистри и др.).

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

Алгоритъмът, по който ще бъдат избрани данните от изходните таблици на заявката, е описан в текста на заявката на специален език - език за заявки . Текстът на искането се състои от няколко части:

описание на заявката;

Консолидиране на заявки

подреждане на резултатите;

· АВТОПОРЪЧКА;

описание на резултатите.

Задължителна част от заявката е само първата - описанието на заявката. Всички останали присъстват при необходимост.

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

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

Подреждането на резултатите определя условията за подреждане на редовете с резултати от заявката.

AUTOORDER ви позволява да активирате автоматичното подреждане на редовете с резултати от заявката.

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

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

Система за съставяне на данни предназначен за създаване на персонализирани отчети в системата 1C:Enterprise 8.1и се състои от няколко основни части.

Изходните данни за оформлението на справката съдържа схема за съставяне на данни са набори от данни и методи за работа с тях(фиг. 98).

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

Например диаграма на оформление може да съдържа следния набор от данни (Фигура 99).

Ориз. 98. Обща схемаработа със системата за съставяне на данни

Ориз. 99. Пример за схема на оформление (набор от данни и заявка, използваща го)

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

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

Например може да се зададе следната структура на отчета (фиг. 100):

Ориз. 100. Структура на възможен доклад

Генерираният отчет може да има следващ изглед(фиг. 101).

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

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

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

Ориз. 101. Образец на протокол

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

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

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

Последователността на системата за оформление може да бъде представена като следната диаграма (фиг. 102):

Ориз. 102. Схема на системата за оформление

3.12.1. Създаване на отчет "Регистър на документите Предоставяне на услуги"

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

Докладвай. Дайте му име RegisterDocumentsProvisionServices. Отметка Основенщракнете върху " Готов". В конструктора на схемата за съставяне на данни добавете Набор от данни - Заявка Конструктор на заявки".

Изберете обектната (референтна) документна таблица като източник на данни за заявката RenderingServices. От тази таблица изберете следните полета (фиг. 103):

Дата на; Брой; Наличност; майстор; Клиент.

Ориз. 103. Избрани полета

След това отидете на отметка Поръчкаи укажете, че резултатът от заявката трябва първо да бъде подреден по стойност на полето дата, а след това по стойност на полето RenderingServices.Link(фиг. 104).

Ориз. 104. Ред на извеждане на резултата от заявката

Щракнете върху " Добре" и вижте каква заявка е генерирал конструкторът на заявка.

Отидете на отметка Настройкии добавете ново групиране към структурата на отчета (фиг. 105).

Ориз. 105. Команден панел на раздела Настройки

В прозореца за избор на поле за групиране щракнете върху „ Добре“ и в раздела Избрани полетазадайте полетата, които ще се показват в отчета:

Дата на; Брой; Наличност; майстор; Клиент (фиг. 106).

Ориз. 106. Персонализиране на структурата на отчета

Регистър на документите за предоставяне на услуги. Щракнете върху " форма" и вижте резултата от отчета (фиг. 107).

Ориз. 107. Справка Регистър на документите за предоставяне на услуги

Докладвай. назови го Оценка на услугата. Отметка Основенщракнете върху " Отворена диаграма на състава на данните". В диалоговия прозорец Layout Designer, който се отваря, щракнете върху " Готов".

В конструктора на схема за съставяне на данни създайте Набор от данни - Заявка(DataSet1) и щракнете върху " Конструктор на заявки".

НоменклатураИ виртуална масанатрупващ регистър Продажби.Обороти. За да избегнете двусмислието на името в заявката, преименувайте номенклатурната таблица на Spr Номенклатура (контекстно менюдесен бутон на мишката - Преименуване на таблица).

След това изберете от полетата на таблицата Spr номенклатура.ВръзкаИ ПродажбиОборот.ПриходиОборот(фиг. 108).

Ориз. 108. Избрани полета

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

Единственото нещо, което трябва да направите, е да нулирате флага всичкона регистрационната таблица и го поставете на референтната таблица Spr Номенклатура(фиг. 109).

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

Ориз. 109. Задаване на връзки на масата

Отидете на отметка Условияи задайте условията за избор на елементи от Номенклатурния справочник (фиг. 110). Когато задавате условия за избор, ще трябва да използвате параметри на заявката. Първото условие трябва да е избраният елемент да не е група (за да направите това, превключете към Произволно условие- задайте флаг Произволно). След това в полето състояниевъведете следния текст:

SprNomenclature.ThisGroup = FALSE

Второто условие трябва да е избраният артикул да е услуга (това е просто състояние) (фиг. 110).

Ориз. 110. Условия за избор на елементи

В бъдеще, преди изпълнение на заявката, в параметъра Типова номенклатуратрябва да подадете съответната стойност enum.

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

Ориз. 111. Съюзи/Псевдоними

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

Отидете на отметка Ресурсии щракнете върху " >> ", така че конструкторът да избере всички налични ресурси, върху които да изчисли сумите. Във вашия случай това е единственият ресурс приходи(фиг. 112).

Ориз. 112. Ресурси на схема за съставяне на данни

Отидете на отметка Настроики(фиг. 113).

Ориз. 113. Опции за съставяне на данни

В този раздел ще видите три опции: Начало на периода, Краен периодИ Типова номенклатура. Първият параметър е началото на периода за изчисляване на общите суми, вторият е краят на периода. В резултат на това изходната таблица ще съдържа само оборотите, изчислени в прехвърления период.

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

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

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

Първо, потребителят трябва да бъде освободен от необходимостта да посочва часа при въвеждане на дата. За да направите това, променете съществуващата декларация на типа за параметъра Начало на периода. Кликнете два пъти в клетка Налични видове, съответстващ на параметъра Начало на периода, натиснете бутона за избор " " и в долната част на прозореца за редактиране на тип данни задайте Състав на датав смисъл дата(фиг. 114).

Щракнете върху " Добре".

Втората особеност е, че часът по подразбиране в датата е 00:00:00. Следователно, ако потребителят зададе отчетния период от 10/01/2009 до 10/31/2009, сумите в регистъра ще бъдат изчислени от началото на деня 10/01/2009 00:00:00 до началото на деня 31.10.2009 г. 00:00:00 ч. По този начин данните за 31-ия ден, различни от началото на деня, няма да бъдат включени в изчислението, което много ще изненада потребителя. За да премахнете тази ситуация, добавете друг параметър, в който потребителят ще въведе крайната дата. Стойност на параметъра Краен периодще се изчислява автоматично, така че да показва края на деня на въведената от потребителя дата. Следователно, за параметъра Краен периодпостави знамето Ограничение за наличност.

Ориз. 114. Редактиране на състава на датата

Използвайте бутона на командната лента, за да добавите нов параметърнаречен Крайна дата (фиг. 115).

Ориз. 115. Добавяне на параметър EndDate

За този параметър платформата автоматично ще генерира заглавка − срок на годност. Оставете го без промяна. Задайте тип стойност на параметъра − дата. В този случай, както и за параметъра Начало на периода, посочете състава на датата - дата.

Моля, имайте предвид, че по подразбиране параметърът, който сте добавили, е достъпен за потребителя (ограничението за достъпност в последната колона е премахнато).

Отидете на параметър Краен период. За него системата е задала флага за ограничаване на достъпността. Не премахвайте отметката, защото стойността на този параметър ще бъде изчислена въз основа на стойността зададени от потребителяза параметър Срок на годност.

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

В клетка Изразяванезадайте параметъра Краен периодследния израз:

В резултат на горните действия параметрите на оформлението ще изглеждат така (фиг. 116):

Ориз. 116. Опции на системата за оформление

Накрая задайте параметъра Типова номенклатура. Тъй като отчетът трябва да показва приходите, получени само от продажбата на услуги, стойността на параметъра Типова номенклатурапотребителят не трябва да се променя. Трябва да се зададе директно в оформлението като . Флаг за ограничение на параметър Типова номенклатураплатформата го е задала по подразбиране, така че трябва само да посочите желаната enum стойност Номенклатура на видоветев клетка Значение, съответстващ на параметъра Типова номенклатура(фиг. 117).

Ориз. 117. Задаване на стойността на параметъра Nomenclature Type

Пристъпете към формиране на структурата на отчета. Отметка Настройкидобавете групиране и отново не посочвайте полето за групиране. Отметка Избрани полетапосочете полетата ОбслужванеИ приходи(фиг. 118).

След това отидете на отметка Други настройкии задайте заглавието на отчета - Оценка на услугата(фиг. 119).

Ориз. 119. Задаване на заглавие на отчета

Стартирайте 1C:Enterprise в режим на отстраняване на грешки.

Изберете отчет Оценка на услугата, но преди да щракнете върху „ форма“, отворено Настройкии на отметката Опции за даннизадайте отчетния период от 01.03.2004 г. до 30.04.2004 г. (фиг. 120). Ако датите на създаване на вашите документи се различават от дадените в примера, тогава отчетният период трябва да бъде зададен по различен начин.

Ориз. 120. Настройки на отчета

Щракнете върху " Добре" и генерирайте отчет. Резултатът ще изглежда така (фиг. 121):

Ориз. 121. Резултат от изпълнението на отчета

Сега променете крайната дата на 3/31/2004. В отчета са включени данни за 31 март (фиг. 122).

Ориз. 122. Резултатът от изпълнението на отчета

3.12.3. Създаване на справка "Приходи на магистри"

Докладвай Майсторски приходище съдържа информация за това какви приходи са получени от Master LLC поради работата на всеки от майсторите, с подробности за всички дни в избрания период и разбивка за обслужвани клиенти през всеки от дните. Използвайки този отчет като пример, ще научите как да създавате многостепенни групи в заявка и как да заобикаляте всички дати в избран период.

Създавайте нов обектконфигурация Докладвай. назови го RevenueMastersи стартирайте основния конструктор на схема за съставяне на данни.

Добавете Набор от данни - Заявка(DataSet1) и щракнете върху " Конструктор на заявки". Изберете виртуалната таблица на регистъра за натрупване Продажби.Обороти.

Задайте една от опциите на тази виртуална маса − Периодичност. За да направите това, отидете на терена масии натиснете бутона "" (фиг. 123).

Ориз. 123. Промяна на параметрите на виртуална маса

В прозореца с параметри, който се отваря, задайте стойността на параметъра Периодичност - Ден(фиг. 124). Натисни бутона " Добре".

Ориз. 124. Опции за виртуална маса

След това изберете следните полета от таблицата:

· Обороти от продажби.Магистър;

· Обороти от продажби. Период;

· Обороти от продажби Клиент;

· Оборот на продажбите Оборот на приходите (фиг. 125).

Ориз. 125. Избрани полета

Сега отидете на отметка Съюзи/Псевдонимии задайте псевдоним приходиза полето ПродажбиОборот.ПриходиОборот(фиг. 126).

Ориз. 126. Съюзи/Псевдоними

Отметка групиранедефинирайте, че групирането ще се извършва по полета майстор, ПериодИ Клиенти стойности на полета Приход Оборотще бъдат сумирани (фиг. 127).

Ориз. 127. Групиране на полета

Отметка Поръчкаукажете, че резултатът от заявката ще бъде сортиран във възходящ ред на стойността на полето Период. Щракнете върху " Добре". Разгледайте текста на заявката, генериран от конструктора.

Сега преминете към редактиране на схемата за съставяне на данни. Отметка Ресурсищракнете върху " >> " и се уверете, че конструкторът е избрал единствения наличен ресурс - приходи.

Отметка Настроикиследвайте същите стъпки, както при създаването на предишния отчет.

За параметър Начало на периодазадайте заглавие начална дата. В полето Налични видовезадайте състава на датата - дата.

За параметър Краен периодзадайте израз:

Краен период (&Крайна дата, "Ден")

В полето Ограничениеналичност задайте флага за ограничение на наличността.

Накрая добавете още един параметър − Срок на годност, задайте типа му като дата, съставът на датата е дата.

В резултат на горните действия параметрите на състава на данните ще изглеждат така (фиг. 128):

Ориз. 128. Опции за съставяне на данни

Сега трябва да създадем структурата на отчета. Отметка Настройкипоследователно създайте две вложени групи: от най-високо ниво - по поле майстор, вложени в него - по поле Период. След това добавете друго групиране, вложено в полето за групиране по Период, – Подробни записи(без да посочвате полето за групиране) (фиг. 129).

Ориз. 129. Структура на отчета

Сега, като сте на нивото на глобалния отчет, отидете на раздела Избрани полетаи добавете полета към списъка КлиентИ приходи.

И накрая, от нивото на глобалния отчет отидете на раздела Други настройкии променете следните настройки. За параметър зададена стойност Отделно и само в резултатите; за параметър задайте стойността Започнетеи за параметъра заглавказадайте стойността Майсторски приходи(фиг. 130).

Ориз. 130. Задаване на изхода на общи суми в началото

Стартирайте 1C:Enterprise в режим на отстраняване на грешки и вижте резултата от отчета за приходите на Masters за периода от 01.03.2004 г. до 30.04.2004 г. (фиг. 131).

Ориз. 131. Резултат от изпълнението на отчета

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

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

Ще трябва да промените настройката за групиране Период. За да отидете до настройките на това конкретно групиране, в полето за структура поставете курсора върху това групиране и след това щракнете върху " Период" в командния панел (фиг. 132).

Ориз. 132. Настройки за групиране Период

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

Отидете на отметка Групиране на полета. За поле ПериодИнсталирай Тип добавка - Ден(фиг. 133).

Ориз. 133. Задаване на типа допълнение на периода

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

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

За да осигурите точно тази работа на отчета, влезте в режим на редактиране на първото поле (например, като кликнете два пъти върху него) и натиснете бутона "изчисти" х". След това, като щракнете върху бутона " T", ще можете да изберете вида на данните, показвани в това поле. Изберете Поле за съставяне на данни(фиг. 134).

Ориз. 134. Избор на тип данни

Щракнете върху " Добре". Сега щракнете върху бутона за избор в полето за въвеждане " " и в прозореца за избор на поле, който се отваря, маркирайте опцията Начало на периода(фиг. 135). Щракнете върху " Добре".

Ориз. 135. Избор на поле

За второто поле за въвеждане укажете по същия начин, че крайната дата на периода ще бъде получена от параметъра Срок на годност(фиг. 136).

Ориз. 136. Настройки за групиране Период

Стартирайте 1C:Enterprise в режим на отстраняване на грешки и изпълнете отчета Майсторски приходиза периода от 20 март 2004 г. до 20 април 2004 г. (фиг. 137).

Ориз. 137. Резултат от изпълнението на отчета

3.12.4. Създаване на отчет за инвентаризация на услугата

Докладвай Сервизен списъкще съдържа информация за това какви услуги и на каква цена предоставя LLC "Master". На неговия пример ще се запознаете с възможността за получаване последни ценностиот периодичния регистър на информацията и изхода на йерархичните указатели.

Създайте нов конфигурационен обект Докладвай. назови го Сервизен списъки стартирайте дизайнера на схема за съставяне на данни. Създайте нов Набор от данни - Заявка(DataSet1) и извикайте конструктора на заявката.

Изберете обектна (референтна) справочна таблица Номенклатураи виртуална таблица с информационен регистър Цени.СрезПоследен. За да премахнете неяснотата на имената в заявката, преименувайте таблицата Номенклатура на Spr Номенклатура.

Извикайте диалога за въвеждане на параметри на виртуалната таблица PricesSliceLastи посочват, че периодът ще бъде преминат в параметъра Дата на отчета(фиг. 138).

Ориз. 138. Опции за виртуална маса

След това изберете следните полета от таблиците:

· SprNomenclature.Parent;

· PricesSliceLast.Price (фиг. 139).

Ориз. 139. Избрани полета

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

Отметка Условиязадайте условието за избор на елементи от речника Номенклатура– елементите, които ще бъдат избрани, трябва да съответстват на типа елемент, предаден в параметъра на заявката Типова номенклатура(фиг. 140).

Ориз. 140. Условия за избор на елементи

Отметка Съюзи/Псевдонимипоказват, че полето Родителще има псевдоним Сервизна група, и полето Връзка - Услуга(фиг. 141).

Ориз. 141. Съюзи/Псевдоними

Отидете на отметка групиранеи показват, че групирането ще се извърши по поле SprNomenclature.Parent. Не е необходимо да задавате стойностите на обобщените полета (фиг. 142).

Фиг.142. Групиране на полета

Щракнете върху " Добре". Вижте текста на искането.

Продължете към редактиране на схемата за съставяне на данни. Отметка Ресурсинатискане на бутона " >> " изберете единствения наличен ресурс Цена.

Отметка Настроикизадайте стойността на параметъра Типова номенклатуракак Изброяване. Видове номенклатура. Обслужване. Освен това премахнете ограничението за достъпност за параметъра Дата на отчетаи му дайте заглавие - Дата на отчета. В полето Налични видовезадайте състава на датата - дата. За параметър Период, напротив, задайте ограничението за достъпност (фиг. 143).

Ориз. 143. Опции за схема на оформление

Пристъпете към формиране на структурата на отчета. Отидете на отметка Настройкии създайте група по поле Сервизна група, указвайки вида на групирането Йерархия. В рамките на това групиране създайте друго групиране, без да посочвате групово поле. Той ще съдържа подробни отчетни записи (Фиг. 144).

Ориз. 144. Структура и осветени полета на отчета

Отидете на отметка Избрани полетаи укажете, че полетата Услуга и Цена ще бъдат показани в отчета (Фиг. 145).

Ориз. 145. Структура на отчета

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

За да деактивирате показването на суми в отчета, задайте параметъра Позициониране на общи суми вертикалнов смисъл Не.

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

За параметър Местоположение на полетата за групираневъведете стойност Отделно и само в резултатите(така докладът ще бъде по-добре "четен"). Накрая задайте заглавието на отчета - Сервизен списък.

Стартирайте 1C:Enterprise в режим на отстраняване на грешки и първо отворете периодичния регистър цени.

Добавете още една стойност към услугата Диагностика: новата цена на услугата от 01.04.2004 г. е 350 (фиг. 146). Това ще тества отчета.

Ориз. 146. Вписвания от регистър "Цени"

Сега изпълнете отчета Сервизен списъккъм 31 март 2004 г. (фиг. 147).

Ориз. 147. Резултат от изпълнението на отчета

Вашият отчет правилно отразява цената на услугата Диагностика към 31.03.2004 г. - 200 рубли.

Пуснете отчета отново, но вече за друга дата - 01.04.2004 г. (фиг. 148).

Ориз. 148. Резултат от изпълнението на отчета

Както можете да видите, е показана новата цена на услугата "Диагностика" - 350 рубли.

Докладвай Оценка на клиентаще покаже какъв е доходът от предоставянето на услуги на всеки от клиентите за целия период на работа на Master LLC. На неговия пример ще бъде демонстрирана възможността за използване на диаграма за показване на резултата от заявка.

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

Логично диаграмае колекцията от точки, серии и стойности на серии в точката(фиг. 149).

По правило моментите или обектите, за които получавате стойностите на характеристиките, се използват като точки, а характеристиките, за които се интересувате от стойности, се използват като серии.

Например диаграмата на продажбите на видове артикули по месеци ще се състои от точки - месеци, серии - видове артикули и стойности - оборот от продажби.

Диаграмата като обект на вградения език има три области, които ви позволяват да контролирате дизайна на диаграмата: областта на конструкцията, областта на заглавието и областта на легендата (фиг. 150).

Диаграмата може да бъде вмъкната в структурата на отчета като отделен елемент. При създаване на отчет Оценка на клиентадиаграмата ще се използва в структурата на настройките на схемата за съставяне на данни.

Ориз. 149. Примерна диаграма

Ориз. 150. Области на диаграма

Създайте нов конфигурационен обект в конфигуратора Докладвай. назови го Оценка на клиентите, отворете основната схема на оформление на данните.

Създавайте набор от данни - заявка(DataSet1) и извикайте конструктора на заявката. Изберете таблица с регистър на виртуално натрупване Продажби.Оборотии от него едно поле - ПродажбиОборот.Клиент.

След това добавете ново поле (икон Добаветев командната лента над списъка с полета) и с помощта на конструктора на изрази го дефинирайте като разликата между приходите и разходите (фиг. 151).

Ориз. 151. Персонализиран редактор на израз на поле

В резултат на това списъкът с избрани полета ще изглежда така (фиг. 152):

Ориз. 152. Избрани полета

Отметка Съюзи/Псевдонимиукажете, че изчисленото поле ще има псевдоним доходи(фиг. 153).

Ориз. 153. Съюзи/Псевдоними

Отметка Поръчкапоказват, че редовете с резултати трябва да бъдат сортирани в низходящ ред на стойността на полето доходи. Щракнете върху " Добре" и вижте какъв текст е генерирал конструкторът на заявката.

Отидете на отметка Ресурсии добавете поле доходикъм ресурсите за оформление. След това отидете на отметка Настройкиза да се създаде структурата на отчета.

За разлика от всички предишни отчети, чиято структура съдържаше групиране, този път към структурата на отчета се добавя диаграма (фиг. 154).

Ориз. 154. Структура на отчета

Добавете групиране по поле към точките на диаграмата Клиент. Оставете серията диаграми непроменена.

Сега отидете на отметка Избрани полетаи изберете поле доходиза изход към отчета. Структурата на отчета трябва да приеме следната форма (фиг. 155):

Ориз. 155. Структура на отчета и настройки на диаграмата

Отметка Други настройкизадайте заглавието на отчета - Оценка на клиента, а също така изберете типа на диаграмата − Кръгъл обемен.

Стартирайте 1C:Enterprise в режим на отстраняване на грешки и отворете отчета Оценка на клиента(фиг. 156).

Ориз. 156. Кругова диаграма на обема в отчета

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

Отворете настройките на отчета и променете типа на диаграмата на Измерване. Генерирайте отчета отново (фиг. 157).

Ориз. 157. Измервателна схема в протокола

3.12.6. Генериране на общ отчет

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

Създайте нов конфигурационен обект в конфигуратора Докладвай. Дайте му име Универсален. Отворете неговата основна схема за съставяне на данни и създайте нова набор от данни - заявка(Набор от данни 1).

Извикайте конструктора на заявки и изберете виртуалната таблица на регистъра за натрупване Продажби.Обороти. От тази таблица изберете всички полета (фиг. 158).

Ориз. 158. Избрани полета

В раздела Групиране с помощта на " >> " изберете всички полета, налични за групиране, и добавете всички ресурси към Обобщени полета (фиг. 159).

Ориз. 159. Групиране на полета и ресурси

Щракнете върху " Добре" и погледнете текста, генериран от конструктора на заявка.

Завършете създаването на схемата за оформление на данни, като направите следното в раздела за проектиране на оформление Ресурсиизберете всички налични ресурси (щракнете върху " >> "). Това завършва работата със схемата за съставяне на данни, затворете я и се върнете към прозореца за редактиране на конфигурационния обект Отчет Универсален.

Отидете на отметка Формии създайте основната форма на отчета, като щракнете върху бутона за преглед до полето на таблицата Основен формуляр за отчет. Тъй като все още няма основен формуляр, системата ще извика дизайнера на формуляри. Приемете това, което системата предлага по подразбиране и веднага натиснете бутона " Готов".

На екрана ще се отвори основната форма на отчета. Както можете да видите, системата вече е вмъкнала полето на документа на електронната таблица вместо вас и го е наименувала Резултат(фиг. 160).

Ориз. 160. Редактиране на отчетната форма

Трябва да вмъкнете обобщена таблица в това поле. Но клетките на полето за електронни таблици Резултатв момента са в Само преглед. За да вмъкнете обобщена таблица, трябва да изключите този режим, така че щракнете върху полето на документа на електронната таблица и направете Таблица –> Изглед –> Само изглед. Сега можете да редактирате полето на таблицата.

Поставете курсора в горната лява клетка на полето на документа на електронната таблица и изпълнете Таблица –> Вградени таблици –> Вмъкване на обобщена таблица. Системата ще добави обобщена таблица към полето на таблицата и ще отвори прозореца на полетата осева таблица(фиг. 161).

Ориз. 161. Пивот таблица

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

Променлив източник на обобщена таблица;

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

Процедура OnOpen()

Източник на обобщена таблица = NewDataCompositionPivotTableDataSource;

PivotTableSource.SetSchema(DataCompositionScheme);

FormElements.Result.EmbeddedTables.PivotTable1.DataSource =

Източник на обобщена таблица;

PivotTable Source.SetSettings(SettingsComposer.Settings);

EndProcedure

С този текст задавате схемата за съставяне на данни за обобщената таблица като източник на данни и задавате настройките за създателя на настройки за нея.

Стартирайте 1C:Enterprise в режим на отстраняване на грешки и отворете отчета Универсален. На екрана ще се появи форма за отчет и прозорец за избор на полетата на обобщената таблица (фиг. 162).

Ориз. 162. Доклад Универсален

Поставете стойността на ресурса Приход Обороткъм Област за данни, измерение Номенклатура– към областта Редове и измерението майстор– в областта на високоговорителите. Отчетът ще приеме следната форма (фиг. 163):

Ориз. 163. Резултатът от изпълнението на отчета

Сега в прозореца за избор на поле на обобщена таблица разгънете групата Номенклатураи добавете стойността (без йерархия) към редовете (в падащия списък на прозореца „Полета на обобщена таблица“ изберете Напасване към линии), и измерването Клиентдобавяне към колони (в падащия списък на прозореца „Полета на обобщена таблица“ изберете Поставете в колони). Докладът ще промени външния си вид (фиг. 164).

Ориз. 164. Резултатът от изпълнението на отчета

По този начин, използвайки данните от схемата за съставяне на данни, вие предоставихте на потребителя алтернативна възможност да генерира самостоятелно отчет в регистъра RenderedServices.

3.12.7. Генериране на общ отчет 2

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

Създайте нов конфигурационен обект ДокладвайС име Универсален2. Отворете неговата основна схема за съставяне на данни, създайте нова набор от данни - заявка(DataSet1) и стартирайте конструктора на заявки. Изберете всички полета от виртуалната таблица на регистъра за натрупване Продажби.Оборотии щракнете върху " Добре". В раздела Ресурсидизайнер на схема за съставяне на данни, щракнете върху " >> " и се уверете, че системата е взела три ресурса: Оборот на приходите, оборот на количествотоИ CostTurnover.

Отметка Настройкисъздайте нова група Подробни записи(без да избирате полето за групиране).

Сега е маркирано Формипрозорец за редактиране на отчета Универсален2с помощта на конструктора създайте основната форма на отчета и я редактирайте.

Разтегнете формата и поставете два етикета с имена в нея полетаИ Поръчкаи със заглавки Полета:И Поръчка:съответно (фиг. 165).

Под надписа полета CommandPanelFields. Под надписа Поръчкапоставете командна лента с име CommandPanelOrder. Под командните панели подредете съответно полетата на таблицата с имената TableFieldFieldsИ TableFieldOrder.(фиг. 166). В прозореца със свойства на командния панел CommandPanelFieldsпостави знамето Автоматично довършванеИ ActionSource - TableFieldField. В прозореца със свойства на командния панел CommandPanelOrderпостави знамето Автоматично довършванеИ ActionSource - TableFieldOrder.

Ориз. 165. Редактиране на отчетната форма

Ориз. 166. Формуляр за отчет Universal2

Сега за полето на таблицата TableFieldFieldsзадайте източника на данни като ReportObject.SettingsComposer.Settings.Selection(фиг. 167).

Ориз. 167. Задайте източника на данни за полето на таблицата

Същото като полето на таблицата TableFieldOrderпосочете източник на данни ReportObject.SettingsComposer.Settings.Order.

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

Системата 1C:Enterprise 8 има малък набор от готови дизайнерски оформления за използване от системата за съставяне на данни. Те се съдържат в обекта. Layout LibraryDesignsLayoutsData.

Сложете още един надпис с името Декори заглавие Декор:, а вдясно от него поставете поле за избор с името ChoiceFieldDecoration(фиг. 168) без подпис.

Ориз. 168. Редактиране на отчетната форма

В свойствата на полето за избор отворете прозореца Редове от списък за избори го попълнете с имена на оформления от библиотеката за оформление на дизайн на оформление на данни (вижте Фигура 169).

Ориз. 169. Попълване на списъка със стойности на полето за избор

За да накарате полето за избор да промени приложеното оформление на системата за оформление, създайте манипулатор Когато се промениполета за избор:

ProcedureSelectionFieldDesignOnChange(Element)

OutputParameters = LinkerSettings.Settings.OutputParameters;

ParameterLayoutLayout = OutputParameters.FindParameterValue(Ново

DataCompositionParameter("DesignLayout"));

ParameterDesignLayout.Use = true;

ParameterDesignLayout.Value = ChoiceFieldDesign;

EndProcedure

С този текст за параметъра за съставяне на данни LayoutDesignпосочвате името на оформлението, с което трябва да се форматира отчетът, и задавате флага за използване на оформлението на оформлението.

Стартирайте 1C:Enterprise в режим на отстраняване на грешки и отворете отчета Универсален2.

Добавете следните полета към избраните полета:

· Майстор;

· Номенклатура;

· Оборот на приходите.

Задайте реда на сортиране:

· Мастер възходящ;

· Номенклатура. Тип номенклатура в низходящ ред;

· Номенклатура във възходящ ред.

Изберете дизайн, например Зеленои щракнете върху „ форма". Резултатът ще изглежда така (фиг. 170):

Ориз. 170. Резултат от изпълнението на отчета

Сега променете условията за генериране на отчета. Изберете полета Клиент, НоменклатураИ Приход Оборот. Редът на сортиране ще бъде във възходящ ред на стойността на полето Клиент, а опцията за дизайн - Море. Стартирайте отчета (фиг. 171).

Ориз. 171. Резултат от изпълнението на отчета


3.13. Оптимизиране на документ "Предоставяне на услуги"

Да приемем, че ръководството на OOO "Master" е взело окончателно решение относно процедурата за изчисляване на разходите за материали, използвани в процеса на предоставяне на услуги. А именно текущата себестойност на материала ще се определя като частно от общата себестойност на баланса на този материал и оставащото му количество на склад.

В допълнение, инструментите на 1C:Enterprise 8.1 ви позволяват да контролирате скоростта на процедурата за публикуване на документа чрез използването на механизма за заявки.

По този начин оптимизация на документи RenderingServices, служи за две цели:

Определяне на стойността на консумативите при водене на документ;

Увеличаване скоростта на процедурата по обработка на документи.

Изтриване в документа RenderingServicesтаблична част подпори Цена, който вече не е необходим. Също така премахнете съответната колона от полето на таблицата, намиращо се във формуляра на документа RenderingServices.

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

Заявка = Нова заявка;

Ако режим = режим на публикуване на документ Оперативен тогава

Заявка.Текст =

В противен случай

Заявка.Текст =

EndIf;

Първо, създайте заявка, която ще бъде изпълнена, когато документът бъде публикуван онлайн. Стойността на променливата Request.Text ще се генерира автоматично. За да направите това, поставете курсора преди точка и запетая, извикайте контекстното меню, като натиснете десния бутон на мишката и изберете елемента Конструктор на заявки. Съгласете се да създадете нова заявка. На екрана ще се появи диалоговият прозорец Query Builder. Отворете масата Списък номенклатуратаблична част на документа RenderingServicesи изберете полета от него:

· Номенклатура;

· Количество;

· Номенклатура. Вид на номенклатурата;

Тези полета ще са необходими за задаване на стойностите на размерите на регистрите и техните ресурси. Освен това полето Типова номенклатураще трябва да анализирате каква е номенклатурата, посочена в документа: материал или услуга (фиг. 172).

Ориз. 172. Избрани полета

За да зададете стойности на ресурса Ценарегистри Разходи за материалиИ Продажбище трябва да изчислите текущата цена на артикула като частно от оставащата цена на този материал и оставащото му количество.

Затова добавете още две таблици към списъка с избрани таблици (фиг. 173).

Натрупвателен регистър. Остатъци от материали. Остатъци.

Ориз. 173. Избрани таблици

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

Условието за получаване на данни показва, че салдата трябва да бъдат получени само за онези артикули от артикула, които се съдържат в осчетоводения документ (преди изпълнение на заявката трябва да бъде предаден списък на всички артикули от артикула, съдържащ се в осчетоводения документ параметър Списък на позиции на документи) - фиг. 174.

Ориз. 174. Опции за виртуална маса

Задайте същите параметри за втората виртуална маса Разходи за материали. След това изберете полетата Оставащи разходи и Оставащо количество от тези виртуални таблици (фиг. 175).

Ориз. 175. Избрани полета

Изберете отново виртуалната таблица на регистъра за натрупване ОстатъциМатериалиОстатъции го преименувайте на Оставащи материали, оставащи в склада(фиг. 176).

Ориз. 176. Избрани таблици

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

Ориз. 177. Параметри на таблицата

Сега от тази виртуална таблица изберете полето QuantityRemainder (фиг. 178).

Ориз. 178. Избрани полета

Това завършва формирането на списъка с избрани полета и можете да преминете към настройка на условията за връзка между избраните таблици. За да направите това, отидете на отметката Връзки. Всяка от виртуалните таблици трябва да бъде свързана с таблицата с документи по такъв начин, че за всички записи на таблицата с документи трябва да бъдат избрани съществуващите записи на виртуалната таблица и номенклатурата в таблицата с документи трябва да бъде равна на материала от виртуалната маса (фиг. 179, a-b).

Ориз. 179а. Избрани таблици

Ориз. 179б. Условия за връзка между таблици

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

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

Ориз. 180. Посочете таблици за промяна

Отидете на отметка Условияи задайте условието за избор от таблицата с документи само на редовете на текущия документ (връзка към него ще бъде предадена на параметъра Link query) - фиг. 181. За да направите това, щракнете два пъти с левия бутон на мишката върху полето Връзка.

Ориз. 181. Условие за избор от документна маса

Отидете на отметка Съюзи/Псевдонимии задайте следните псевдоними на полета: NomenclatureNomenclatureView –> NomenclatureView; QuantityRemaining1 –> QuantityInStock.

Щракнете върху " Добре" и вижте какъв текст на заявката е генерирал конструкторът (стойността на променливата Request.Text):

Предоставяне на услугиСписък на номенклатура.Номенклатура.Тип номенклатура AS Тип номенклатура,

Разходите за материали остават. Остават разходите,

Оставащи материали, оставащи на склад Оставащо количество КАТО количество на склад

LEFT JOIN Регистър на натрупване.MaterialsCost.Remains(&Точка във времето, Материал в (&Документ ItemList)) AS MaterialsCostRemains

Материал в (&Списък с номенклатура на документи)) AS Остатъци Материали Остатъци

Услуги за изобразяване на софтуер. Списък на номенклатурата. Номенклатура =

ЛЯВО ПРИСЪЕДИНЯВАНЕ

Материал в (&DocumentItemList) И Warehouse = &WarehouseInDocument)

КАК ОСТАНИТЕ ОТ МАТЕРИАЛИ

Услуги за изобразяване на софтуер. Списък на номенклатурата. Номенклатура =

Остатъци от материали Остатъци в склада.Материал

ЗА СМЯНА

Регистър за натрупване Разходи за материали Салда,

Регистър на натрупване.ОстатъциМатериали.Остатъци

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

Предоставяне на услугиСписък на номенклатурата. Номенклатура,

Предоставяне на услуги Списък на номенклатурата Количество,

Предоставяне на услугиНоменклатурен списък.Номенклатура.Номенклатурен тип AS

Типова номенклатура,

Предоставяне на услуги Списък на номенклатурата Сума,

ResiduesMaterialsResidues.QuantityRemainder,

CostMaterialsRemainder.CostRemainder

Документ.Предоставяне на услуги.Списък на номенклатурата AS Предоставяне на услугиСписък на номенклатурата

ЛЯВО ПРИСЪЕДИНЯВАНЕ

КАК СЕ ОЦЕНЯВА МАТЕРИАЛИТЕ

Услуги за изобразяване на софтуер. Списък на номенклатурата. Номенклатура =

Разходи за материали Остатъци.Материал

ЛЯВО ПРИСЪЕДИНЯВАНЕ

Материал в (&списък с номенклатура на документи))

AS RemainsMaterialsRemains

Услуги за изобразяване на софтуер. Списък на номенклатурата. Номенклатура =

ОстатъциМатериалиОстатъци.Материал

ЗА СМЯНА

Регистър на натрупване. Останки от материали. Останки,

Регистър за натрупване. Разходи за материали. Остатъци;

Сега добавете параметрите на заявката към текста на манипулатора (добавете само онези команди, които са с получер шрифт към съответните редове):

Заявка = Нова заявка;

Query.SetParameter("WarehouseInDocument", Warehouse);

Ако режим = режим на публикуване на документ Оперативен тогава

Заявка.Текст =

| Регистър натрупване. Стойност на материалите. Салда";

EndIf;

Query.SetParameter("MomentTime", MomentTime());

Query.SetParameter("DocumentNomenclatureList",

ItemList.UnloadColumn("Номенклатура"));

Основни методи за работа с някои обекти на вградения език "1C:Enterprise"

Вграден език на системата 1C:Enterprise

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

Целта на работата: Да се ​​изучат основните принципи на работа с обекти на вградения език "заявка", "таблица", "справочна книга".

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

Фиг.1 Прозорец на системата за помощ

След като създадете променлива от типа "Заявка", трябва да се обърнете към метода Бягай. След това се организира циклична обработка на генерирания набор от данни, за което се използва методът Групиране.Например в следния пример (Процедура за регистър на документи) се създава заявка, в резултат на която се генерира набор от данни, съдържащ следните данни за документите „Входящ касов ордер“: дата на документа, номер на документа, сума на документа , от кого пари в бройза определен период (променливи StartDate, ConDate).

ProcedureDocumentRegister()

Заявка за променлива, текст на заявка, раздел, nom;

//Създаване на обект от тип Request

Заявка = CreateObject("Заявка");

RequestText =

"//((ЗАЯВКА(Генериране)

|Период от Начална дата до ConDate;

|Номер = Документ.Входяща поръчка.Номер на документ;

|Date1 = Document.IncomingOrder.DateDoc;

|Общо = Документ.Входяща поръчка.Сума;

|От = Документ.Входяща Поръчка.Прието От;

|Функция Sum = Sum(Total);

|групов номер;

|"//)) ЗАЯВКА

// Ако има грешка в заявката, излезте от процедурата

Ако Request.Execute(QueryText) = 0 Тогава

Връщане;

EndIf;

// Подгответе се за попълване на изходни формуляри с данни за заявка

Tab = CreateObject("Таблица");

Tab.SourceTable("Таблица");

// Попълване на полетата "Заглавие".

Tab.OutputSection("Заглавие");

State("Попълване на изходната таблица...");

Tab.Options(0, 0, Tab.TableHeight(), 0);

// Извеждане на попълнения формуляр

Nom=0;

Докато Query.Group(1) = 1 цикъл

//Попълнете полетата

Nom=Nom+1;

Tab.OutputSection("Документ");

EndCycle;

Tab.DisplaySection("Общо");

Tab.ViewOnly(1);

Tab.Show("Таблица", "");

EndProcedure

За визуален преглед на данните на заявката, a печатна формаизползвайки обекта таблица. Най-типичният начин за попълване на документ с електронна таблица е включването на секции в него. За целта се използва оригиналният документ с електронна таблица, който може да се намира в същата форма. В допълнение, изходната таблица може да бъде разположена както в общите конфигурационни таблици, така и в външен файл. Присвояването на изходния документ с електронна таблица се извършва чрез обектния метод "Таблица" - SourceTable.Метод Изходен разделви позволява да включите избрания фрагмент от изходната таблица в генерирания документ с електронна таблица.

Фиг.2. Таблица източник

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

"Директория" е агрегиран тип данни, инструмент за работа със списъци от еднородни елементи. Директориите могат да бъдат на няколко нива. Елементите на директорията могат да бъдат периодични, т.е. съхранява стойността за определена дата. За директории можете да посочите подчинение на други директории, т.е. образуват връзки "един към много".

Достъпът до атрибути, извикването на методи на директория зависи от контекста на изпълнение софтуерен модул. Може да има следните опции:

1) имаме директен достъп до текущия елемент на директорията, ако например сме във формата за редактиране на елемента на директорията. Тук имаме директен достъп до атрибутите на директорията.

F_name = "Петров"; където F_name е атрибутът на директорията, определен в конфигуратора.

2) стойността на елемента може да бъде получена от други източници, например като атрибут на някакъв документ. За да получите достъп до атрибут, трябва да извикате метода на такава променлива със стойност от тип "Директория".

Брой деца=Док.Служители.Деца;

3) методът на определен елемент се извиква с помощта на променлива с препратка към обект от типа "Директория". Един обект се създава от функция „Създаване на обект».

Референтните методи могат да бъдат намерени и в системата за помощ на 1C:Enterprise.

Задача за лабораторна работа по варианти

номер на опцията Работа с обект Упражнение
Заявка, таблица Показване на информация за транзакции с клиента (избор на клиент в диалогов режим) за входящи и изходящи фактури.
Указател, таблица Показване на информация за служители (име, адрес, брой деца)
Указател, таблица Показване на информация за служители (пълно име, адрес, държава, номер на сертификат в FIU)
Указател, таблица Показване на информация от номенклатурния справочник (продукт, цена, страна на произход)
Указател, таблица Показване на информация от номенклатурния справочник (продукт, мерна единица, ДДС ставка)
Заявка, таблица Показване на информация за всички осчетоводени фактури за периода.
Заявка, таблица Показване на информация за стоките (посочване на входящи фактури за получаване и изходящи фактури за потребление)

Литература

1. Документация за програмата 1C:Enterprise

2. Стукалина Е.Ф. - Инструментариум. „Основни понятия и термини софтуерна среда"1C: Предприятие". Редактор на електронни таблици»

| следваща лекция ==>

THIS_KEYWORD
<Это конструкция языка>,
<Это конструкция языка>
THIS_FUNCTION(<Это конструкция языка>)

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

Езиковите конструкции могат да съдържат незадължителни елементи - ключови думи и др. В правилата, описващи езика на заявките, незадължителните елементи са оградени в квадратни скоби "[" и "]":

[THIS_OPTIONAL_WORD] [<Это необязательная конструкция>]

В някои случаи един от няколко алтернативни елемента може да се използва в езикова конструкция. Такива елементи в правилата са изброени чрез вертикалната лента "|":

ИЛИ_ТАЗИ_ДУМА | ИЛИ_ТАЗИ_ДУМА
<Либо эта конструкция> | <Либо эта конструкция>

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

Коментари на езика на заявката

Текстът на заявката може да включва коментари. Коментарът е част от ред, която започва с последователността от знаци // и продължава до края на реда:

// Това е коментар.

Коментарите се игнорират при изпълнение на заявката.

Двуезично представяне на ключови думи

Една от съществените характеристики на езика за заявки 1C:Enterprise е, че както във вградения език, всички ключови думи имат два изписвания: на руски и Английски. По-нататък в тази глава са посочени руските изписвания на ключови думи. По-долу е дадена таблица, която показва съответствието между руски и английски и изписването на ключови думи на езика на заявката...... (пропуснато)

Основни раздели на тялото на заявката

Текстът на заявката може да бъде описан със следното правило:

<Описание запроса>
[<Объединение запросов>]
[<Упорядочивание результатов>]
[АВТОМАТИЧНА ПОРЪЧКА]
[<Описание итогов>]

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

В раздел<Упорядочивание результатов>можете да дефинирате условия за подреждане на редове в резултата от заявката. Подреждането на резултатите от заявката се обсъжда на страница 324.

AUTOORDER ви позволява да активирате автоматично подреждане на редове в резултата от заявката. Този режим е описан на страница 331.

В раздел<Описание итогов>можете да посочите кои суми да се изчислят в заявката. Този раздел е описан на страница 332.

Описание на заявката

Както вече споменахме, текстът на заявката трябва да съдържа раздел с описание на заявката, който дефинира:

Полета, които ще се съдържат в резултата от заявката;

Източници на данни за заявки – изходни таблици;

Условия, които засягат избора на данни в заявка;

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

Разделът с описание на заявката се състои от няколко взаимосвързани изречения:

ИЗБЕРЕТЕ [РАЗЛИЧНИ] [ПЪРВО<Количество>]
<Список полей выборки>
[ОТ<Список источников>]
[КЪДЕТО<Условие отбора>]
[ГРУПИРАЙ ПО<Поля группировки>]
[ИМАНЕ<Условие отбора>]
[ЗА СМЯНА [<Список таблиц верхнего уровня>]]

Описанието на заявката започва с необходима ключова дума ИЗБИРАМ.

Оферта КЪДЕТО<Условие отбора> ви позволява да филтрирате резултата от заявката. Резултатът включва само онези записи, за които определеното условие е вярно. Правилата за описание на условията за избор са обсъдени на страница 315.

Оферта ЗА СМЯНАима за цел да посочи необходимостта от заключване на данните, прочетени в транзакцията.

Оферта ГРУПАви позволява да опишете как са групирани резултатите от заявката. Групирането е разгледано подробно на страница 316.

Оферта ИМАЩви позволява да налагате условия върху резултатите от групирането. Описано на страница 318.

Всички примери за заявки в тази глава включват текста на заявката и резултата от заявката. Предполага се, че текстът на заявката се предава като параметър на метода Execute на обекта Request.

Дайте достатъчно пример проста молба, състоящ се от един оператор SELECT и списък с полета за избор.

//Необходимо е да се покаже списъкът с товарителници в отчета.

Резултат от заявката:

Използване на думата РАЗЛИЧЕН

В много ситуации е желателно едни и същи редове да не се повтарят в отчета.

// Необходимо е да се установи кои контрагенти
// стоките са изпратени за периода.
Изберете Документ.Фактура.Изпълнител

Резултат от заявката:

Вижда се, че резултатът от заявката има много дублиращи се редове, което намалява видимостта му. За да избегнете повторение, ключовата дума DIFFERENT трябва да бъде посочена в описанието на заявката.

Изберете Различен документ.Фактура.Изпълнител

Резултат от заявката:

Използване на думата ПЪРВО

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

// Необходимо е да изберете петте най-скъпи стоки.
// Вземането на проби трябва да се извърши в низходящ ред на цената на продукта.
Изберете Първите 5
Указател. Номенклатура. Име,
Указател.Номенклатура.Покупна цена
Сортиране по

Резултат от заявката:

Описание на полетата за избор

След задължителната ключова дума SELECT (и уточняващите думи DIFFERENT и FIRST) в текста на заявката се посочва списък с полета за избор. Тези полета ще бъдат обработени при извличане на данни в заявка. Резултатът от заявката също ще има набор от полета, дефиниран в този списък. Примерните полета са описани съгласно следните правила:

<Описание поля>[ [КАК]<Псевдоним поля>]

<Выражение>[.<Группа полей>]

Списъкът с полета за избор се състои от един или повече елементи, разделени със запетаи. всеки<Поле выборки>се състои от описание на поле за избор и незадължителен псевдоним на поле.

Вместо да изброявате полета в списъка за избор, можете да посочите звездичка "*". Това ще означава, че резултатът от заявката трябва да съдържа всички полета, които са в изходните таблици - източниците на данните от заявката, описани в списъка с източници.

Коментирайте!Когато посочите звездичка "*" в списъка с полета за избор, резултатът не включва виртуалните полета на изходните таблици.

<Описание поля>определя как трябва да се генерират стойностите на полето. В най-простия случай полето за избор е връзка към полето на таблицата източник. Връзката може да бъде зададена с посочване на таблицата, съдържаща това поле, или без посочване на самата таблица. Дереферирането на полето е разгледано в.

В общия случай полето за избор може да бъде не само връзка към полето на таблицата източник, но и някои<Выражение>. Изразите са разгледани подробно на страница 344.

Резултатите от заявката могат да бъдат групирани с помощта на агрегатни функции, посочени като изрази в полетата за избор. Групирането на резултати от заявка се обсъжда на страница 316. Агрегатните функции са описани на страница 345.

На всяко поле за избор може да бъде зададен псевдоним. В бъдеще може да се използва за по-удобен достъп до дадено поле. Използването на псевдоними на полета е обсъдено по-долу.

<Группа полей>може да се посочи само когато полето за избор сочи към вложена таблица. В този случай можете да посочите кои полета да бъдат обработени в селекцията за вложената таблица. Ако групата полета не е посочена, всички полета на вложената таблица ще бъдат обработени в селекцията. Достъпът до вложени таблици е описан в .

Псевдоними на полета в списъка за избор

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

Ключовата дума AS може да предхожда псевдонима на полето. Тази дума може изобщо да не е посочена, но ако е посочена, видимостта и четливостта на текста на заявката се увеличава.

Псевдонимите на полетата се дефинират съгласно правилата за присвояване на идентификатори на променливи. Псевдонимите в заявката не могат да съвпадат.

Присвояването на псевдоними на полетата само по себе си не влияе върху избора на данни в заявка.

// Трябва да се избере от продуктовата директория
// имена на продукти и имена на групи.
Избирам
Справочник. Номенклатура Име като стоки,
Справочник. Nomenclature.Parent.Name As Group
от
Справочник.Номенклатура

Резултат от заявката:

Обърнете внимание, че полетата в резултата от заявката за поле са наречени „Елемент“ и „Група“. Ако псевдонимите на полетата не бяха посочени, полетата в резултата от заявката ще бъдат наречени „Име“ и „Име1“ (имената на полетата в резултата от заявката не могат да бъдат еднакви, така че „1“ автоматично се добавя към името на второто поле), което е много по-малко очевидно.

Вложени таблици в списъка с полета за избор

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

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

(<Список вложенных полей>) | *

<Вложенное поле [, <Вложенное поле>[, ...] ]

<Список вложенных полей>се състои от един или повече елементи, разделени със запетаи. Ако списъкът се състои от един елемент, не е необходимо той да бъде ограден в скоби.

Вместо да изброявате вложени полета, можете да посочите звездичка "*"; това ще означава, че резултатът от вложената заявка трябва да съдържа всички полета, които са във вложената таблица.

<Выражение>[[КАК]<Псевдоним поля>]

<Вложенное поле>може да представлява някакъв израз. В най-простия случай<Выражение>е препратка към поле на вложена таблица. Изразите са разгледани подробно на страница 344.

На всяко вложено поле може да бъде присвоен псевдоним. По-нататък<Псевдоним поля>може да се използва за по-удобно препращане към това поле, подобно на псевдонимите на полета в списъка за избор - вижте раздела „Псевдоними на полета в списъка за избор“ на

Псевдонимите могат да бъдат присвоени на вложени полета, независимо дали е даден псевдоним на самата вложена таблица.

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

Документ.Фактура.Състав.(Номенклатура като стоки, количество)

Резултат от заявката:

Връзка Съединение
Продукт Количество
Дънки за жени 4
Дънки за жени 5
Риза "Cowgirl" 5
Разходна фактура 00005 от 24.02.2002 г. 0:00:00 Дънки за жени 1
Дънки за жени 1
Moidodyr "Аквариум" 5
Мивка "Лили" 8
Миксер "Ултра" 10

Моля, обърнете внимание, че полето „Състав“ на резултата от заявката е вложена таблица, която има полетата „Номенклатура“ и „Количество“.

//Показване на всички полета от табличната част на фактурата в отчета.
Избирам
Документ.Фактура.Връзка,
Документ.Фактура.Състав.*

Целта на клаузата FROM е да обозначи списък с изходни таблици - източници на данни, използвани в този оператор SELECT.

Трябва да се отбележи, че клаузата FROM в езика на заявките не е задължителна. Може да се пропусне, ако източниците на данни са напълно квалифицирани в описанието на списъка с полета за избор, съдържащ се в клаузата SELECT. Имайте предвид, че редица примери в предишните раздели не съдържат клауза FROM.

Ключовата дума FROM е последвана от списък с източници. Като цяло списъкът с източници се описва от следния набор от правила:

<Источник>[, <Источник>[, ...]]

Източниците на данни за заявката са изброени в списъка с източници, разделени със запетаи. Всеки<Источник>списъкът с източници трябва да включва описание на източника; освен това може да се уточни<Перечень соединений>- правила за свързване на източник с други източници. Описани са спецификациите на връзката.

<Описание источника> [ <Перечень соединений> ]

Ако таблицата на информационната база е източник на данни,<Описание источника>съдържа<Имя таблицы>.

<Таблица>[ [КАК]<Псевдоним источника>]

Ако изходната таблица е виртуална, можете да посочите<Параметры>формирането му. Параметрите на виртуалните таблици са описани подробно в раздела „Източници на данни за заявки“.

<Имя таблицы> [(<Параметры>)] | <Описание запроса>

Подзаявка може също да действа като източник на данни за заявка; в този случай описанието на източника съдържа<Описание запроса>. Използването на вложени заявки е описано в.

В описанието на източника на данни може да бъде зададен и псевдонимът му. По-нататък<Псевдоним источника>може да се използва за по-удобен достъп до този източник. Използването на псевдоними на източници на данни е разгледано в .

Спецификации на връзката

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

Резултат от заявката:

контрагент банка
Доставчици Инвестиционна банка JSCB
Доставчици JSCB PromStroyBank
Плетачна фабрика "Заря" Инвестиционна банка JSCB
Плетачна фабрика "Заря" JSCB PromStroyBank
Фабрика за дънки Инвестиционна банка JSCB
Фабрика за дънки JSCB PromStroyBank
Купувачи Инвестиционна банка JSCB
Купувачи JSCB PromStroyBank
Панаир на облеклото Инвестиционна банка JSCB
Панаир на облеклото JSCB PromStroyBank
Търговска къща "Буденовски" Инвестиционна банка JSCB
Търговска къща "Буденовски" JSCB PromStroyBank
Павилион 45 на тържището Инвестиционна банка JSCB
Павилион 45 на тържището JSCB PromStroyBank
Бавария - порцелан Инвестиционна банка JSCB
Бавария - порцелан JSCB PromStroyBank
Фабрика за дънки Инвестиционна банка JSCB
Фабрика за дънки JSCB PromStroyBank
JSCB PromStroyBank Инвестиционна банка JSCB
JSCB PromStroyBank JSCB PromStroyBank

Резултатът от заявката съдържа комбинации от всички контрагенти с всички банки. По правило такъв резултат сам по себе си няма смисъл. Обикновено комбинациите от записи от различни изходни таблици трябва да бъдат ограничени от някои условия. В езика на заявките е възможно да се опише такава комбинация от източници чрез указване на самите източници и уточняване на условията, при които комбинациите от записи от тези източници трябва да бъдат включени в резултата от заявката.

Връзките са от няколко вида, те са описани от следните правила:

<Соединение> [<Перечень соединений>]

Общо взето<Перечень соединений>може да съдържа и описва не само една връзка (на два източника), но и няколко връзки на няколко източника едновременно.

[ВЪТРЕШНА] ВРЪЗКА<Описание источника>ОТ<Условие отбора> |

ЛЯВО [ВЪНШНО] СЪЕДИНЕНИЕ<Описание источника>ОТ<Условие отбора> |

ДЯСНО [ВЪНШНО] СЪЕДИНЕНИЕ<Описание источника>ОТ<Условие отбора> |

ПЪЛНО (ВЪНШНО] ПРИСЪЕДИНЯВАНЕ<Описание источника>ОТ<Условие отбора>

<Условие отбора>съдържа условия, според които е необходимо да се комбинират данни от изходни таблици - източници на заявки в селекцията. Правилата за описване на условия в езика на заявките се обсъждат на страница 357.

Ключовите думи LEFT, RIGHT и FULL указват характера на присъединяването. Думите INTERNAL или EXTERNAL могат да бъдат пропуснати изобщо, те увеличават видимостта и четливостта на текста на заявката.

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

[INNER] JOIN означава, че от двете изходни таблици - източници на данни, само онези комбинации от записи, които отговарят на определеното условие, трябва да бъдат включени в резултата от заявката. Останалите записи не са включени в резултата.

// Трябва да разберете кои банки са по едно и също време
// контрагенти (присъстват същите имена
//както в директорията Контрагенти, така и в директорията Банки).
Избирам

Банки. Връзка като банка
от

Вътрешна връзка
Наръчник. Банки като банки
от

Резултат от заявката:

контрагент банка
JSCB PromStroyBank JSCB PromStroyBank

LEFT [OUTER] JOIN означава, че резултатът от заявката трябва да включва комбинации от записи от двете изходни таблици, които отговарят на определеното условие. Но за разлика от вътрешното присъединяване, резултатът от заявката трябва също да включва записи от първия източник (посочен отляво на думата JOIN), за които не са намерени записи от втория източник, отговарящи на условието.

Така резултатът от заявката ще включва всички записи от първия източник; те ще бъдат обединени със записи от втория източник, когато определеното условие е изпълнено. Редовете с резултати от заявка, за които не са намерени съответстващи записи от втория източник, ще съдържат NULL в полетата, генерирани въз основа на записи от този източник.

//В отчета е необходимо да се покажат всички контрагенти и за тях
// който също е банка - посочете връзка към банката.
Избирам
Изпълнители Връзка Като изпълнител,
Банки. Връзка като банка
от
Справочник Контрагенти като контрагенти
Ляво външно съединение
Наръчник. Банки като банки
от
Контрагенти.Име = Банки.Име

Резултат от заявката:

RIGHT [OUTER] JOIN означава, че резултатът от заявката трябва да включва комбинации от записи от двете изходни таблици, които отговарят на определеното условие. В допълнение, резултатът от заявката трябва също да включва записи от втория източник (посочен отдясно на думата JOIN), за които не са намерени записи от първия източник, отговарящи на условието.

Така резултатът от заявката ще включва всички записи от втория източник; те ще бъдат обединени със записи от първия източник, когато определеното условие е изпълнено. Редовете с резултати от заявка, за които не са намерени съответстващи записи от първия източник, ще съдържат NULL в полетата, генерирани въз основа на записи от този източник.

//В отчета е необходимо да се покажат всички банки и за тези
// който също е контрагент - посочете връзка към контрагента.
ИЗБИРАМ
Изпълнители Връзка Като изпълнител,
Банки. Връзка като банка
ОТ
Справочник Контрагенти като контрагенти
Дясно външно присъединяване
Наръчник. Банки като банки
от
Контрагенти.Име = Банки.Име

Резултат от заявката:

контрагент банка
НУЛА Инвестиционна банка JSCB
JSCB PromStroyBank JSCB PromStroyBank

FULL [OUTER] JOIN означава, че резултатът от заявката трябва да включва комбинации от записи от двете изходни таблици, които отговарят на определеното условие. В допълнение, резултатът от заявката трябва да включва и онези записи от двата източника, за които не са намерени съвпадения.

Така резултатът от заявката ще включва всички записи от двата източника; те ще бъдат свързани помежду си, когато определеното условие е изпълнено. Редовете с резултати от заявка, за които не са намерени съответстващи записи от нито един източник, ще съдържат NULL в полета, генерирани въз основа на записи от този източник.

// Необходимо е да се покажат всички контрагенти и всички банки в отчета,
// a.тези, които са и двете - изведете в един ред.
Избирам
Изпълнители Връзка Като изпълнител,
Банки. Връзка като банка
от
Справочник Контрагенти като контрагенти
Пълно външно присъединяване
Наръчник. Банки като банки
от
Контрагенти.Име = Банки.Име

Резултат от заявката:

Псевдоними на източник на данни

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

Псевдонимът е зададен в съответствие с правилата за присвояване на идентификатори на променливи. Псевдонимите в заявката не могат да съвпадат.

Ключовата дума AS може да предхожда псевдонима на източника. Тази дума може изобщо да не е посочена, но ако е посочена, видимостта и четливостта на текста на заявката се увеличава.

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

// Този пример демонстрира използването
// в списъка с полета за избор на псевдонима на стоките,
// присвоен на таблицата източник Reference.Nomenclature
Избирам
Описание на продукта,
Item.Parent
от
Указател.Номенклатура.Продукт

Вложени таблици в списъка с източници

Списъкът с източници може да включва и вложени таблици - таблични части на директории и документи.

//Необходимо е да се покаже спецификацията на товарителниците в отчета -
// показване на самия документ, номенклатура и количество.
//Вложената таблица "Composition" е посочена в списъка с източници -
// таблична част от фактурата.
// Изборът е ограничен до осем записа, за да не се претоварва примерът.
Изберете Първите 8
Справка, номенклатура, количество
от
Документ.Фактура.Състав

Резултат от заявката:

Връзка Номенклатура Количество
Разходна фактура 00007 от 25.02.2002 г. 21:03:21 Дънки за жени 4
Разходна фактура 00006 от 25.02.2002 г. 0:00:00 Дънки за жени 5
Разходна фактура 00006 от 25.02.2002 г. 0:00:00 Риза "Cowgirl" 5
Разходна фактура 00005 от 03/01/2002 20:58:28 Дънки за жени 1
Разходна фактура 00004 от 03/01/2002 20:50:40 Дънки за жени 1
Разходна фактура 00003 от 23.02.2002 г. 0:00:00 Moidodyr "Аквариум" 5
Разходна фактура 00003 от 23.02.2002 г. 0:00:00 Мивка "Лили" 8
Разходна фактура 00003 от 23.02.2002 г. 0:00:00 Миксер "Ултра" 10

Моля, обърнете внимание, че когато посочвате вложена таблица в списъка с източници, е разрешен достъп както до полетата на самата вложена таблица, така и до полетата на таблицата от най-високо ниво (тази, която съдържа вложената таблица). В този случай се осъществява достъп до полето "Връзка" на самия документ.

Подзаявки в списъка с източници

Списък с източници на заявка може да използва подзаявка като таблица източник. В този случай описанието на източника съдържа описанието на подзаявката. Описанието на вложена заявка се прави по същия начин като обикновена: вижте

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

Резултатът ще бъде абсолютно същият като в предишния пример.

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

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

Реалните таблици от своя страна могат да бъдат обектни (референтни) и необектни (безреферентни), фиг. 97.

Ориз. 97. Таблици за заявки

Отличителна черта на реалните таблици е, че те съдържат данни от всяка една реална таблица, съхранявана в базата данни.. Например таблицата Справочник.Клиенти, съответстваща на директорията Клиенти, или таблицата Регистър натрупване.Остатъци от материали, съответстваща на регистъра на натрупване на Остатъци от материали, е реална.

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

Понякога виртуални таблици могат да се формират и от една реална таблица (например виртуалната таблица Prices. Slice of the Last се формира на базата на таблицата на Ценовия информационен регистър). Общото между всички виртуални таблици обаче е, че могат да им бъдат дадени редица параметри, които определят какви данни ще бъдат включени в тези виртуални таблици. Наборът от такива параметри може да бъде различен за различните виртуални таблици и се определя от данните, съхранени в таблиците на изходната база данни.

Реалните таблици се делят на обектни (референтни) и необектни (нереферентни).

IN обектни (референтни) таблиципредставена е информация за типове справочни данни (справочници, документи, планове на типове характеристики и др.). И в необективен (нереферентен)– всички други типове данни (константи, регистри и др.).

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

Алгоритъмът, по който ще бъдат избрани данните от изходните таблици на заявката, е описан в текста на заявката на специален език - език за заявки . Текстът на искането се състои от няколко части:

описание на заявката;

Консолидиране на заявки

подреждане на резултатите;

· АВТОПОРЪЧКА;

описание на резултатите.

Задължителна част от заявката е само първата - описанието на заявката. Всички останали присъстват при необходимост.

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

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

Подреждането на резултатите определя условията за подреждане на редовете с резултати от заявката.

AUTOORDER ви позволява да активирате автоматичното подреждане на редовете с резултати от заявката.

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

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

Система за съставяне на данни предназначен за създаване на персонализирани отчети в системата 1C:Enterprise 8.1и се състои от няколко основни части.

Изходните данни за оформлението на справката съдържа схема за съставяне на данни са набори от данни и методи за работа с тях(фиг. 98).

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

Например диаграма на оформление може да съдържа следния набор от данни (Фигура 99).

Ориз. 98. Обща схема на работа със системата за композиране на данни

Ориз. 99. Пример за схема на оформление (набор от данни и заявка, използваща го)

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

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

Например може да се зададе следната структура на отчета (фиг. 100):

Ориз. 100. Структура на възможен доклад

Генерираният отчет може да изглежда така (фиг. 101).

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

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

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

Ориз. 101. Образец на протокол

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

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

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

Последователността на системата за оформление може да бъде представена като следната диаграма (фиг. 102):

Ориз. 102. Схема на системата за оформление

3.12.1. Създаване на отчет "Регистър на документите Предоставяне на услуги"

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

Докладвай. Дайте му име RegisterDocumentsProvisionServices. Отметка Основенщракнете върху " Готов". В конструктора на схемата за съставяне на данни добавете Набор от данни - Заявка Конструктор на заявки".

Изберете обектната (референтна) документна таблица като източник на данни за заявката RenderingServices. От тази таблица изберете следните полета (фиг. 103):

Дата на; Брой; Наличност; майстор; Клиент.

Ориз. 103. Избрани полета

След това отидете на отметка Поръчкаи укажете, че резултатът от заявката трябва първо да бъде подреден по стойност на полето дата, а след това по стойност на полето RenderingServices.Link(фиг. 104).

Ориз. 104. Ред на извеждане на резултата от заявката

Щракнете върху " Добре" и вижте каква заявка е генерирал конструкторът на заявка.

Отидете на отметка Настройкии добавете ново групиране към структурата на отчета (фиг. 105).

Ориз. 105. Команден панел на раздела Настройки

В прозореца за избор на поле за групиране щракнете върху „ Добре“ и в раздела Избрани полетазадайте полетата, които ще се показват в отчета:

Дата на; Брой; Наличност; майстор; Клиент (фиг. 106).

Ориз. 106. Персонализиране на структурата на отчета

Регистър на документите за предоставяне на услуги. Щракнете върху " форма" и вижте резултата от отчета (фиг. 107).

Ориз. 107. Справка Регистър на документите за предоставяне на услуги

Докладвай. назови го Оценка на услугата. Отметка Основенщракнете върху " Отворена диаграма на състава на данните". В диалоговия прозорец Layout Designer, който се отваря, щракнете върху " Готов".

В конструктора на схема за съставяне на данни създайте Набор от данни - Заявка(DataSet1) и щракнете върху " Конструктор на заявки".

Номенклатураи виртуална таблица на регистъра за натрупване Продажби.Обороти. За да избегнете двусмислието на името в заявката, преименувайте номенклатурната таблица на Spr Номенклатура(контекстно меню с десен бутон - Преименуване на таблица).

След това изберете от полетата на таблицата Spr номенклатура.ВръзкаИ ПродажбиОборот.ПриходиОборот(фиг. 108).

Ориз. 108. Избрани полета

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

Единственото нещо, което трябва да направите, е да нулирате флага всичкона регистрационната таблица и го поставете на референтната таблица Spr Номенклатура(фиг. 109).

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

Ориз. 109. Задаване на връзки на масата

Отидете на отметка Условияи задайте условията за избор на елементи от Номенклатурния справочник (фиг. 110). Когато задавате условия за избор, ще трябва да използвате параметри на заявката. Първото условие трябва да е избраният елемент да не е група (за да направите това, превключете към Произволно условие- задайте флаг Произволно). След това в полето състояниевъведете следния текст:

SprNomenclature.ThisGroup = FALSE

Второто условие трябва да е избраният артикул да е услуга (това е просто състояние) (фиг. 110).

Ориз. 110. Условия за избор на елементи

В бъдеще, преди изпълнение на заявката, в параметъра Типова номенклатуратрябва да подадете съответната стойност enum.

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

Ориз. 111. Съюзи/Псевдоними

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

Отидете на отметка Ресурсии щракнете върху " >> ", така че конструкторът да избере всички налични ресурси, върху които да изчисли сумите. Във вашия случай това е единственият ресурс приходи(фиг. 112).

Ориз. 112. Ресурси на схема за съставяне на данни

Отидете на отметка Настроики(фиг. 113).

Ориз. 113. Опции за съставяне на данни

В този раздел ще видите три опции: Начало на периода, Краен периодИ Типова номенклатура. Първият параметър е началото на периода за изчисляване на общите суми, вторият е краят на периода. В резултат на това изходната таблица ще съдържа само оборотите, изчислени в прехвърления период.

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

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

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

Първо, потребителят трябва да бъде освободен от необходимостта да посочва часа при въвеждане на дата. За да направите това, променете съществуващата декларация на типа за параметъра Начало на периода. Кликнете два пъти в клетка Налични видове, съответстващ на параметъра Начало на периода, натиснете бутона за избор " " и в долната част на прозореца за редактиране на тип данни задайте Състав на датав смисъл дата(фиг. 114).

Щракнете върху " Добре".

Втората особеност е, че часът по подразбиране в датата е 00:00:00. Следователно, ако потребителят зададе отчетния период от 10/01/2009 до 10/31/2009, сумите в регистъра ще бъдат изчислени от началото на деня 10/01/2009 00:00:00 до началото на деня 31.10.2009 г. 00:00:00 ч. По този начин данните за 31-ия ден, различни от началото на деня, няма да бъдат включени в изчислението, което много ще изненада потребителя. За да премахнете тази ситуация, добавете друг параметър, в който потребителят ще въведе крайната дата. Стойност на параметъра Краен периодще се изчислява автоматично, така че да показва края на деня на въведената от потребителя дата. Следователно, за параметъра Краен периодпостави знамето Ограничение за наличност.

Ориз. 114. Редактиране на състава на датата

С помощта на бутона на командната лента добавете нов параметър с име EndDate (фиг. 115).

Ориз. 115. Добавяне на параметър EndDate

За този параметър платформата автоматично ще генерира заглавка − срок на годност. Оставете го без промяна. Задайте тип стойност на параметъра − дата. В този случай, както и за параметъра Начало на периода, посочете състава на датата - дата.

Моля, имайте предвид, че по подразбиране параметърът, който сте добавили, е достъпен за потребителя (ограничението за достъпност в последната колона е премахнато).

Отидете на параметър Краен период. За него системата е задала флага за ограничаване на достъпността. Не премахвайте отметката, защото стойността на този параметър ще бъде изчислена въз основа на стойността, зададена от потребителя за параметъра Срок на годност.

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

В клетка Изразяванезадайте параметъра Краен периодследния израз:

В резултат на горните действия параметрите на оформлението ще изглеждат така (фиг. 116):

Ориз. 116. Опции на системата за оформление

Накрая задайте параметъра Типова номенклатура. Тъй като отчетът трябва да показва приходите, получени само от продажбата на услуги, стойността на параметъра Типова номенклатурапотребителят не трябва да се променя. Трябва да се зададе директно в оформлението като . Флаг за ограничение на параметър Типова номенклатураплатформата го е задала по подразбиране, така че трябва само да посочите желаната enum стойност Номенклатура на видоветев клетка Значение, съответстващ на параметъра Типова номенклатура(фиг. 117).

Ориз. 117. Задаване на стойността на параметъра Nomenclature Type

Пристъпете към формиране на структурата на отчета. Отметка Настройкидобавете групиране и отново не посочвайте полето за групиране. Отметка Избрани полетапосочете полетата ОбслужванеИ приходи(фиг. 118).

След това отидете на отметка Други настройкии задайте заглавието на отчета - Оценка на услугата(фиг. 119).

Ориз. 119. Задаване на заглавие на отчета

Стартирайте 1C:Enterprise в режим на отстраняване на грешки.

Изберете отчет Оценка на услугата, но преди да щракнете върху „ форма“, отворено Настройкии на отметката Опции за даннизадайте отчетния период от 01.03.2004 г. до 30.04.2004 г. (фиг. 120). Ако датите на създаване на вашите документи се различават от дадените в примера, тогава отчетният период трябва да бъде зададен по различен начин.

Ориз. 120. Настройки на отчета

Щракнете върху " Добре" и генерирайте отчет. Резултатът ще изглежда така (фиг. 121):

Ориз. 121. Резултат от изпълнението на отчета

Сега променете крайната дата на 3/31/2004. В отчета са включени данни за 31 март (фиг. 122).

Ориз. 122. Резултатът от изпълнението на отчета

3.12.3. Създаване на справка "Приходи на магистри"

Докладвай Майсторски приходище съдържа информация за това какви приходи са получени от Master LLC поради работата на всеки от майсторите, с подробности за всички дни в избрания период и разбивка за обслужвани клиенти през всеки от дните. Използвайки този отчет като пример, ще научите как да създавате многостепенни групи в заявка и как да заобикаляте всички дати в избран период.

Създайте нов конфигурационен обект Докладвай. назови го RevenueMastersи стартирайте основния конструктор на схема за съставяне на данни.

Добавете Набор от данни - Заявка(DataSet1) и щракнете върху " Конструктор на заявки". Изберете виртуалната таблица на регистъра за натрупване Продажби.Обороти.

Задайте една от опциите на тази виртуална маса − Периодичност. За да направите това, отидете на терена масии щракнете върху " Опции за виртуална маса“(фиг. 123).

Ориз. 123. Промяна на параметрите на виртуална маса

В прозореца с параметри, който се отваря, задайте стойността на параметъра Периодичност - Ден(фиг. 124). Натисни бутона " Добре".

Ориз. 124. Опции за виртуална маса

След това изберете следните полета от таблицата:

· Обороти от продажби.Магистър;

· Обороти от продажби. Период;

· Обороти от продажби Клиент;

· Оборот на продажбите Оборот на приходите (фиг. 125).

Ориз. 125. Избрани полета

Сега отидете на отметка Съюзи/Псевдонимии задайте псевдоним приходиза полето ПродажбиОборот.ПриходиОборот(фиг. 126).

Ориз. 126. Съюзи/Псевдоними

Отметка групиранедефинирайте, че групирането ще се извършва по полета майстор, ПериодИ Клиенти стойности на полета Приход Оборотще бъдат сумирани (фиг. 127).

Ориз. 127. Групиране на полета

Отметка Поръчкаукажете, че резултатът от заявката ще бъде сортиран във възходящ ред на стойността на полето Период. Щракнете върху " Добре". Разгледайте текста на заявката, генериран от конструктора.

Сега преминете към редактиране на схемата за съставяне на данни. Отметка Ресурсищракнете върху " >> " и се уверете, че конструкторът е избрал единствения наличен ресурс - приходи.

Отметка Настроикиследвайте същите стъпки, както при създаването на предишния отчет.

За параметър Начало на периодазадайте заглавие начална дата. В полето Налични видовезадайте състава на датата - дата.

За параметър Краен периодзадайте израз:

Краен период (&Крайна дата, "Ден")

В полето Ограничениеналичност задайте флага за ограничение на наличността.

Накрая добавете още един параметър − Срок на годност, задайте типа му като дата, съставът на датата е дата.

В резултат на горните действия параметрите на състава на данните ще изглеждат така (фиг. 128):

Ориз. 128. Опции за съставяне на данни

Сега трябва да създадем структурата на отчета. Отметка Настройкипоследователно създайте две вложени групи: от най-високо ниво - по поле майстор, вложени в него - по поле Период. След това добавете друго групиране, вложено в полето за групиране по Период, – Подробни записи(без да посочвате полето за групиране) (фиг. 129).

Ориз. 129. Структура на отчета

Сега, като сте на нивото на глобалния отчет, отидете на раздела Избрани полетаи добавете полета към списъка КлиентИ приходи.

И накрая, от нивото на глобалния отчет отидете на раздела Други настройкии променете следните настройки. За параметър зададена стойност Отделно и само в резултатите; за параметър задайте стойността Започнетеи за параметъра заглавказадайте стойността Майсторски приходи(фиг. 130).

Ориз. 130. Задаване на изхода на общи суми в началото

Стартирайте 1C:Enterprise в режим на отстраняване на грешки и вижте резултата от отчета за приходите на Masters за периода от 01.03.2004 г. до 30.04.2004 г. (фиг. 131).

Ориз. 131. Резултат от изпълнението на отчета

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

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

Ще трябва да промените настройката за групиране Период. За да отидете до настройките на това конкретно групиране, в полето за структура поставете курсора върху това групиране и след това щракнете върху " Период" в командния панел (фиг. 132).

Ориз. 132. Настройки за групиране Период

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

Отидете на отметка Групиране на полета. За поле ПериодИнсталирай Тип добавка - Ден(фиг. 133).

Ориз. 133. Задаване на типа допълнение на периода

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

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

За да осигурите точно тази работа на отчета, влезте в режим на редактиране на първото поле (например, като кликнете два пъти върху него) и натиснете бутона "изчисти" х". След това, като щракнете върху бутона " T", ще можете да изберете вида на данните, показвани в това поле. Изберете Поле за съставяне на данни(фиг. 134).

Ориз. 134. Избор на тип данни

Щракнете върху " Добре". Сега щракнете върху бутона за избор в полето за въвеждане " " и в прозореца за избор на поле, който се отваря, маркирайте опцията Начало на периода(фиг. 135). Щракнете върху " Добре".

Ориз. 135. Избор на поле

За второто поле за въвеждане укажете по същия начин, че крайната дата на периода ще бъде получена от параметъра Срок на годност(фиг. 136).

Ориз. 136. Настройки за групиране Период

Стартирайте 1C:Enterprise в режим на отстраняване на грешки и изпълнете отчета Майсторски приходиза периода от 20 март 2004 г. до 20 април 2004 г. (фиг. 137).

Ориз. 137. Резултат от изпълнението на отчета

3.12.4. Създаване на отчет за инвентаризация на услугата

Докладвай Сервизен списъкще съдържа информация за това какви услуги и на каква цена предоставя LLC "Master". На неговия пример ще се запознаете с възможността за получаване на най-новите стойности от периодичния регистър на информацията и показване на йерархични директории.

Създайте нов конфигурационен обект Докладвай. назови го Сервизен списъки стартирайте дизайнера на схема за съставяне на данни. Създайте нов Набор от данни - Заявка(DataSet1) и извикайте конструктора на заявката.

Изберете обектна (референтна) справочна таблица Номенклатураи виртуална таблица с информационен регистър Цени.СрезПоследен. За да премахнете неяснотата на имената в заявката, преименувайте таблицата Номенклатура на Spr Номенклатура.

Извикайте диалога за въвеждане на параметри на виртуалната таблица PricesSliceLastи посочват, че периодът ще бъде преминат в параметъра Дата на отчета(фиг. 138).

Ориз. 138. Опции за виртуална маса

След това изберете следните полета от таблиците:

· SprNomenclature.Parent;

· PricesSliceLast.Price (фиг. 139).

Ориз. 139. Избрани полета

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

Отметка Условиязадайте условието за избор на елементи от речника Номенклатура– елементите, които ще бъдат избрани, трябва да съответстват на типа елемент, предаден в параметъра на заявката Типова номенклатура(фиг. 140).

Ориз. 140. Условия за избор на елементи

Отметка Съюзи/Псевдонимипоказват, че полето Родителще има псевдоним Сервизна група, и полето Връзка - Услуга(фиг. 141).

Ориз. 141. Съюзи/Псевдоними

Отидете на отметка групиранеи показват, че групирането ще се извърши по поле SprNomenclature.Parent. Не е необходимо да задавате стойностите на обобщените полета (фиг. 142).

Фиг.142. Групиране на полета

Щракнете върху " Добре". Вижте текста на искането.

Продължете към редактиране на схемата за съставяне на данни. Отметка Ресурсинатискане на бутона " >> " изберете единствения наличен ресурс Цена.

Отметка Настроикизадайте стойността на параметъра Типова номенклатуракак Изброяване. Видове номенклатура. Обслужване. Освен това премахнете ограничението за достъпност за параметъра Дата на отчетаи му дайте заглавие - Дата на отчета. В полето Налични видовезадайте състава на датата - дата. За параметър Период, напротив, задайте ограничението за достъпност (фиг. 143).

Ориз. 143. Опции за схема на оформление

Пристъпете към формиране на структурата на отчета. Отидете на отметка Настройкии създайте група по поле Сервизна група, указвайки вида на групирането Йерархия. В рамките на това групиране създайте друго групиране, без да посочвате групово поле. Той ще съдържа подробни отчетни записи (Фиг. 144).

Ориз. 144. Структура и осветени полета на отчета

Отидете на отметка Избрани полетаи укажете, че полетата Услуга и Цена ще бъдат показани в отчета (Фиг. 145).

Ориз. 145. Структура на отчета

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

За да деактивирате показването на суми в отчета, задайте параметъра Позициониране на общи суми вертикалнов смисъл Не.

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

За параметър Местоположение на полетата за групираневъведете стойност Отделно и само в резултатите(така докладът ще бъде по-добре "четен"). Накрая задайте заглавието на отчета - Сервизен списък.

Стартирайте 1C:Enterprise в режим на отстраняване на грешки и първо отворете периодичния регистър цени.

Добавете още една стойност към услугата Диагностика: новата цена на услугата от 01.04.2004 г. е 350 (фиг. 146). Това ще тества отчета.

Ориз. 146. Вписвания от регистър "Цени"

Сега изпълнете отчета Сервизен списъккъм 31 март 2004 г. (фиг. 147).

Ориз. 147. Резултат от изпълнението на отчета

Вашият отчет правилно отразява цената на услугата Диагностика към 31.03.2004 г. - 200 рубли.

Пуснете отчета отново, но вече за друга дата - 01.04.2004 г. (фиг. 148).

Ориз. 148. Резултат от изпълнението на отчета

Както можете да видите, е показана новата цена на услугата "Диагностика" - 350 рубли.

Докладвай Оценка на клиентаще покаже какъв е доходът от предоставянето на услуги на всеки от клиентите за целия период на работа на Master LLC. На неговия пример ще бъде демонстрирана възможността за използване на диаграма за показване на резултата от заявка.

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

Логично диаграмае колекцията от точки, серии и стойности на серии в точката(фиг. 149).

По правило моментите или обектите, за които получавате стойностите на характеристиките, се използват като точки, а характеристиките, за които се интересувате от стойности, се използват като серии.

Например диаграмата на продажбите на видове артикули по месеци ще се състои от точки - месеци, серии - видове артикули и стойности - оборот от продажби.

Диаграмата като обект на вградения език има три области, които ви позволяват да контролирате дизайна на диаграмата: областта на конструкцията, областта на заглавието и областта на легендата (фиг. 150).

Диаграмата може да бъде вмъкната в структурата на отчета като отделен елемент. При създаване на отчет Оценка на клиентадиаграмата ще се използва в структурата на настройките на схемата за съставяне на данни.

Ориз. 149. Примерна диаграма

Ориз. 150. Области на диаграма

Създайте нов конфигурационен обект в конфигуратора Докладвай. назови го Оценка на клиентите, отворете основната схема на оформление на данните.

Създавайте набор от данни - заявка(DataSet1) и извикайте конструктора на заявката. Изберете таблица с регистър на виртуално натрупване Продажби.Оборотии от него едно поле - ПродажбиОборот.Клиент.

След това добавете ново поле (икон Добаветев командната лента над списъка с полета) и с помощта на конструктора на изрази го дефинирайте като разликата между приходите и разходите (фиг. 151).

Ориз. 151. Персонализиран редактор на израз на поле

В резултат на това списъкът с избрани полета ще изглежда така (фиг. 152):

Ориз. 152. Избрани полета

Отметка Съюзи/Псевдонимиукажете, че изчисленото поле ще има псевдоним доходи(фиг. 153).

Ориз. 153. Съюзи/Псевдоними

Отметка Поръчкапоказват, че редовете с резултати трябва да бъдат сортирани в низходящ ред на стойността на полето доходи. Щракнете върху " Добре" и вижте какъв текст е генерирал конструкторът на заявката.

Отидете на отметка Ресурсии добавете поле доходикъм ресурсите за оформление. След това отидете на отметка Настройкиза да се създаде структурата на отчета.

За разлика от всички предишни отчети, чиято структура съдържаше групиране, този път към структурата на отчета се добавя диаграма (фиг. 154).

Ориз. 154. Структура на отчета

Добавете групиране по поле към точките на диаграмата Клиент. Оставете серията диаграми непроменена.

Сега отидете на отметка Избрани полетаи изберете поле доходиза изход към отчета. Структурата на отчета трябва да приеме следната форма (фиг. 155):

Ориз. 155. Структура на отчета и настройки на диаграмата

Отметка Други настройкизадайте заглавието на отчета - Оценка на клиента, а също така изберете типа на диаграмата − Кръгъл обемен.

Стартирайте 1C:Enterprise в режим на отстраняване на грешки и отворете отчета Оценка на клиента(фиг. 156).

Ориз. 156. Кругова диаграма на обема в отчета

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

Отворете настройките на отчета и променете типа на диаграмата на Измерване. Генерирайте отчета отново (фиг. 157).