Контакти

Особливості створення звітів (1Cv8). Поетапне створення звіту

Щоб уникнути коментарів типу "теж мені відкриття!", обмовлюся відразу: стаття розрахована на недосвідчених СКД-розробників, тим хто це і так знає не обов'язково висловлювати своє "фі!", зрозумійте, що очевидно для вас - не завжди буває очевидно іншим .

Для наочного уявлення реалізації частини трюків зробив невеликі заготовки як зовнішніх схем СКД. Опис трюків та скріншоти постарався робити так, щоб суть та техніка реалізації трюку були зрозумілі без необхідності завантаження схем. Для когось цього буде цілком достатньо, але якщо щось незрозуміло, завжди можна завантажити відповідну схему і подивитися безпосередньо реалізацію.

Трюк №1. Багатогранність правого значення.

Отже, для розігріву почнемо з чогось простіше. У таких механізмах СКД, як "Відбір" або "Умовне форматування", ви напевно стикалися з колонками "Поле" (або "Ліве значення") та "Значення" (або "Праве значення"). Професіонали, напевно, знають цей трюк, але початківцям не завжди легко здогадатися, що поле компонування даних можна використовувати як ліворуч, так і праворуч (тобто порівнювати не тільки задані фіксовані значення, але й інші поля СКД в межах одного рядка). Для цього достатньо в поле правого значення зайти в режим редагування, натиснути кнопку очищення значення ("кретик"), потім натиснути кнопку вибору типу (літера "Т"), що з'явилася, і вибрати тип "Поле компонування даних".

приклад.
Як приклад я не став винаходити велосипед, а взяв звичайнісіньку оборотно-сальдову відомість за рахунком 60 з демо-версії 1С:Бухгалтерії (я використовую ред. 2.0.). Хто не знає, починаючи з редакції 2.0 цей звіт зроблено на базі СКД.

Отже, поставимо прямо в ній відбір для рядків з умовою "БУ Дт (оборот)". "Більше "БУ Кт (оборот)". Якщо хтось не знає, як увімкнути панель "Оформлення" - знайдіть кнопку "Параметри панелі налаштувань" праворуч від напису "Панель налаштувань".

Кінцевий результат повинен вийти приблизно таким:

Трюк №2. Відбір угруповань.

Всі знають, що таке Відбір у СКД, але не всі знають, що його можна застосовувати не тільки для звіту в цілому, а й на окремих угрупованнях рядків та колонок. Прикладних завдань для такого засобу багато. Наприклад, умовна деталізація (обмеження для яких угруповань верхнього рівня виводити деталізацію, а для яких немає), або варіативна деталізація (для різних значень угруповань верхнього рівня виводити різні розшифрування). На одному з проектів УПП, наприклад, довелося робити форму калькуляції собівартості з фіксованою структурою (окремий довідник) і для різних статей калькуляції виводити розшифрування або за статтями витрат, або за конкретними витратами або нічого не виводити. Завдяки цьому трюку не довелося відмовлятися від СКД під час розробки звіту.

приклад.
Мета прикладу: відобразити ОСО, в якій для взаєморозрахункових рахунків (60,62,76) показати розшифровку за контрагентами, а для витратних (20,23,25,26) - за статтями витрат.

Сама СКД реалізована у вигляді набору даних, де використовується запит до віртуальної таблиці залишків та оборотів регістру бухгалтерії "Госпрозрахунковий".
Розміщуємо вкладені угруповання "Організація" та "Рахунок". У угрупованні "Рахунок" паралельно розміщуємо 2 угруповання "Субконто1" та "Субконто2", для яких задаємо відповідні відбори.
Ілюстрацію налаштування наводжу у скріншоті:


Якщо в основних настройках звіту на закладці "Інші налаштування" ви не відключали виведення відборів, то це обов'язково потрібно буде зробити в "інших налаштуваннях" наших угруповань "Субконто1" та "Субконто2"

Трюк №3. Шапка неведимка

Наступний трюк можна уявити, як продовження попереднього. Якщо ви звернули увагу, у звіті, що вийшов, незважаючи на те, що фактично у нас виводиться тільки одне субконто, в шапку потрапляють обидва (і "Субконто1" і "Субконто2"). На жаль розробники СКД не передбачили можливість регулювання видимістю шапки або використання якогось службового символу, при встановленні якого як заголовок, шапка поля б не формувалася. Але, як ви вже, напевно, здогадалися, є трюк, який певною мірою допоможе обійти дане обмеження.

