Розробка звітів MS Office (Excel, Word)

Комплекспідтримує створення, редагування і запуск шаблону Excel. Для правильної взаємодії з Комплексомпри розробці шаблону слід дотримуватися певних правил:

  • на зовнішній вигляд і вміст шаблону не потрібно встановлювати обмеження;
  • VBA програми формування звіту повинні починати роботу всередині підпрограми ReportMain;
  • підпрограма ReportMain служить «точкою входу» в програмний блок звіту. Комплекс завантажує шаблон, відшукує в його модулях підпрограму ReportMain, запускає її і чекає завершення підпрограми. Параметром підпрограми ReportMain передається менеджер СОМ об'єктів Комплексу. За допомогою менеджера можливий доступ до СОМ об'єктів Комплексу для отримання інформації, необхідної звіту. Об'єкт менеджера можна використовувати до закінчення виконання підпрограми ReportMain, після її закінчення об'єкт буде зруйнований і всі звернення до нього приведуть до помилки;
  • вся програма формування звіту повинна розташовуватися всередині підпрограми ReportMain.

Створення даних звітів починається з вибору при створенні форми звіту типу - Excel звіту або Word - звіту.

Реалізовано новий тип звітів Excel 2007, 2010 для реалізації додаткового функціоналу, який надає Microsoft Excel 2007 та 2010. Ці звіти мають розширення xltm (системні звіти) і xlum (призначені для користувача звіти). Даний тип звітів працює тільки в середовищі Microsoft Excel 2007 і вище.

У рядку Шаблон відображаються таблиці, склад яких залежить від системи в якій створюється звіт.

У рядку Найменування - вводиться найменування створюваного звіту.

Після натискання клавіші Ок проводиться запуск програми (Excel або Word відповідно). Відкривається файл що є шаблоном звіту. Для формування звіту необхідно по пункту меню програми Сервіс / Макрос / Редактор Visual Basic запустити редактор формування програми звіту.

У редакторі вже сформований кістяк програми. Далі за допомогою Visual Basic створюється програма побудови звіту. Доступ до даних здійснюється за допомогою SQL запитів, COM -об'єктів.

Для формування образу шаблону звіту його можна копіювати з існуючих звітів (по комбінації клавіш Ctrl + C, Ctrl + V).

Приклад програми Excel звіту

Приклад програми Excel звіту (VBA script)

'Звіт складається з даних двох таблиць

'Ptngrpk - список груп контрагентів

'Ptnrk - список контрагентів

'Зв'язок між таблицями

'Ptnrk.ptngrpk_rcd = ptngrpk.ptngrpk_rcd

'Поля таблиць

'ptngrpk

'Ptngrpk_rcd - ід записи групи

'Ptngrp_cdk - код групи

'Ptngrp_nmk - найменування групи

'

'ptnrk

'Ptngrpk_rcd - ід групи

'Ptn_cd - код контрагента

'Ptn_nm - найменування контрагента

'

'Порядок побудови звіту:

'Сканується список груп контрагентів

'Для кожної групи вибирається список відповідних контрагентів

'Примірник менеджера СОМ об'єктів

'Необхідний для запиту примірників СОМ об'єктів Комплексу

Public ComManager As Object

'Generated code.

'

'Головна точка входу в програму побудови звіту

'Ця процедура буде викликана Комплексом

'Після відкриття шаблону звіту

Sub ReportMain (Mgr As Object)

On Error GoTo ErrorHandler

'Запам'ятати екземпляр об'єкта

'Переданий Комплексом

Set ComManager = Mgr

' Запуск побудови звіту

MakeReport

Exit Sub

ErrorHandler:

MsgBox ("Error:" & Chr (13) & Err.Description)

End Sub

Private Sub MakeReport ()

' Групи конрагентами

Dim PtnGrpObj As Object

' Контрагенти

Dim PtnObj As Object

' Лист звіту

Dim RepSheet As Worksheet

'Початкова рядок листа звіту

