Опростен отчет със състав на данните в 1С 8

В Потвърждението на счетоводството на предприятията 3.0 се създават 2 варианта на външен отчет, които показват следните полета от директорията на Номенклатурата:

  • Номенклатурна група (тип ReferenceLink.NomenclatureGroups);
  • Тип номенклатура (тип ReferenceLink. Типове номенклатура);
  • Номенклатура (тип ReferenceRef.Nomenclature);
  • CCD номер (тип DirectoryLink.CCD номера);

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

Фигура: 1. Резултат с избор

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

Фигура: 2. Резултат с групировки

И в двата случая се използва схемата за композиране на данни. В първия случай, в допълнение, се използва оформлението на Номенклатурата (Фиг. 3).

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

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

КЪДЕТО
Номенклатура.ThisGroup = FALSE
И Nomenclature.NomenclatureGroup.Ref <> & EmptyRef

Доклад за подбор

Оформление на отчета

В конструктора на отчети (вж. Фиг. 3) добавете оформление от типа „Документ за електронна таблица“ и дайте на оформлението името Номенклатура (фиг. 4).

Фигура: 4. Добавяне на оформление на отчета

След това ще оформим оформление, като използваме показаните на фиг. 5 информация.

Фигура: 5. Оформление на доклада

За да покажете заглавието и селекциите, използвайте шаблона за попълване. В реда на отчета - попълване на параметър. За всеки параметър на реда в прозореца за свойства задайте стойността на полето Параметър за декодиране да е същата като стойността на полето Параметър (Фиг. 6).

Фигура: 6. Параметър NomenclatureGroup

Това ще ви позволи да отворите в отчета формуляр на съответния каталог с данни за предмета, който ви интересува (ако Result.Protection = True;).

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

Схема за съставяне на данни

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

ИЗБИРАМ
NomenclatureGroup, Nomenclature Kind, Справка AS Номенклатура Справка, CCD номер
НА
Директория.Номенклатура
КЪДЕТО
Това е Group = FALSE
И NomenclatureGroup.Ref <> & EmptyRef

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

Нека използваме бутона „Отваряне на схема за композиране на данни“ в конструктора на отчети (виж фиг. 3) и добавете тази схема към отчета (фиг. 7).

Фигура: 7. Добавяне на схема за съставяне на данни

В диаграмата, която се отваря, в раздела „Набори от данни“ добавете набора от данни за заявка (той получава името Data Set) (фиг. 8).

Фигура: 8. Създаване на набор от данни

След това в същия раздел се натиска бутонът Query Designer и в отворения диалогов прозорец на раздела Таблици, в клона Референции на списъка с база данни се избира справочникът за номенклатурата и NomenclatureGroup, Nomenclature Type, Reference и CCD номер полета са избрани в списъка с таблици (фиг. 9).

Фигура: 9. Избор на полета за заявка

В раздела Условия въведете показаните на фиг. 10 данни.

Фигура: 10. Условия за запитване

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

В резултат на това след излизане от конструктора на заявката получаваме този, показан на фиг. 11 текст на заявката.

Фигура: 11. След излизане от конструктора на заявки

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

Имайте предвид, че в низа на заявката

Nomenclature.Ref AS NomenclatureReference

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

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

Фигура: 12. След излизане от конструктора на заявки

Този параметър присъства в състоянието

Обърнете внимание, че параметърът Reference.NomenclatureGroups.EmptyRef () е добавен ръчно. Въпреки че в този случай тази стойност не би могла да бъде дефинирана - празна стойност в нашия случай е еквивалентна на празна препратка.

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

Фигура: 13. Подробни бележки

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

В следващата група Настройки изберете полето Доклад и в раздела Избрани полета избройте данните, показани в Резултат (документ с електронна таблица) (Фиг. 14).

Фигура: 14. Полета за отчет

В раздела Избор формираме селекции в съответствие с фиг. 15 (настройката за отчет все още е избрана).

Фигура: 15. Доклад за подбор

В раздела Сортиране посочете полетата в съответствие с фиг. 16.

Фигура: 16. Сортиране на данни

Това завършва работата със схемата за съставяне на данни.

Форма за доклад

Формата за отчет, отворена в конфигуратора, е показана на фиг. 17.