При розробці схеми у визначеному макеті оформлення додайте макет угруповання з визначенням по імені угруповання "Невидимка" так, як показано на скріншоті. Зверніть увагу, що поле "Область" має залишитися порожнім!

А потім задайте для угруповання "Субконто2" ім'я "Невидимка":

І вуаля... шапка угруповання "Субконто2" зникає, а звіт стає таким:

Запитайте, чому макет оформлення задається через ім'я, а чи не через зазначення конкретного поля угруповання? Просто так виходить універсальне рішення і згодом це ім'я угруповання можна задати у варіантах звіту на будь-якому угрупованні, а ось змінювати певний макет у варіантах вже не вийде.

Так, є ще один нюанс цього трюку: враховуйте, що "шапка-невидимка" накриває не тільки це угруповання, але і всі нижчестоящі! Тобто. якщо ви призначите ім'я "Невидимка" угрупованню "Субконто1", то в шапці не буде видно ні "Субконто1", ні "Субконто2"!

Трюк №4. Називай мене як хочеш

Більшість розробників СКД знають, як можна задати заголовок поля запиту. На закладці СКД "Набори даних" достатньо поставити галочку скасування автозаголовка і внести в поле "Заголовок" необхідний текст. Мінус полягає в тому, що в режимі користувача, цей спосіб недоступний, а перейменувати заголовок хочеться не вдаючись до допомоги конфігуратора. Так ось у налаштуваннях варіантів звіту є не тільки спосіб перейменувати заголовки полів, а й "накрити" їх групувальною "шапкою". Для цього на закладці "Вибрані поля" необхідно виділити потрібні поля та натиснути праву кнопку миші. Як видно на скріншоті для полів доступні опції "Встановити заголовок" та "Згрупувати поля".
Зверніть увагу, що для полів угруповань установку заголовка необхідно робити також саме через закладку "Вибрані поля", а не через контекстне меню "Встановити ім'я" у верхній (структурній) частині налаштування варіанта!



Після всіх налаштувань варіант звіту виглядає так:



P.S.
Невелика підказка для тих, хто качатиме схему. Схема – одна, але всі трюки виконані у вигляді окремих варіантів налаштувань звіту цієї схеми:

Далі буде...

При створенні звітів за допомогою системи компонування даних (СКД) зручно виводити параметри звіту (хоч би найчастіше використовуються) на форму, щоб не змушувати користувача копатися у стандартному вікні налаштувань СКД.

Розглянемо як це можна зробити на звичайних формах 1С. Відразу обмовимося, що у цій статті розглядатиметься саме виведення параметрів форму, тобто. самі параметри в СКД вже мають бути створені.

Існує два способи виведення параметрів СКД на звичайну форму:

  • виведення таблиці налаштувань параметрів повністю
  • виведення окремих параметрів як полів вводу.

Таблиця налаштування параметрів, що виводиться на форму, аналогічна таблиці налаштування параметрів, що генерується засобами СКД. Для її виведення на форму необхідно створити елемент управління ТабличнеПоле, у якого властиво Данівказати КомпонувальникНалаштувань.Налаштування.ПараметриДаних

При цьому користувачу будуть показані всі параметри СКД, які не мають обмеження доступності.

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

  1. Створимо реквізити звіту, які відповідають параметрам. У нашому прикладі це будуть реквізити ДатаПочатку, ДатаЗакінчення, Організація. Встановимо у них відповідні типи даних.
  2. Створимо на формі поля введення для кожного з параметрів та зв'яжемо їх через властивість Даніз реквізитами звіту. Для кожного поля введення добре б поруч створити напис з назвою параметра, щоб користувач розумів, який параметр він редагує.
  3. Для кожного поля введення потрібно створити процедуру для обробника подій При зміні, яка встановлюватиме обране користувачем значення параметри СКД. Я в прикладі створив одну процедуру і призначив її на зміни всіх трьох полів введення. Тобто за зміни одного параметра відбувається переустановка всіх трьох. З погляду швидкодії це, швидше за все, не ефективно, проте, т.к. параметрів небагато, різниця не помітна. При велику кількість параметрів варто виводити установку кожного в окрему процедуру. Отже, код процедури для оброблювача При змінібуде виглядати так:

    Процедура ПараметриПриЗміні(Елемент)

    ПараметрДатаНач = КомпонувальникНалаштувань. Налаштування. Параметри даних. Елементи. Знайти("ПочатокПеріоду"); //Пошук проводиться на ім'я параметра СКД
    ПараметрДатаПоч. Використання = Істина; //Параметр буде використовуватися для відбору
    ПараметрДатаПоч. Значення = ДатаПочатку; //Параметру надається значення реквізиту звіту

    ПараметрДатаКон = КомпонувальникНалаштувань. Налаштування. Параметри даних. Елементи. Знайти("КінецьПеріоду");
    ПараметрДатаКон. Використання = Істина;
    ПараметрДатаКон. Значення = КінецьДня(ДатаЗакінчення);

    ПараметрОрг = КомпонувальникНалаштувань. Налаштування. Параметри даних. Елементи. Знайти ( "Організація");
    ПараметрОрг. Використання = Істина;
    ПараметрОрг. Значення = Організація;

    КінецьПроцедури

