Нека създадем външен отчет, който ще показва отчетна информация за балансите на артикулите и техния оборот. Необходимата информация се изисква от заявката с помощта на набор от данни от типа "Заявка", който съдържа текста на заявката:
ИЗБИРАМ
_DemoNomenclature.Връзка КАК Номенклатура
МЯСТО Текуща номенклатура
ОТ
Директория._DemoNomenclature КАК ДА _DemoNomenclature
КЪДЕТО
НЕ _ДемоНоменклатура. Знак за изтриване
И НЕ _ДемоНоменклатура. Това е група
;

////////////////////////////////////////////////////////////////////////////////
ИЗБИРАМ
CurrentNomenclature.Номенклатура,
_Демонстрация Остатъци от стоки в местата за съхранение Остатъци и обороти. Място за съхранение,
_DemoRemaining GoodsIn Storage LocationsRemainingsAndTurnover.QuantityInitialRemaining,
_DemoRemaining GoodsIn Storage LocationsRemainingsAndTurnover.QuantityFinalRemaining,
_DemoRemaining GoodsIn Storage LocationsRemainingsAndTurnover.QuantityIncoming,
_DemoRemaining GoodsIn Storage PlacesRemainingsAndTurnover.QuantityConsumption,
_DemoRemaining GoodsIn Storage LocationsRemainingsAndTurnover.QuantityTurnover
ОТ
Текуща номенклатура КАТО текуща номенклатура
ЛЯВА ВРЪЗКА RegisterAccumulations._DemoRemaining GoodsInStorageLocations.RemainingsAndTurnover AS _DemoRemainingGoodsInStorageLocationsRemainingAndTurnover
Софтуер CurrentNomenclature.Nomenclature = _DemoRemaining Goods in Storage LocationsRemainingsAndTurnover.Nomenclature

В резултат на това отчетът съдържа следните полета (вижте Фигура 1):

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

  1. Настройка на заглавки на полета в раздела ACS "Набори от данни";
  2. Настройка на заглавки на полета в раздел "Настройки" на ACS;
  3. Програмна настройка на заглавки на полета;
  4. Задаване на заглавката на отчета с помощта на оформление;
  5. Финализиране на резултата (табличен документ);
Нека ги разгледаме подробно.

1. Настройка на заглавки в раздела ACS "Набори от данни".

Тук всичко е просто, поставете отметка в квадратчето до свойството на полето „Заглавие“ (т.е. отменете автоматичното заглавие) и въведете необходимия текст на заглавието (вижте Фигура 4).
Ако трябва да зададете дизайна за цялото поле, а не само за заглавието му, тогава има свойство на полето „Дизайн“, с което можете да зададете някакъв дизайн за полето, например да промените шрифта или да зададете фона цвят (вижте Фигура 5).
Тук свършват знанията ми за раздела „Набори от данни“.

2. Настройка на заглавки на полета в раздела "Настройки" на ACS

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

Тези действия могат да се извършват и в режим 1C:Enterprise, като отворите настройките на отчета, НО елементът „Избрани полета“ трябва да бъде включен в настройките на отчета (вижте Фигура 8).
Това завършва лесната част от настройката на заглавката на отчета. Едно от предимствата на горните действия: всички настройки се извършват с помощта на стандартни инструменти. От минусите: невъзможността да се зададе многоредово заглавие на полето.

3. Програмно задаване на заглавки на полета

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

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

// 1. Вземете потребителски настройки.
SettingsKD = ThisObject.SettingsLitter.GetSettings();

// 2. Получаваме стойността на параметъра "Период", от който определяме началната и крайната дата на периода.
ParameterPeriod = NewDataCompositionParameter("Период");
Период = SettingsCD.DataParameters.FindParameterValue(PeriodParameter).Value;
StartPeriod = Период.Начална дата;
EndPeriod = Period.EndDate;