Dim row As Integer

'В разі виникнення помилки буде видано повідомлення з текстом помилки

On Error GoTo ErrorHandler

'Лист книги, на якому буде побудований звіт

Set RepSheet = ActiveSheet

'Запросити у менеджера екземпляри двох об'єктів виконання SQL запитів

Set PtnGrpObj = ComManager.GetObjByName ("Sys", "ISysSqlQuery")

Set PtnObj = ComManager.GetObjByName ("Sys", "ISysSqlQuery")

' Запит для читання груп

PtnGrpObj.Text = "select ptngrpk_rcd as rcd, ptngrp_cdk as cd, ptngrp_nmk as nm from ptngrpk"

' Запит для читання контрагентів групи

PtnObj.Text = "select ptn_cd as cd, ptn_nm as nm from ptnrk where ptngrpk_rcd =: grp_rcd"

'Відкрити запит для груп

PtnGrpObj.OpenObj

'Сканувати групи

If PtnGrpObj. First Then

row = 3

Do

'Висновок найменування групи

RepSheet. Range (" B " & CStr (row) & ": C " & CStr (row)). Merge

RepSheet.Range ("A" & CStr (row) & ": C" & CStr (row)). Font.Bold = True

RepSheet.Range ("A" & CStr (row) & ": C" & CStr (row)). BorderAround (xlContinuous)

RepSheet.Range ("A" & CStr (row)). Value = PtnGrpObj.GetFieldValue ("cd")

RepSheet.Range ("B" & CStr (row)). Value = PtnGrpObj.GetFieldValue ("nm")

row = row + 1

'Встановлення коду групи для запиту списку контрагентів

Call PtnObj.SetParamValue ("grp_rcd", PtnGrpObj.GetFieldValue ("rcd"))

'Відкрити запит списку контрагентів

PtnObj.OpenObj

' Сканувати список

If PtnObj.First Then

Do

' Висновок запису контрагента

RepSheet.Range ("A" & CStr (row) & ": B" & CStr (row)). Merge

RepSheet.Range ("A" & CStr (row) & ": C" & CStr (row)). BorderAround (xlContinuous)

RepSheet.Range ("A" & CStr (row)). Value = PtnObj.GetFieldValue ("cd")

RepSheet.Range ("C" & CStr (row)). Value = PtnObj.GetFieldValue ("nm")

row = row + 1

Loop While PtnObj.Next

End If

'Закрити об'єкт списку контрагентів

'Після закінчення читання списку для групи

PtnObj.CloseObj

Loop While PtnGrpObj.Next

End If

Exit Sub

ErrorHandler:

MsgBox ("Error:" & Chr (13) & Err.Description)

End Sub

Приклад програми Word звіту

Звітом є форма договору.

'Generated code.

Sub ReportMain (Mgr As Object)

Set ComManager = Mgr

Set EnvObj = ComManager.GetObjByName ("Sys", "ISysEnvironment")

'MsgBox (EnvObj.Dog_Ptn)

'Selection.Text = EnvObj.PTN_READ_INT (Selection.Text)

'Call EnvObj.PTN_READ_INT (EnvObj.Dog_Ptn)

'MsgBox (EnvObj.PtnR_NmSh)

'MsgBox (EnvObj.NUMTOSTR (EnvObj.U_tttttt))

With Selection.Find

.ClearFormatting

.Text = "& <*> &"

.Replacement.Text = ""

.Forward = True

.Wrap = wdFindContinue

.Format = False

.MatchCase = False

.MatchWholeWord = False

.MatchAllWordForms = False

.MatchSoundsLike = False

.MatchWildcards = True

If.Execute Then

Do

'MsgBox (Selection.Text)

Selection.Text = EnvObj.GETDOGTXTVALUE (Selection.Text)

Selection.EndOf

Loop While Selection.Find.Execute

End If

End With

End Sub

Перелік полів для формування договору:

Поля для функції ДОГОВОРУ

Номер договору - & DOGNMR &