Майже всі параметри, доступні в діалогах налаштування друку (налаштування принтера, властивості сторінки) можна вказати безпосередньо при формуванні табличного документа.

Розглянемо властивості та методи табличного документа, що стосуються параметрів друку (у наведених прикладах «ТабДок» це об'єкт типу «Таблічний документ»).

Властивість «Ім'яПринтера» дає змогу вказати для друку принтер, який відрізняється від встановленого за замовчуванням. Ім'я повинне збігатися з ім'ям принтера, заданим у системі:

ТабДок.Ім'яПрінтера="Canon iR1133";

Під час друку пакета документів можна заощадити час, встановивши ознаку аналізу копій:

ТабДок.РазборПоКопіям=Істина;

Число копій можна вказати так:

ТабДок.Кількість Примірників = 5;

Зрозуміло, можна задати поля:

ТабДок.ПолеСлева=20;//Поле зліва 20мм, інші поля 10мм (за замовчуванням)

Ще кілька властивостей сторінки:

ТабДок.ОрієнтаціяСторінки=ОрієнтаціяСторінки.Ландшафт; Примірників = 2; //на аркуші буде розміщено 2 сторінки ТабДок.Автомасштаб=істіна; //аналогічно до налаштувань масштабу «по ширині сторінки»

За потреби можна вказати конкретне значення масштабування у відсотках (властивість «МасштабДруку» ).

Властивість «РозмірСторінки» дозволяє встановити стандартні формати сторінки – “A3”, “A4”, “A5” (повний список варіантів доступний у довідці 1С).

ТабДок.РазмерСторінки="A3";// літера А повинна бути англійською

Для нестандартного розміру паперу (Custom) можна вказати значення висоти та ширини сторінки (мм):

ТабДок.РазмерСторінки="Custom";// нестандартний розмір ТабДок.ВисотаСторінки=350; ТабДок.ШірінаСторінки = 350;

Також у табличному документі доступне керування виведенням колонтитулів та їх вмістом. Для цього служать властивості "Верхній колонтитул" і "Нижній колонтитул". Наприклад:

ТабДок.ВерхнійКолонтитул.Виводити=істина; //буде надрукований верхній колонтитул ТабДок.РозмірКолонтітулаЗверху=7; //Розмір колонтитула 7мм (за замовчуванням 10мм) ТабДок.ВерхнійКолонтитул.ВертикальнеПоложення=ВертикальнеПоложення.Верх; ТабДок.ВерхнийКолонтитул.ПочатковаСторінка=2;//колонтитул виводиться з другої сторінки ШрифтКолонтитулу=Новий Шрифт("Courier New", 8,Істина); ТабДок.ВерхнійКолонтитул.Шрифт=ШрифтКолонтитулу; //похилий шрифт ТабДок.ВерхнійКолонтитул.ТекстВЦентрі="Верхній колонтитул"; ТабДок.ВерхнийКолонтитул.ТекстСправа="Стор.[&НомерСторінки] з [&СторінокВсього]"; //нумерація сторінок ТабДок.ВерхнійКолонтитул.ТекстЗліва="[&Дата]";//поточна дата

Сформований документ надсилається на друк за допомогою методу "Надрукувати()". Можливо два варіанти дзвінка.

1) Безпосередньо на принтер:

