Додаток 3.3.3
Значень періодичних реквізитів
Для формування звітності передбачена відповідна форма. Вікно діалогу містить елементи вибору періоду, за який формуватиметься звіт, а також кнопку "Сформувати". (див. додаток 3.3.4)
Додаток 3.3.4
Діалог звіту
Для зручності користувача період може бути вибраний за квартал, місяць, день або в інтервалі необхідних дат (див. додаток 3.3.5)
Додаток 3.3.5
Вибір періоду
Реалізація діалогу здійснюється в конфігураторі з використанням візуальних засобів. При натисненні кнопки "Сформувати" виконується обробка вхідних даних, за допомогою вбудованої програмної мови в прикладну підсистему, виведення друкарської форми. Зв'язок візуальних об'єктів з іншими об'єктами метаданих системи здійснюється за допомогою ідентифікаторів, що є символічним "посиланням" на об'єкт, яке може бути використане як змінна. (див. додаток 3.3.6)
Додаток 3.3.6
Ідентифікатор
Друкарська форма створена за допомогою об'єкту метаданих Таблиця. У програмі реалізована можливість використання таблиці для безпосереднього введення, обробки і відображення цих різних типів. Обробка інформації і приміщення її в потрібні місця друкарської форми для більшості об'єктів метаданих виконується програмними модулями на мові підсистеми 1С:Предприятие.
Таблиця в системі є сукупністю осередків прямокутної форми, організованих в рядки і стовпці. Кожен стовпець таблиці і кожен рядок має свій унікальний номер. Рядки і стовпці нумеруються незалежно, нумерація починається з 1 і ведеться від лівого верхнього кута таблиці. Таким чином, будь-який елемент таблиці позначений парою чисел - номером рядка і номером стовпця, на перетині яких вона знаходиться. Окремим осередкам і їх діапазонам (компактним групам прямокутної форми) присвоєні власні імена для зручності звернення до них, також присвоєні імена секціям. Заповнення таблиці вихідними даними описується в модулі. Приведемо фрагмент модуля елементу звіту (див. лістинг 3.3.1).
Лістинг 3.3.1
Фрагмент модуля елементу звіту
НомерТаблицы = "Таблица № 2-1"; //змінна номер таблиці
Таб=СоздатьОбъект("Таблица"); // створення об'єкту Таб типу "Таблиця"
Таб.ИсходнаяТаблица("Таблица_21"); // асоціювання об'єкту з формою
Таб.ТолькоПросмотр(1); // заборона на зміну
Таб.Опції(0, 0, 5, 3); // параметри відображення
Таб.ВывестиСекцию("Заголовок"); // виведення секції "Заголовок"
ОС.ВыбратьСтроки(); // відкрити таблицю значень ОС для вибірки //елементів
Поки ОС.ПолучитьСтроку()=1 Цикл // цикл по елементах вибірки
// // далі визначення значень змінних таблиці
МесяцНачалаИспользования=ПериодСтр(НачМесяца(ОС.ДатаВводаВЭ ксплуатацию), КонМесяца(ОС.ДатаВводаВЭксплуатацию));
СрокПолезногоИспользования=ОС.СрокПолезногоИспользования;
МесячнаяНорма=глФорматСум(ОС.МесячАмортвПроцентах, 0);
МесячнаяАмортизация=глФорматСум(ОС.МесАмортизация, 0);
...................
Таб.ВывестиСекцию("Рядок"); // виведення секції "Рядок" із змінними
...................
Таб.ВывестиСекцию("Год"); // виведення секції "Рік" із змінними
Таб.Показать("Книга учёта. " + НомерТаблицы); // відображення таблиці
Візуальна форма є уніфікованою і розроблена вбудованим в прикладну підсистему редактором таблиць. Після натиснення на кнопку "Сформувати" Таблиця буде заповнена вихідними даними, отриманими в ході обробки, після чого її можна проглянути, роздрукувати, зберегти у форматі mxl (Таблиці), xls (Таблиці Excel), htm, html (HTML документ), txt (Текстовий документ). (див. додаток 3.3.7)
Додаток 3.3.7
Редактор таблиць
Варто відмітити, таблиця в цьому проекті реалізована не як "статичний" об'єкт, а "динамічний" за допомогою "Розшифровки".
У полі "Розшифровка" вказано вираження на вбудованій мові системи 1С:Предприятие. При формуванні табличного документу цей вираз буде вичислений і його результат буде записаний в полі "Розшифровка" осередку готового табличного документу. На відміну від тексту, що поміщається в сам осередок, значення вираження не перетвориться до типу "рядок". Приведемо фрагмент модуля. (див. лістинг 3.3.2)
Лістинг 3.3.2
"Розшифровка" Оборотно-сальдова відомість (ОСВ)
РасшОСВ = СоздатьОбъект("СписокЗначений");
РасшОСВ.Встановити("Звіт", "ОборотноСальдоваяВедомостьПоСчету");
...................
РасшифровкаОС=ОС.ОСНазвание;
РасшОСВ.Встановити("Дата1", НачДата); //вхідні параметри
РасшОСВ.Встановити("Дата2", КонДата);
РасшОСВ.Встановити("Рахунок", С021);
РасшОСВ.Встановити("ВыбВидСубконто1",
ВидыСубконто.ОсновныеСредства);
РасшОСВ.Встановити("Субконто1", ОС.ОСНазвание);
Таким чином, здійснюється зв'язок з оборотно-сальдовою відомістю, яка в якості контексту отримує вхідні параметри списку значень "РасшОСВ" і формує вихідні дані, (сальдо, обороти рахунку) представлені звітом.
Коли готовий табличний документ відкритий в режимі "Тільки перегляд", при приміщенні покажчика миші над осередком, що містить заповнене поле "Розшифровка", покажчик міняється. Це означає, що можлива деталізація (розшифровка) даних таблиці. Тепер, якщо двічі клацнути лівою кнопкою миші на цьому осередку (чи зробити її активною і натиснути клавішу Enter), значення поля буде видано на екран:
значення типу "рядок", "число", "дата" і "перерахування" будуть видано для перегляду;
якщо значення має тип "документ", відповідний документ буде відкритий для перегляду і редагування;
якщо значення є елементом довідника, цей елемент буде відкритий для перегляду і редагування в діалозі. Якщо при налаштуванні властивостей довідника було задано редагування в списку, буде відкрита таблиця довідника, а покажчик в таблиці буде встановлений на потрібний елемент довідника. (див. додаток 3.3.8)
Мал. 3.3.8 Розшифровка відомостей про основний засіб
В процесі обробки даних обробляються дані довідника "Основні засоби" і "нематеріальні активи" по кожному реквізиту довідника. Вибірка даних робиться за допомогою мови запитів і здійснюється з відповідних довідників. Усі умови вибірки визначені законодавчою базою.
Використання запиту обумовлене тим, що швидкість вибірки даних у багато разів перевищує швидкість при використанні інших засобів вибірки, оскільки запит, написаний на мові підсистеми інтерпретується останньою в SQL запит для твору вибірки з бази даних SQL Server -а. Приведемо фрагмент запиту. (див. лістинг 3.3.3)
Лістинг 3.3.3
Об'єкт запит
Запит = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//"//{{ЗАПРОС(Сформувати)
|Период з НачДата по КонДата;
Справочник.ОсновныеСредства.ДатаВводаВЭксплуатацию;
|ДатаПриобретения = Справочник.ОсновныеСредства.ДатаПриобретения;
|ПричинаВыбытия = Справочник.ОсновныеСредства.ПричинаВыбытия;
|ДатаВыбытия = Справочник.ОсновныеСредства.ДатаВыбытия;
...................
|Условие (ПодлежитАмортизации = 1);
|Условие (Собственно = 1);
|Условие (ПустоеЗначение(ДатаВводаВЭксплуатацию) = 0);
|Условие (ДатаВводаВЭксплуатацию < КонДата);
|Условие (СрокПолезногоИспользования>=12);
|Условие(СпособПоступления<>Перечисление.СпособыПоступленияОС.БезвозмездноеПоступление);
|Условие ((НачислятьАмортизацию = 1) или (ДатаВыбытия > НачДата) или (Пустоезначение(ДатаВыбытия)=1));
|Группирование ОСНазвание Без Груп;
|"//}}ЗАПРОС;
// // Якщо помилка в запиті, то вихід з процедури
Если Запрос.Виполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
У програмному модулі так само використаний механізм отримання бухгалтерських підсумків. Для отримання великої кількості підсумків в різних розрізах об'єкт "Бухгалтерські Підсумки" перемикається в режим роботи із запитом. Для перемикання в цей режим викликається метод ВыполнитьЗапрос в параметрах якого, а також додатковими методами встановлюється склад підсумків, які будуть отримані запитом. Виконання цього методу здійснює вибірку даних і їх попередню обробку.
Після виконання запиту за допомогою спеціального набору методів об'єкту "Бухгалтерські Підсумки" здійснюється отримання підсумків, отриманих дан-ным запитом. До цих методів відносяться методи обходу підсумків в різних розрізах (сформованих запитом) і методи для отримання власне підсумків. Крім того спеціальний набір атрибутів об'єкту "Бухгалтерські Підсумки" дозволяє звертатися в процесі обходу результатів запиту до значень отриманих угрупувань.
Запит використовується для отримання кредитових оборотів по бухгалтерських рахунках: 02.1 (Амортизація основних засобів), 04 (Нематеріальні активи), 05 (Амортизація нематеріальних активів), а також для передачі в якості параметра у функцію розрахунку кількості місяців використання активу. Приведемо фрагмент запиту. (див. лістинг 3.3.4)