Вхідний номер договору - & DOGVXDNMR &

Дата договору - & DOGDATE &

Об'єкт угоди - & DOGOBJ &

Коментар - & DOGCMT &

Центр відповідальності договору - & DOGCO &

Дата початку договору - & DOGDATEBEG &

Дата кінця договору - & DOGDATEEND &

Спосіб оплати - & DOGSPOPL &

Дата оплати - & DOGDATEOPL &

Котирування валюти - & DOGVALKOT &

Валюта договору - & DOGVAL &

Курс - & DOGVALKURS &

Реквізити свого боку

Найменування боку - & DOGSIDENM 1 &

Найменування контрагента - & DOGSIDEPTN 1 &

Адреса - & DOGSIDEADR 1 &

Контактна особа - & DOGSIDECONT 1 &

Телефон - & DOGSIDEPHN 1 &

Банк - & DOGSIDEBANK 1 &

МФО - & DOGSIDEMFO 1 &

Рахунок - & DOGSIDEACC 1 &

ІПН - & DOGSIDEINN 1 &

Реквізити іншого боку

Найменування боку - & DOGSIDENM 2 &

Найменування контрагента - & DOGSIDEPTN 2 &

Адреса - & DOGSIDEADR 2 &

Контактна особа - & DOGSIDECONT 2 &

Телефон - & DOGSIDEPHN 2 &

Банк - & DOGSIDEBANK 2 &

МФО - & DOGSIDEMFO 2 &

Рахунок - & DOGSIDEACC 2 &

ІПН - & DOGSIDEINN 2 &

Поля користувача - & ім'я &

Приклад:

Договір N & DOGNMR &

майнового найму (класична оренда)

& DOG DATE & р м. Київ

& DOGSIDEPTN1 &, в подальшому Наймодавець, в особі & DOGSIDECONT1 &, що діє на підставі Статуту, з одного боку, і & DOGSIDEPTN2 &, в подальшому Наймач, в особі & DOGSIDECONT2 &, що діє на підставі & DOGSELSPR &, з іншого боку, керуючись взаємною угодою і чинним законодавством, уклали договір про наступне.

1. ЗАГАЛЬНІ ПОЛОЖЕННЯ

1.1. За цим договором Наймодавець зобов'язується надати Наймачеві майно у тимчасове користування, а Наймач зобов'язується оплатити його і повернути майно.

1.2. Наймодавець надає Наймачеві наступне майно:

& DOGOBJ &.

1.2.1. Наймодавець передає Наймачеві наступні документи на майно: & DOGINSTR &.

Оформлення документів, необхідних для передачі майна в найм і для нормального користування майном оформлюються & DOGINSTR &.

1.3. Наймодавець надає Наймачеві майно у тимчасове користування строком на & DOGINSTR &.

1.4. Крім вищевказаного Наймодавець надає Наймачеві наступні послуги: & DOGINSTR &.

1.5. Наймач користується отриманим за цим договором имуществом самостійно в місці: на свій розсуд.

1.6. Охорона, зберігання, обслуговування і т.п. здійснюється & DOGINSTR & & DOGINSTR &, засобами & DOGINSTR &, за рахунок & DOGINSTR & & DOGINSTR &, в наступному порядку: & DOGINSTR &.

1.7. Власником переданого в оренду майна є & DOGINSTR &.

1.8. Майно передається Наймачеві в місці: & DOGINSTR & і його здача-приймання оформляється & DOGINSTR & (Додаток N 1). (Розпискою, актом, протоколом)

1.9. Наймач після закінчення дії цього договору зобов'язується повернути майно, отримане за цим договором, наймодавця в місці: & DOGINSTR &, в стані: & DOGINSTR &, в терміни: & DOGINSTR &, а здача-приймання майна оформляється & DOGINSTR & (Додаток N 2). (Розпискою, актом, протоколом)

1.10. Наймач зобов'язується користуватися найманим майном в порядку: & DOGINSTR &.

