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

Нека създадем външен отчет, който ще показва отчетна информация за балансите на артикулите и техния оборот. Необходимата информация се изисква от заявката с помощта на набор от данни от типа "Заявка", който съдържа текста на заявката:
ИЗБЕРЕТЕ
_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 = Нова структура("FieldName, Heading", "QuantityFinalRemaining", "Remaining on " + Symbols.PS + strEndPeriod);
FieldList.Add(FieldFinalRemaining);

// 4. Вземете списък с полета, които са в групата "Оставащи" (вижте Фигура 7) и
// задаване на ново заглавие чрез обхождане на елементите в цикъл.
SelectedFields = SettingsCD.Selection.Items; // Първо ниво на полета.
SelectedFieldsRemains = SelectedFields.Items; // Остава групиране на полета.
За всяко SelectedField от SelectedFields Remaining Cycle
За всеки елемент от масив от списък с полета
LayoutField = NewDataCompositionField(ArrayItem.FieldName);
Ако SelectedField.Field = LayoutField Тогава
SelectedField.Header = ArrayElement.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. Може би имате друг начин да проектирате заглавки на полета?

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

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

Има два начина за извеждане на ACS параметри в обикновена форма:

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

Таблицата с настройки на параметри, показана във формуляра, е подобна на таблицата с настройки на параметри, генерирана от инструментите на ACS. За да го изведете във формата, трябва да създадете контролен елемент TableField, която притежава имота даннипосочвам Настройки Composer.Settings.DataOptions

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

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

  1. Нека създадем подробности за отчета, съответстващи на параметрите. В нашия пример това ще бъдат детайлите Начална дата, крайна дата, организация. Нека зададем подходящите типове данни за тях.
  2. Нека създадем полета за въвеждане във формата за всеки от параметрите и да ги свържем чрез свойството даннис подробности за отчета. За всяко поле за въвеждане би било хубаво да създадете етикет до него с името на параметъра, така че потребителят да разбере кой параметър редактира.
  3. За всяко поле за въвеждане трябва да създадете процедура за манипулатора на събития WhenChange, което ще зададе избраната от потребителя стойност на параметрите на ACS. В примера създадох една процедура и я зададох да променя събитията и на трите полета за въвеждане. Тоест, когато се промени един параметър, и трите се нулират. От гледна точка на ефективността това най-вероятно не е ефективно, но... Няма много параметри, разликата не се забелязва. Ако има голям брой параметри, струва си да зададете всеки от тях в отделна процедура. И така, кодът на процедурата за манипулатора WhenChangeще изглежда така:

    Процедура ParametersOnChange(Element)

    ParameterStartDate = SettingsLinker. Настройки. Параметри на данните. Елементи. Find("Начало на период"); //Търсенето се извършва по името на ACS параметъра
    ПараметърНачална дата Използване = Вярно; //Параметърът ще се използва по време на избора
    ПараметърНачална дата Стойност = начална дата; //На параметъра се присвоява стойността на атрибута на отчета

    ParameterDataCon = LinkerSettings. Настройки. Параметри на данните. Елементи. Find("EndPeriod");
    ParameterDateCon. Използване = Вярно;
    ParameterDateCon. Стойност = EndDay(EndDate) ;

    ParameterOrg = BuilderSettings. Настройки. Параметри на данните. Елементи. Намери ("Организация");
    ParameterOrg. Използване = Вярно;
    ParameterOrg. Стойност = Организация;

    Край на процедурата

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

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

тук някои примери:

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

Във видеото също обсъждаме програмно формиранедокладвайте на 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 учебни часа.

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

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

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

Собственост „Име на принтер“ Позволява ви да посочите принтер, различен от този по подразбиране за печат. Името трябва да съответства на името на принтера, зададено в системата:

TabDoc.PrinterName="Canon iR1133";

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

TabDoc.ParsingByCopies=Вярно;

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

TabDoc.Брой инстанции=5;

Разбира се, можете да зададете полетата:

TabDoc.MarginLeft=20; //Ляво поле 20 мм, други полета 10 мм (по подразбиране)