ТабДок.Напечатать(РежимВикористанняДіалогаДруку.НеВикористовувати); ТабДок.Надрукувати(істина);

2) Перед друком буде виведено діалог друку:

ТабДок.Напечатать(РежимВикористанняДіалогаДруку.Використати); ТабДок.Надрукувати (брехня);

Крім того, можна керувати і розбиттям документа на сторінки. Оцінити кількість сторінок у документі з налаштування поточного принтера можна так:

ТабДок.КількістьСторінок();

За допомогою методів «Перевірити Висновок()» і «ПеревіритиПриєднання()» можна визначити, чи вміщується табличний документ або масив областей табличного документа на сторінці у висоту та ширину при поточних налаштуваннях принтера.

Потрібно мати на увазі, що робота останніх трьох методів залежить від встановленого принтера. Якщо методу не вдається знайти, викликається виняток.

Примусово вставити розриви сторінок дозволяють методи «ВивестиВертикальнийРозділювачСторінок()» і «ВивестиГоризонтальнийРозділювачСторінок()» .

Таким чином, можна керувати посторінковим висновком на друк та контролювати заповнення сторінки:

Якщо не ТабДок.ПеревіритиВивод(МасивВиводних Областей) Тоді ТабДок.ВивестиГоризонтальнийРозділювачСторінок(); КінецьЯкщо

Важливою характеристикою платформи «1С:Підприємство 8.2» є суворий поділ властивостей та методів за контекстом виконання. Якщо всі наведені вище властивості доступні у будь-якому контексті, перераховані методи недоступні на тонкому клієнті. Винятком є ​​метод «Надрукувати()», доступність якого через зрозумілі причини обмежена клієнтською частиною. Це означає, що формування табличного документа має відбуватися на сервері, а відправляти його на друк слід у клієнтській процедурі.

Сьогодні ми розглянемо вирішення цікавого завдання виведення картинок у звіт.

Навіщо це може бути корисно?

Ось кілька прикладів:

  • Прайс-лист з картинками товарів та логотипом у шапці
  • Анкети співробітників із фотографіями
  • Звіряє розрахунки з печаткою та підписом у підвалі
  • Звіти/друковані форми зі сканом друку

У відео ми також розуміємо програмне формуваннязвіту на СКД. Такий спосіб формування звітів використовується у типових конфігураціях– це ще одна причина подивитися його уважно:)

Зумовлені макети у СКД

За допомогою визначених макетів можна перевизначати стандартне оформлення звіту.

У цьому уроці, крім постановки завдання, розглянемо:

  • Зберігання бінарних даних у модельній конфігурації
  • Можливість використання макетів СКД для виведення зображень

Програмне формування звіту на СКД

Щоб вирішити задачу виведення зображень у звіт на СКД, необхідно сформувати його програмно.

Саме при програмному формуванні звіту можна звернутися до бінарних даних.

У ході цього уроку виконаємо:

  • Виведення результату компонування у табличний документ
  • Використання об'єкту ДаніРозшифровки
  • Отримання бінарних даних із бази
  • Програмне створення малюнків у табличному документі

Відображення зображення у звіті СКД

У цьому уроці виконуємо фінальні дії: отримані раніше бінарні дані виводимо до звіту.

Для цього малюнок додається до табличного документа, після чого він виводиться до звіту.

Універсальність алгоритму виведення картинок

Розроблений алгоритм виведення зображень є універсальним – за будь-якої зміни структури звіту алгоритм продовжує працювати.

Власне, це ми й доведемо у цьому уроці.

Крім цього, розглянемо особливість фонового формування звіту на СКД (побудова звіту за допомогою регламентних завдань).

Виведення зображення у шапці звіту

Часто у шапці чи підвалі звіту потрібно вивести статичну картинку.

Здавалося б, просте завдання, але у випадку зі СКД потрібно знати, як його вирішити:

  • Крок 1. Програмно формуємо звіт
  • Крок 2. Створюємо окремий макет із потрібною шапкою чи підвалом
  • Крок 3. Перед заповненням звіту СКД виводимо секцію з потрібними даними.

У цьому відео показано рішення завдання.

Приємного перегляду! :)

Останні кілька днів ми публікуємо матеріали зі СКД.

А що якщо програміст/впровадження 1С не знає СКД? Може це реально не так важливо?

Ok, розгляньмо, що чекатиме фахівця, який пише звіти «на коліні» (наприклад, за допомогою ручного виведення в табличний документ).