// 3. Подгответе информация за предефиниране на заглавки на полета. За да направите това, нека създадем
// масив, който ще съдържа информация: FieldName - стойности на свойството "Path" в
// набор от данни (виж Фигура 1), Заглавие - текст на заглавието.
FieldList = Нов масив;
pagePeriodStart = Format(PeriodStart, "DF=dd.MM.yyyy; DP="Празна дата"");
FieldInitialRemaining = New Structure("FieldName, Heading", "QuantityInitialRemaining", "Remaining on " + Symbols.PS + pageBeginningPeriod);
List ofFields.Add(FieldInitialRemaining);
strEndPeriod = Format(EndPeriod, "DF=dd.MM.yyyy; DP="Празна дата"");
FieldFinalRemaining = New Structure("FieldName, Heading", "QuantityFinalRemaining", "Remaining on " + Symbols.PS + strEndPeriod);
FieldList.Add(FieldFinalRemaining);

// 4. Вземете списък с полета, които са в групата "Оставащи" (вижте Фигура 7) и
// задаване на ново заглавие чрез обхождане на елементите в цикъла.
SelectedFields = SettingsCD.Selection.Items; // Първо ниво на полета.
SelectedFieldsRemains = SelectedFields.Items; // Остава групиране на полета.
За всеки цикъл SelectedField From SelectedFieldsRemainders
За всеки елемент от масив от списък с полета
LayoutField = NewDataCompositionField(ArrayItem.FieldName);
Ако SelectedField.Field = LayoutField Тогава
SelectedField.Header = ArrayItem.Header;
endIf;
EndCycle;
EndCycle;

// 5. Заредете обратно променените потребителски настройки.
ThisObject.SettingsLinker.LoadSettings(CDSettings);

Докладвайте резултата (вижте Фигура 10):
Методът е по-труден от всички по-горе, но ми харесва.

4. Задаване на заглавката на отчета с помощта на оформление

За по-гъвкаво персонализиране на външния вид на отчета ACS осигурява създаване на оформления. В настройките на отчета ще създадем друго групиране „подробни записи“ и ще зададем името „DZ линия“ за това групиране (вижте Фигура 11).
В раздела "Оформления" добавете оформление на заглавката за групиране. За оформлението в документ с електронна таблица ще създадем заглавка на отчета (заглавката на отчета трябва да съдържа толкова заглавки на полета, колкото броя на полетата показва подробният запис) и ще посочим областта на документа с електронна таблица за оформлението (вижте Фигура 12).
В резултат на това отчетът има следната заглавка (вижте Фигура 13):

Фигура 13. Оформление на ACS като заглавка на отчета
Според мен оформленията имат един голям недостатък: невъзможността да се адаптират към дадена потребителска група, така че те трябва да се използват, ако формата за отчитане е регламентирана и не може да се променя. Опитайте се да зададете групиране за групирането "LineDZ" и ще видите, че оформлението е объркано.

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

5. Финализиране на резултата (табличен документ)

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

Да започваме. Деактивираме стандартното генериране, за да направим това в модула за отчет за събитието При представяне на резултатаНека зададем променливата StandardProcessing на False и напишем нашето собствено оформление на резултата:
StandardProcessing = False;
LayoutLinker = newDataLayoutLayoutLinker;
LayoutLayout = LayoutLocker.Execute(
ThisObject.DataCompositionSchema,
ThisObject.SettingsLinker.Settings,
DecryptionData);
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout, DecryptionData, True);
OutputProcessor = Нов OutputProcessorDataCompositionResultInTabularDocument;
OutputProcessor.SetDocument(DocumentResult);
OutputProcessor.Output(CompositionProcessor);
Софтуерното оформление на резултата от отчета е описано по-подробно в статията

Компилираният резултат се извежда в документ с електронна таблица - това е променливата DocumentResult. След това, след генериране на резултата и извеждането му в документ с електронна таблица, ние пишем код, за да заменим един текст в клетка с друг. Например, нека променим името на групата „Остатъци“ на „Оставащи елементи“ в заглавката на отчета (вижте Фигура 14):
Cell = DocumentResult.FindText("Остатъци");
Ако Cell<>Недефиниран Тогава
Cell.Text = "Оставащи елементи";
endIf;