Фигура: 17. Формуляр за отчет, отворен в конфигуратора

В свойствата на формуляра се посочва Номенклатурата на заглавието и се поставя отметка в квадратчето AutomaticSaveDataIn Settings.

В свойствата на групата MainCommandPanel Резултатът е посочен като източник на команди (Фиг. 18).

Фигура: 18. Избор на команден източник

Бутонът Форма има едноименното действие, което ни препраща към следния код:

& На сървъра
функция GenerateOnServer ()
настройки = report.ConfigurationComposer.Settings;
//
// Задаване на избор
yesChoice_0 = не nomenclatureGroup.Empty ();
isSelection_1 = notNomenclatureView.Empty ();
селекция = настройки.
SetSelection (isSelection_0, selection, 0, nomenclatureGroup);
SetSelection (isSelection_1, селекция, 1, тип номенклатура);
//
reportObject = Форма AttributeValue ("Отчет");
//
// Показване на заглавието на отчета, селекциите (ако има такива) и заглавието на таблицата
layout = reportObject.get Layout ("Номенклатура");
AreaHeader = layout.GetScope ("Заглавие");
AreaHeader.Parameters.date = формат (currentDate (), "DLF = D");
Резултат.Clear ();
Result.Display (TitleArea);
ако има Selection_0 или има Selection_1 тогава
ScopeSection = layout.GetScope ("Избор");
Result.Display (ScopeSelection);
ако има Selection_0 тогава
ScopeSelection = layout.GetScope ("Избиране");
ScopeSelection.Parameters.NomenclatureGroup = ProductGroup;
Result.Display (ScopeSelection);
endIf;
ако има Selection_1 тогава
ScopeSelection = layout.GetScope ("SelectVN");
ScopeSelection.Parameters.Nomenclature view = Номенклатурен изглед;
Result.Display (ScopeSelection);
endIf;
endIf;
TablesHeaderSphere = layout.GetScope ("Heading2");
Result.Display (Обхват на TableHeader);
//
// Изведете резултата от заявката в таблица със стойности
scd = reportObject.GetMayout ("MainDataCompositionSchema");
tp = Тип ("DataCompositionLayoutGeneratorForValuesCollection");
Композитор на оформление = Нов Композитор на композиция на данни;
LayoutComposition = LayoutComposer.Run (skd, настройки, и т.н.);
DataComposition Processor = нов DataComposition Processor;
DataComposition Processor.Initialize (LayoutData);
OutputProcessor = new DataCompositionOutputProcessorInValuesCollection;
tz = Нова таблица на стойностите;
Изходен процесор.SetObject (tz);
OutputProcessor.Output (DataComposition Processor);
//
// Прехвърляне на таблицата със стойности в документ за електронна таблица (резултат)
AreaReportRow = layout.GetArea ("Line");
за всяка страница от tz цикъл
AreaReportRow.Parameters.Fill (страница);
Result.Output (AreaReportRow);
край на цикъла;
// или
// prm = AreaReportString.parameters;
// за всеки ред от цикъл tz
//prm.NomenclatureGroup = p.NomenclatureGroup;
//prim.Nomenclature view = страница за изглед на номенклатура;
//pr.nomenclatureRef = line.nomenclatureRef;
// rm.GTD номер = номер на ред на GTD;
//Result.Print (ReportStringArea);
// край на цикъла;
Резултат.AutoScale = Вярно;
Result.Protection = Вярно;
Result.PageOrientation = PageOrientation.Por Portrait;
връщане tz.amount ();
endFunction

В допълнение модулът за формуляр има процедура OpenOpen, предназначена да генерира отчет при отварянето му и да потисне предупреждението, че отчетът не е генериран (Фиг. 19).

Фигура: 19. Отчетът не се генерира