Не стріляйте у піаніста, він грає, як уміє.

Звіти практично у всіх типових конфігураціяхбазується на СКД.

Для фахівця без знань СКД доопрацювання типових звітів стає лотереєю – чому та як у звіті виводиться та чи інша цифра, як додати нові джерела, де в коді правити розрахункові цифри…

СКД – стандарт звітіву типових конфігураціях, і 1С не пише коментарі для тих, хто стандарти ще так і не вивчив:)

Купа часу до біса.

Без СКД розробка звітів виконується багато в чому вручну.

Це, звичайно, круто – вийти як рембо з викруткою в зубах і типу зробити всіх:)

В результаті - великі трудові витрати на розробку звіту та його налагодження. І будь-якого керівника/замовника це буде як мінімум насторожувати: "дивно, а він точно в цьому розуміється??"

А якщо йдеться про подальше доопрацювання звіту, це часто стає головним болем (особливо, якщо це чужий звіт)…

Розвиваючі поїздки до клієнтів, щоб змінити угруповання у звіті

СКД дозволяє отримувати якісні звітибез програмування. Костяк робиться за декілька хвилин, далі – бантики.

А користувачі можуть доналаштовувати такі звіти без залучення програміста, формувати кілька варіантів уявлення – діаграми, графіки, списки, таблиці.

Досягти такої універсальності у звітах, побудованих програмно, неможливо в розумні терміни.

Тому – дзвінок, трамвай, поїхали… Це таке професійне зростання для 1С-ника…

“У вас немає такого ж, але з перламутровими гудзиками? – На жаль – ні…” (с)

А якщо якісь дані потрібно отримати з іншої системи – з іншої бази 1С чи взагалі не з 1С?

За допомогою СКД можна створити звіт, який працює і з даними поточної ІБ та отримує дані з іншого джерела – програмування для цього не потрібно.

Без СКД зовнішні дані виходитимуть програмно і найтривіальнішим способом.

Якщо ви хочете професійно освоїти СКДта щодня застосовувати у своїй роботі, записуйтесь на курс:

Підтримка – 2 місяці. Обсяг курсу – 34 навчальні години.

Чи не відкладайте своє навчання!

Створимо зовнішній звіт, який виводитиме звітну інформацію про залишки номенклатури та її оборот. Необхідна інформація запитується за допомогою набору даних типу "Запит", який містить текст запиту:
ВИБРАТИ
_ДемоНоменклатура.Посилання ЯК Номенклатура
ПОМІСТИТИ АктуальнаНоменклатура
З
Довідник._ДемоНоменклатура ЯК _ДемоНоменклатура
ДЕ
НЕ _ДемоНоменклатура.ПоміткаВидалення
І НЕ _ДемоНоменклатура.ЦеГрупа
;

////////////////////////////////////////////////////////////////////////////////
ВИБРАТИ
Актуальна Номенклатура.
_ДемоЗалишкиТоварівВМісцяхЗберіганняЗалишкиІОбороти.МісцеЗберігання,
_ДемоЗалишкиТоварівВМісцяхЗберіганняЗалишкиІОбороти.КількістьПочатковийЗалишок,
_ДемоЗалишкиТоварівВМісцяхЗберіганняЗалишкиІОбороти.КількістьКінцевийЗалишок,
_ДемоЗалишкиТоварівВМісцяхЗберіганняЗалишкиІОбороти.КількістьПрихід,
_ДемоЗалишкиТоварівВМісцяхЗберіганняЗалишкиІОбороти.КількістьВитрата,
_ДемоЗалишкиТоварівВМісцяхЗберіганняЗалишкиІОбороти.КількістьОборот
З
Актуальна номенклатура ЯК Актуальна номенклатура
ЛІВОЕ З'ЄДНАННЯ РегістрНакопичення._ДемоЗалишкиТоварівВМісцяхЗберігання.
ПО АктуальнаНоменклатура.Номенклатура = _ДемоЗалишкиТоварівВМісцяхЗберіганняЗалишкиІОбороти.Номенклатура

У результаті звіт містить такі поля (див. рисунок 1):