Можете също да зададете форматиране за намерената клетка; вижте свойствата на клетката на документа с електронна таблица в асистента за синтаксис.

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

P.S. Може би имате друг начин да проектирате заглавки на полета?

Най-трудното нещо при използването на оформления е попълването на колоната „Оформление“ в раздела „Оформления“ в дизайнера на ACS.

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

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

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

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


Оформление на заглавката на групирането

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

Настройки

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

Настройки

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

Настройки

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

Също така забележително е използването на типа оформление на Footer, например за показване на подписващи се.

Настройки

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


Групово оформление

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

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

Настройки

Ако приложим тази схема за групиране на по-ниско ниво, получаваме това:

Или, ако попълните колоните, ще изглежда така

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

Настройки

Оформление на ресурса

Оформлението се използва само за TABLE. Прилага се в пресечната точка на групи, посочени в настройките

Настройки


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

  1. В много случаи при използване на оформления се губи възможността на потребителя да персонализира отчета. Той няма да може да промени реда на ресурсите и групировките или да деактивира ресурсите и групировките, защото в този случай докладът придобива неразбираема форма. Този недостатък не се отнася само за оформлението на полето.
  2. Няма начин да проектирате САМО заглавието на желания ресурс (или група ресурси) с помощта на оформлението. Например, ако трябва да центрирате заглавията на ресурсите. Ще трябва да попълните изцяло заглавката на цялата таблица и да получите ограничението от стъпка 1
  3. Не е възможно да се проектира САМО заглавката на резултатите. Например, няколко пъти беше необходимо да се замени думата „Общо“ с думата „Общо“. В този случай ще трябва да начертаете целия ред с общи суми и да получите ограничението от стъпка 1 или да измислите нещо друго.

файлове

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


IN

Създаваме отчет в системата за контрол на достъп.

Съставът на полетата например е следният:

В редовете на отчета има групиране „Контрагент“, в колоните – групиране „Проект“. Отчетните данни включват ресурса "Взаимни разплащания".

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

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

Вариантите са няколко.

Опция 1.

Чрез персонализиране на оформлението.

Отворете съответния раздел в дизайнера на системата за композиране на данни. Изберете „Добавяне на оформление за групиране“. Във формуляра „Оформление на групиране“ добавете полето „Проект“. Тип оформление - "Header".

Ние определяме района. Например клетка R1C1. За клетката задайте свойството запълване на „Опция“. Нека назовем параметъра, например, "Проект".

Задайте израза за параметъра: View(Project). Това означава представяне на полето "Проект".

Резултатът трябва да е нещо подобно:

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

Вариант 2.

1. В избраните полета на цялата справка оставете само ресурса
2. В избраните полета за групиране на колони премахнете автоматичното поле и добавете поле за тази колона (например, ако колоните са групирани по период, изберете периода тук)
3. В раздела „Други настройки“ на корена на отчета изберете „локация на ресурса“ - „вертикално“.

Тази опция не изисква оформление.

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

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

Текстът на заявката в отчета беше следният:

Избери предмет. Име, номенклатура. Код, номенклатура. Основна мерна единица, номенклатура. Мерна единица Място, номенклатура. Единица за съхранение на остатъци, номенклатура. UnitForReports, Номенклатура. Коментар, Номенклатура. Статия, Номенклатура. Връзка КАК Номенклатура ОТ Справочник. Номенклатура КАТО номенклатура КЪДЕ НЕ номенклатура. Тази група

Точка 1. Произволен отчет и заглавия на колони.


По подразбиране ACS има способността да показва произволен текст на заглавието. Това става в настройките на ACS:

на изхода получаваме:

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

Посочете име за подробни записи:


Начертах оформлението, от което се нуждаех, в SKD

Там, в раздела „Оформление“, очертах границите на оформлението на заглавката на групата:

и посочи името на групата:

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