& На клиента
Отворена процедура (неуспех)
os = Elements.Result.DisplayStatus;
os.Additional DisplayMode = Допълнителен DisplayMode.Не използвайте;
оси Видимост = невярно;
// Генериране на отчет при отварянето му
форма (");
Край на процедурата

Елементите на формуляра на отчета NomenclatureGroup иNomenclatureKind имат обработчик на събития OnChange, който извиква процедурата за генериране (на клиента). Манипулаторът е зададен в групата Събития на прозореца за редактиране на свойствата на елементите (Фиг. 20)

Фигура: 20. Манипулатор на събития OnChanging an itemNomenclatureGroup

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

настройки = report.ConfigurationComposer.Settings;
//
// Параметър за заявка
settings.DataParameters.Elements [0] .Value = справочници.NomenclatureGroups.EmptyLink ();

Групиран доклад

Схема за съставяне на данни

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

Фигура: 21. Използват се Autocomplete и AutoCaption

Втората разлика между схемата за композиране на данни и предишната версия се намира в раздела Настройки (Фиг. 22).

Фигура: 22. Настройки на раздела с две групировки

За групиране се използва Автосортиране (по азбучен ред). В подробните записи е посочено възходящо сортиране по полето NomenclatureRef, т.е. по име (фиг. 23).

Фигура: 23. Сортиране на подробни записи

Форма за отчет с групи

Формата на отчета с резултата може да се види на фиг. 2. Формата, отворена в конфигуратора, е показана на фиг. 24.

Фигура: 24. Форма за доклад. Раздел с подробности

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

В свойствата на групата MainCommandPanel формулярът е посочен като команден източник (фиг. 25).

Фигура: 25. Източникът на команди е формата

Разделите Атрибути (виж Фиг. 24), Командите и Параметрите не се променят (последните два са празни).
В модула на формуляра няма нито един ред код.
Резултатът (виж фиг. 2) се получава след щракване върху бутона Генериране.

Заключение

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

& На сървъра
функция GenerateOnServer ()
заявка = нова заявка;
Текст на заявката = "SELECT NomenclatureGroup, NomenclatureKind, Справка AS NomenclatureRef, CCD номер
| ОТ Директория. Номенклатура
| КЪДЕ ThisGroup = FALSE ";
yesChoice_0 = не nomenclatureGroup.Empty ();
isSelection_1 = notNomenclatureView.Empty ();
ако има Selection_0 тогава
QueryText = QueryText + "И NomenclatureGroup = & NomenclatureGroup"
в противен случай
QueryText = QueryText + "И NomenclatureGroup <>> & EmptyRef"
endIf;
ако има Selection_1 тогава
QueryText = QueryText + "ANDNomenclatureType = & NomenclatureKind"
endIf;
request.Text = Заявка за текст;
request.SetParameter ("EmptyLink", директории.NomenclatureGroups.EmptyRef ());
query.SetParameter ("NomenclatureGroup", NomenclatureGroup);
query.SetParameter ("NomenclatureKind", NomenclatureKind);
QueryResult = Query.Run ();
//
// Предаваме резултатите от заявката в таблицата със стойности
tz = резултат от Query.Upload ();
tz.sort ("NomenclatureGroup, NomenclatureKind, NomenclatureLink");
// Показване на заглавието на отчета, селекциите (ако има такива) и заглавието на таблицата
reportObject = Форма AttributeValue ("Отчет");
layout = reportObject.get Layout ("Номенклатура");
AreaHeader = layout.GetScope ("Заглавие");
AreaHeader.Parameters.date = формат (currentDate (), "DLF = D");
Резултат.Clear ();
Result.Display (TitleArea);
ако има Selection_0 или има Selection_1 тогава
ScopeSection = layout.GetScope ("Избор");
Result.Display (ScopeSelection);
ако има Selection_0 тогава
ScopeSelection = layout.GetScope ("Избиране");
ScopeSelection.Parameters.NomenclatureGroup = ProductGroup;
Result.Display (ScopeSelection);
endIf;
ако има Selection_1 тогава
ScopeSelection = layout.GetScope ("SelectVN");
ScopeSelection.Parameters.Nomenclature view = Номенклатурен изглед;
Result.Display (ScopeSelection);
endIf;
endIf;
TablesHeaderSphere = layout.GetScope ("Heading2");
Result.Display (Обхват на TableHeader);
//
// Прехвърляне на таблицата със стойности в документ за електронна таблица
AreaReportRow = layout.GetArea ("Line");
за всяка страница от tz цикъл
AreaReportRow.Parameters.Fill (страница);
Result.Output (AreaReportRow);
край на цикъла;
Резултат.AutoScale = Вярно;
Result.Protection = Вярно;
Result.PageOrientation = PageOrientation.Por Portrait;
връщане tz.amount ();
endFunction