(Вказати мету найму, порядок користування та режим і т.п.)

2. ВЗАЄМНІ РОЗРАХУНКИ СТОРІН

2.1. За користування майном Наймач зобов'язується виплатити наймодавця найману плату в розмірі & DOGSUM & рублів за & DOGINSTR &.

2.2. Крім вищевказаних платежів Наймач виплачує Наймодавець суму в розмірі & DOGINNUMB & рублів за & DOGINSTR & за надані Наймодавцем відповідно до п.1.4. послуги.

2.3. & DOGINSTR & за рахунок & DOGINSTR & здійснює страхування надається за цим договором майна на суму & DOGINNUMB & рублів в порядку & DOGINSTR &.

2.4. Наймач видає наймодавця в рахунок майбутніх розрахунків аванс в сумі & DOGINSTR & в порядку & DOGINSTR &.

2.5. За погодженням сторін в рахунок найманої плати (на весь період дії договору або на будь-який період) можуть передаватися послуги, права користування, майно і т.п.

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

  • хвороба користувача;
  • форс-мажорні обставини;
  • & DOGINSTR &.

2.7. Орендна плата за відповідний рік перераховується рівними частками щоквартально, не пізніше 20 числа першого мемяца наступного кварталу.

2.8. Щорічно, після закінчення відповідного календарного року, сторони перевіряють правильність платежів по найманої плати і результати перевірки оформляють актом звірки розрахунків. За даними зазначеного акта в межах першого кварталу проводяться необхідні перерахунки.

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

3. Права та обов'язки сторін

3.1. Наймодавець зобов'язаний:

а) передати Наймачеві майно, що є предметом цього договору, в стані, що дозволяє його нормальну експлуатацію, відповідному його фактичної вартості, і цим договором;

б) крім вищевказаного, в тому ж порядку передати:

& DOGINSTR & ;

в) забезпечити передачу Наймачеві нормативно-правової, нормативно-технічної та наукової інформації;

г) проінструктувати про порядок користування і посприяти наймодавця по користуванню найманим майном;

д) оформити документи & DOGINSTR & в терміни: & DOGINSTR & ;

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

Зазначений строк не входить до терміну для обчислення неустойки і штрафних санкцій;

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

з) провести за власний рахунок і власними засобами і силами & DOGINSTR & ремонт (& DOGINSTR & обслуговування) майна в терміни: & DOGINSTR &.

У разі, якщо наймана майно виходить з користування Наймача, зазначений термін в термін дії цього договору не включається;

і) Наймодавець не може достроково розірвати цей договір в односторонньому порядку;

к) & DOGINSTR &.

3.2. Наймач зобов'язаний:

а) своєчасно проводити платежі, передбачені цим договором;

б) використовувати отримане за цим договором майно відповідно до його цільового призначення;

в) під час приймання майна перевірити його справність і комплектність;

г) за власний рахунок утримувати майно в такому порядку:

& DOGINSTR & з урахуванням його природного зносу;

д) якщо наймана майно вибуває з ладу раніше повного амортизаційного терміну служби або & DOGINSTR &, то Наймач відшкодовує наймодавця недовнесених їм платежі за оренду майна. Залежно від фактичного стану майна та обставин вибуття з ладу, Наймодавець може не стягувати недовнесених найману плату;

е) & DOGINSTR &.

3.3. Наймодавець має право:

а) отримати найману плату відповідно до цього договору;

б) отримати інформацію про стан найманого майна;

в) розірвати цей договір у разі, якщо Наймач порушує свої обов'язки в період користування найманим майном;

г) & DOGINSTR &.

3.4. Наймач має право:

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

  • невикористання майна з причин: & DOGINSTR &;
  • хвороби або & DOGINSTR & користувача майном;
  • & DOGINSTR &.

Здача майна в тимчасове користування іншим організаціям не впливає на зміст фінансових відносин з Наймодавцем;

б) на проведені їм віддільні поліпшення найманого майна;