Още няколко свойства на страницата:

TabDoc.PageOrientation=PageOrientation.Landscape; TabDoc.InstancesOnPage=2; //листът ще съдържа 2 страници TabDoc.Autoscale=true; //подобно на настройките на мащаба „ширина на страницата“.

Ако е необходимо, можете да посочите конкретна стойност на мащабиране в проценти (свойство "Мащаб за печат" ).

Собственост „Размер на страницата“ ви позволява да зададете стандартни формати на страници - "A3", "A4", "A5" (пълният списък с опции е наличен в помощта на 1C).

TabDoc.PageSize="A3"; // буквата A трябва да е на английски

За нестандартен размер хартия (Custom), можете да посочите височината и ширината на страницата (в mm):

TabDoc.PageSize="По избор";//нестандартен размер TabDoc.PageHeight=350; TabDoc.PageWidth=350;

Също така в документ с електронна таблица можете да контролирате изхода на горните и долните колонтитули и тяхното съдържание. Това се прави с помощта на свойства "Заглавка" И "Долен колонтитул". Например:

TabDoc.Header.Output=true; //заглавката на TabDoc ще бъде отпечатана.HeaderSizeTop=7; //размер на долния колонтитул 7 мм (по подразбиране 10 мм) TabDoc.Header.VerticalPosition=VerticalPosition.Top; TabDoc.Header.StartPage=2;//заглавката се извлича от втората страницаHeaderFont=NewFont("Courier New", 8,True); TabDoc.Header.Font=Шрифт на заглавката; //наклонен шрифт TabDoc.Header.TextInCenter="Header"; TabDoc.Header.TextRight="Страница[&PageNumber] от [&PagesTotal]"; //номериране на страници TabDoc.Header.TextLeft="[&Date]";//текуща дата

Генерираният документ се изпраща за печат по метода "Тип()". Има две възможни опции за обаждане.

1) Директно към принтера:

TabDoc.Print(PrintDialogUseMode.NotUse); TabDoc.Print(true);

2) Преди печат ще се покаже диалогов прозорец за печат:

TabDoc.Print(PrintDialogUseMode.Use); TabDoc.Print(false);

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

TabDoc.Брой страници();

Използване на методи "CheckOutput()" И "CheckAttach()" Можете да определите дали документ с електронна таблица или масив от области на документ с електронна таблица ще се поберат на страницата по височина и ширина при текущите настройки на принтера.

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

Можете да принудите вмъкването на прекъсвания на страници, като използвате следните методи: "OutputVerticalPageSeparator()" И "OutputHorizontalPageSeparator()" .

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

Ако не TabDoc.CheckOutput(ArrayOutputAreas) Тогава TabDoc.OutputHorizontalPageSeparator(); EndIf

Важна характеристика на платформата 1C:Enterprise 8.2 е стриктното разделяне на свойствата и методите по контекст на изпълнение. Докато всички горни свойства са налични във всеки контекст, изброените методи не са налични на тънкия клиент. Изключение прави методът “Print()”, чиято наличност е ограничена до клиентската част по очевидни причини. Това означава, че създаването на документ с електронна таблица трябва да се извърши на сървъра и той трябва да бъде изпратен за печат в клиентска процедура.



 


Прочетете:



Справочник диоди Мощни изправителни диоди 220V

Справочник диоди Мощни изправителни диоди 220V

Основната цел на токоизправителните диоди е преобразуване на напрежението. Но това не е единствената област на приложение на тези полупроводникови...

Как да нулирате паролата на администратора на Mac OS X без инсталационен диск

Как да нулирате паролата на администратора на Mac OS X без инсталационен диск

Въпреки двусмисленото заглавие, статията няма да е за хакване на акаунти в Mac OS X (може да прочетете за това, ако желаете...

Настройване на Shadow Defender

Настройване на Shadow Defender

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

Защо процесорът на моя компютър се нагрява много?

Защо процесорът на моя компютър се нагрява много?

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

feed-image RSS