Оскільки інформація береться з віртуальної таблиці "ЗалишкиІОбороти", то СКД автоматично створює два параметри даних ПочатокПеріоду та КінецьПеріоду, які необхідні завдання межі періоду вибірки даних. Я віддаю перевагу таким параметрам не працювати безпосередньо, а задавати їх значення через інший параметр, який буде доступний користувачеві для редагування (див. малюнок 2).
Звіт зі своїм завданням справляється, але шапка звіту досить суха. За час роботи я знайшов кілька способів оформлення шапки звіту:

  1. Налаштування заголовків полів на вкладці СКД "Набори даних";
  2. Налаштування заголовків полів на вкладці СКД "Налаштування";
  3. Програмне встановлення заголовків полів;
  4. Завдання шапки звіту за допомогою макету;
  5. Доопрацювання результату (табличного документа);
Розглянемо їх докладно.

1. Налаштування заголовків на вкладці СКД "Набори даних"

Тут все просто, ставимо галочку навпроти властивості поля "Заголовок" (тобто скасовуємо автозаголовок) і вводимо необхідний текст заголовка (див. рисунок 4).
Якщо потрібно задати оформлення для всього поля, а не тільки для його заголовка, то існує властивість поля "Оформлення", за допомогою якого можна встановити певне оформлення поля, наприклад, змінити шрифт або задати колір фону (див. малюнок 5).
На цьому мої знання про вкладку "Набори даних" закінчуються.

2. Налаштування заголовків полів на вкладці СКД "Налаштування"

Для завдання заголовка поля необхідно виділити потрібне поле, правою кнопкою миші викликати контекстне меню і вибрати пункт "Встановити заголовок" (див. малюнок 6)
Щоб згрупувати поля (наприклад, за типом інформації), потрібно додати групувальне поле і помістити в нього необхідні поля (див. малюнок 7), вкладеність необмежена.
Також можна погратися з властивістю групувального поля "Розташування", від якого залежить вид групування полів.

Дані дії можна робити і в режимі 1С:Підприємства, відкривши налаштування звіту, АЛЕ, до складу налаштувань звіту повинен бути включений пункт "Вибрані поля" (див. рис. 8).
На цьому легка частина налаштування шапки звіту закінчена. З плюсів вище наведених дій: все налаштування виконується стандартними засобами. З мінусів: відсутність можливості завдання багаторядкового заголовка поля.

3. Програмне встановлення заголовків полів

Платформа дозволяє програмно встановлювати заголовки полів, більше того, встановлювати багаторядкові, що дає можливість гнучко і динамічно задавати заголовки полів при формуванні звіту.

Для цього в модулі звіту визначимо процедуру ПриКомпонівціРезультату. У цій процедурі напишемо код за завданням заголовка полів.

// 1. Отримуємо налаштування користувача.
НалаштуванняКД = ЦейОб'єкт.КомпоновщикНалаштувань.ОтриматиНалаштування();

// 2. Отримуємо значення параметра "Період" з якого визначаємо дату початку та закінчення періоду.
ПараметрПеріод = Новий ПараметрКомпонуванняДаних("Період");
Період = НалаштуванняКД.ПараметриДаних.ЗнайтиЗначенняПараметра(ПараметрПеріод).Значення;
ПочатокПеріоду = Період.ДатаПочатку;
КінецьПеріоду = Період.ДатаЗакінчення;

// 3. Підготуємо інформацію про перевизначення заголовка полів. Для цього створимо
// масив, який міститиме інформацію: Ім'яПоля - значення властивості "Шлях"
// Набір даних (див. малюнок 1), Заголовок - текст заголовка.
СписокПолів = Новий Масив;
стрПочатокПеріоду = Формат(ПочатокПеріоду, "ДФ=dd.MM.yyyy; ДП="Порожня дата"");
ПолеПочатковийЗалишок = Новий Структура("Ім'яПоля, Заголовок", "КількістьПочатковийЗалишок", "Залишок на "+ Символи.ПС + сторПочатокПеріоду);
СписокПолів.Додати(ПолеПочатковийЗалишок);
стрКінецьПеріоду = Формат(КінецьПеріоду, "ДФ=dd.MM.yyyy; ДП="Порожня дата"");
ПолеКінцевийЗалишок = Новий Структура("Ім'яПоля, Заголовок", "КількістьКінцевийЗалишок", "Залишок на "+ Символи.ПС + стрКонецПериода);
СписокПолів.Додати(ПолеКінцевийЗалишок);