в) на компенсацію вартості здійснених ним невіддільних поліпшень найманого майна;

г) на зниження найманої плати в разі зниження споживчих властивостей майна з причин, не залежних від Наймача, на суму, пропорційну зміненим властивостям;

д) на відшкодування витрат на поліпшення майна, проведені за згодою (в т.ч. без згоди) Наймодавця, в складі: вартості матеріалів, робочої сили і & DOGINSTR &, в т.ч. на відновлення майна після його природного зносу;

е) & DOGINSTR &.

4. ВІДПОВІДАЛЬНІСТЬ

4.1. У разі невиконання або неналежного виконання зобов'язань винна сторона зобов'язана відшкодувати другій стороні збитки у відповідності з чинним законодавством & DOGSELSPR &.

4.2. За прострочення сплати найманої плати Наймач сплачує & DOGINSTR & відсотків від несплаченої суми в необхідний термін.

4.3. За прострочення передачі майна за цим договором (у т.ч. надання неякісного, некомплектного майна) Наймодавець сплачує & DOGINSTR & відсотка від вартості непереданого в термін майна за кожен день прострочення.

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

4.5. У разі псування або загибелі найманого майна Наймач зобов'язаний: & DOGINSTR &.

4.6. Виплата неустойок і відшкодування збитків не звільняє сторони від виконання договірних зобов'язань в натурі.

4.7. Додаткові заходи відповідальності: & DOGINSTR & & DOGINSTR &.

5. ДІЯ ДОГОВОРУ

5.1. Цей договір вступає в силу з & DOGDATEBEG & і діє & DOGINSTR & (для майна - не більше 10 років; будови - не більше 5 років; обладнання - не більше 1 року)

5.2. Після закінчення зазначеного в п. 5.1. терміну Наймач має право на пролонгацію договору на новий термін, який сторони визначають додатково на умовах не погіршують становище сторін та за умови, що Наймач протягом терміну дії цього договору не порушував прийняті на себе зобов'язання.

5.3. Договір може бути змінений або розірваний в наступному порядку: Зацікавлена сторона повинна направити іншій стороні пропозицію про це. Сторона, яка отримала таку пропозицію, повинна дати відповідь не пізніше 10 днів після одержання пропозиції. У разі недосягнення згоди щодо зміни, розірвання договору, а також у разі неодержання відповіді спір вирішується за заявою зацікавленої сторони Державним арбітражем.

5.4. Цей договір може бути розірваний за ініціативою однієї сторони і поза порядком, зазначеного в п.5.3. в наступних випадках:

- погіршення стану найманого майна з причин, не залежних від Наймача;

- & DOGINSTR &.

5.5. У разі досягнення угоди про переукладання цього договору і до укладення нового договору діють норми чинного законодавства.

6. Додаткові умови

6.1. Спори сторін вирішуються в & DOGINSTR & & DOGINSTR &

6.2. & DOGINSTR & & DOGINSTR &

6.3. & U _ DOG &

7. Інші умови

7.1. На відносини сторін, не врегульовані цим договором, поширюються норми чинного цивільного законодавства.

7.2. Цей договір складено в 2 примірниках: по одному кожній стороні.

7.3. До цього договору в якості невід'ємних його частин додаються:

- Додаток N 1 - акт здачі-приймання майна;

- Додаток N 2 - акт здачі-приймання палива, сировини, матеріалів, незавершеного виробництва, готової продукції, фонди економічного стимулювання.

7.4. Реквізити сторін:

наймодавець наймач
Адреса: & DOGSIDEADR1 & Адреса: & DOGSIDEADR 2 &
Телефон: & DOGSIDE PHN2 & Телефон: & DOGSIDE PHN2 &
р / с & DOGSIDEACC 1 & р / с & DOGSIDEACC2 &
& DOGSIDEBANK1 & & DOGSIDEBANK2 &
& DOGSIDEMFO1 & & DOGSIDEMFO2 &
(Підпис) (Підпис)
м.п. м.п.