Ако генерирате отчет, тогава:

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

и изходът е желаният тип отчет:

Точка 2. Безплатно декодиране на отчетни полета.

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

В отчета по-горе, ако щракнете двукратно върху което и да е поле, няма да можете да отворите картата на артикула:

Например, ако щракнете върху полето „Статия“, получаваме следното:

Решението е:

Добавяне на оформление на полето:

посочете полето (Артикул), при щракване трябва да се отвори картата на артикула:

в оформлението попълнете всяко празно поле с текста „Артикул“, в свойствата посочете - Попълване = „Параметър“, Параметър за декриптиране = „Декодиране на номенклатура“:

и посочете това оформление на областта на полето:

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

В тези параметри посочваме израза за „Декодиране на номенклатура“, в моя случай това е връзка към номенклатурата:


Получаваме възможност да отворим продуктовата карта, като щракнете върху полето „Статия“:

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

Докладът се основава на реални събития; външният вид, текстът на заявката и имената на колоните са променени в полза на статията.

Днес ще разгледаме решаването на един интересен проблем - показване на изображения в отчет.

За какво може да бъде полезно това?

Тук няколко примера:

  • Ценова листа със снимки на продукти и лого в заглавката
  • Профили на служители със снимки
  • Съгласуване на изчисленията с печат и подпис в сутерена
  • Справки/разпечатани формуляри със сканиран печат

Във видеото също обсъждаме програмно формиранедокладвайте на SKD. Използва се този метод за генериране на отчети в стандартни конфигурации– това е още една причина да го гледате внимателно :)

Предварително дефинирани оформления в ACS

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

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

  • Съхраняване на двоични данни в конфигурация на модел
  • Възможност за използване на ACS оформления за показване на изображения

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

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

При програмно генериране на отчет е възможен достъп до двоични данни.

По време на този урок ще направим:

  • Извеждане на резултата от оформлението в документ с електронна таблица
  • Използване на обекта Decryption Data
  • Извличане на двоични данни от базата данни
  • Програмно създаване на чертежи в документ с електронна таблица

Показване на картина в отчета на ACS

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

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

Гъвкавостта на алгоритъма за извеждане на изображението

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

Всъщност това е, което ще докажем в този урок.

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

Показване на изображение в заглавката на отчета

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

Изглежда проста задача, но в случай на ACS трябва да знаете как да я разрешите:

  • Стъпка 1. Програмно генериране на отчет
  • Стъпка 2. Създайте отделно оформление с желания горен или долен колонтитул
  • Стъпка 3. Преди да попълните отчета за ACS, покажете раздел с необходимите данни.

Това видео ясно показва решението на проблема.

Приятно гледане! :)

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

Какво ще стане, ако програмистът / внедрителят на 1C не познава системата за контрол на достъпа? Може би наистина не е толкова важно?

Добре, нека да видим какво очаква специалист, който пише доклади „на коляно“ (например, използвайки ръчен изход в документ с електронна таблица).

Не стреляйте по пианиста, той свири както може.

Докладите са практически във всички стандартни конфигурациина база SKD.

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

SKD – стандарт за отчитанев стандартни конфигурации и 1C не пише коментари въз основа на тези, които все още не са проучили стандартите :)

Проклетото време...

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

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

Като резултат - големи разходи за труд за разработване на отчети и отстраняване на грешки. И това най-малкото ще разтревожи всеки мениджър/клиент: „странно, но той наистина ли разбира това??“

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

Развойни пътувания до клиенти за промяна на групирането в отчета

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

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

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

Затова - звънни, трамвай, да тръгваме... Това е толкова професионално израстване за 1C псевдоним...

„Нямате ли същата, но със седефени копчета? „За съжаление, не…“ (c)

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

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

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

Ако искаш владеете ACS професионалнои ежедневно прилагайте в работата си, запишете се за курса:

Поддържа - 2 месеца. Обхват на курса – 34 учебни часа.

Не отлагайте обучението си!


Близо