// 4. Отримаємо список полів, які перебувають у групуванні " Залишки " (див. малюнок 7) і
// Задамо новий заголовок, обійшовши елементи в циклі.
ВибраніПоля = НалаштуванняКД.Вибір.Елементи; // Перший рівень полів.
ВибраніПоляЗалишки = ВибраніПоля.Елементи; // Поля угруповання залишки.
Для кожного ВибранеПоле З ВибраніПоляЗалишки Цикл
Для кожного елемента масиву зі списку полів цикл
ПолеКомпонівки = Новий ПолеКомпонівкиДаних(ЕлементМассива.ИмяПоля);
Якщо ВибранеПоле.Поле = ПолеКомпонування Тоді
ВибранеПоле.Заголовок = ЕлементМассива.Заголовок;
КінецьЯкщо;
КінецьЦикл;
КінецьЦикл;

// 5. Завантажимо змінений налаштування користувача назад.
ЦейОб'єкт.КомпоновщикНалаштувань.ЗавантажитиНалаштування(НалаштуванняКД);

Результат звіту (див. рис. 10):
Спосіб важчий, ніж усі вище перелічені, але мені подобається.

4. Завдання шапки звіту за допомогою макету

Для більш гнучкого налаштування зовнішнього вигляду звіту в СКД передбачено створення макетів. У налаштуваннях звіту створимо ще одне угруповання "детальні записи" та встановимо ім'я "РядокДЗ" для цього угрупування (див. малюнок 11).
На вкладці "Макети" додамо макет заголовка угруповання. Для макету в табличному документі створимо шапку звіту (шапка звіту має містити стільки заголовків полів, скільки виводить полів детальний запис) та вкажемо область табличного документа для макета (див. рис. 12).
У результаті звіт має наступного виду шапку (див. рисунок 13):

Малюнок 13. Макет СКД як шапка звіту
На мою думку, макети мають один великий мінус, це неможливість перебудовуватися під задане угруповання користувача, тому їх слід використовувати в тому випадку, якщо звітна форма регламентована і не може бути змінена. Спробуйте встановити групування для угрупування "РядокДЗ" і побачите, що макет збився.

На сайті інформаційно-технологічного супроводу наведено статтю Використання наперед визначених макетів, яка докладно описує прийоми використання макетів у СКД.

5. Доопрацювання результату (табличного документа)

У цьому способі використається чудовий метод табличного документа ЗнайтиТекст()але для застосування даного способу потрібно відключення стандартної обробки формування результату звіту.

Приступимо. Відключаємо стандартне формування, для цього у модулі звіту для події ПриКомпонівціРезультатувстановимо змінну СтандартнаОбробка у значення Брехня та напишемо власну компонування результату:
Стандартна Обробка = Брехня;
КомпонувальникМакета = Новий КомпонувальникМакетаКомпонуванняДаних;
МакетКомпонування = КомпонувальникМакета.Виконати(
ЦейОб'єкт.СхемаКомпонівкиДаних,
ЦейОб'єкт.КомпоновщикНалаштувань.Налаштування,
Дані Розшифрування);
ПроцесорКомпонування = Новий ПроцесорКомпонуванняДаних;
ПроцесорКомпонівки.Ініціалізувати(МакетКомпонівки, ДаніРозшифровки, Істина);
ПроцесорВиводу = Новий ПроцесорВиводуРезультатуКомпонуванняДанихВТабличнийДокумент;
ПроцесорВиводу.ВстановитиДокумент(ДокументРезультат);
Процесор Виводу.Вивести(ПроцесорКомпонування);
Докладніше програмне компонування результату звіту описано у статті

Скомпонований результат виводиться в табличний документ - це змінна документрезультат. Далі, після формування результату та виведення його в табличний документ пишемо код для заміни одного тексту осередку на інший. Наприклад, змінимо в шапці звіту назву угруповання "Залишки" на "залишки номенклатури" (див. малюнок 14):
Осередок = ДокументРезультат.НайтиТекст("Залишки");
Якщо Осередок<>Невизначено Тоді
Осередок.Текст = "Залишки номенклатури";
КінецьЯкщо;

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

Даний спосіб я виявив для себе нещодавно, він простий і дозволяє дуже гнучко працювати з шапкою звіту, головне, щоб текст осередку мав унікальний текст.

P.S. можливо у вас в арсеналі є ще спосіб оформлення заголовків полів?



Сподобалася стаття? Поділіться їй