25.01.2010

Доопрацювання інтерфейсу звітів

Стаття

Доопрацювання інтерфейсу звітів

 

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

У статті описано порядок доопрацювання «1С:Бухгалтерії для України», реліз 7.70.277. Аналогічні зміни неважко внести до будь-якої іншої конфігурації «1С:Підприємства 7.7».

Едвард МЕХЕДОВ, програміст, головний бухгалтер ТОВ «Ейдос», м. Дніпропетровськ, e-mail: mexedov@mail.ru , тел.: (050) 583-81-64

 

Що ми маємо?

Ми сформували оборотно-сальдову відомість. Проаналізували. Знайшли помилку, припустимо, кредитовий залишок на початок періоду по активному рахунку. Що в цьому випадку необхідно зробити? Правильно! Перейти на один період назад. Які дії для цього потрібно виконати? Навести покажчик миші на кнопку «

Настройка» і двічі клацнути по ній лівою кнопкою миші. У вікні настройки, що відкрилося, необхідно вказати потрібний, а саме попередній період. Зробити це можна, зазначивши інтервал дат уручну. Можна клацнути по кнопці «Выбор периода» і продовжити терзати себе й комп’ютерну мишу, розставляючи галочки та маркери в діалозі, що відкрився. Уся ця процедура (рис. 1) закінчується натисненнями на кнопку «ОК». Загалом, поки виконаєш усі зазначені дії, цілком можна забути, для чого все це робилося.

Пригадаємо, як перехід між періодами здійснюється в багатьох інших програмах. Як каже один мій знайомий, «одним натисненням кнопки». Ну, одним натисненням — не обіцяю, хоча й це можливо, тільки доопрацювання буде складнішим. Але подвійним клацанням лівої кнопки миші — можна без особливих хитрувань. Про те, як це зробити, я і збираюся вам розповісти.

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

 

Що ми отримаємо?

На рис. 1 показано звичайну оборотно-сальдову відомість. Зверніть увагу на сіру смугу у верхній частині звіту. Вона містить лише кнопки «

Обновить» і «Настройка». На рис. 2 наведено модернізований звіт. Тепер для переходу між періодами можна просто двічі клацнути мишею по відповідній кнопці. Наприклад, кнопка зі значком «<» переноситиме нас на місяць назад, кнопка зі значком «>» — на місяць уперед.

Умовні позначення та призначення кнопок наведено в табл. 1.

 

Таблиця 1

Умовні позначення та призначення кнопок

Умовне позначення

Дія кнопки

<

Перехід на місяць назад

>

Перехід на місяць уперед

<<<

Перехід на квартал назад

>>>

Перехід на квартал уперед

1кв.

Позиціонувати на 1-й квартал поточного року

2кв.

Позиціонувати на 2-й квартал поточного року

Іп.г.

Позиціонувати на період 1-ше півріччя

3кв.

Позиціонувати на 3-й квартал поточного року

9м.

Позиціонувати на період 9 місяців

4кв.

Позиціонувати на 4-й квартал поточного року

Год

Позиціонувати на інтервал за поточний рік

 

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

 

Доопрацювання

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

 

ОБОРОТНО-САЛЬДОВА ВІДОМІСТЬ

Розглянемо проведення доопрацювання на прикладі звіту «

Оборотно-сальдовая ведомость». Відкриємо Конфігуратор та відшукаємо цей звіт у гілці «Отчеты» конфігурації. Для досягнення необхідного результату нам необхідно доповнити процедуру «ПриОткрытии» модуля звіту. Перейдемо на закладку «Модуль» та відшукаємо в ньому рядок 618 із текстом «Если Обновить <> 2 Тогда» цієї процедури. Перед цим рядком (на рядок вище) додамо рядки згідно з лістингом 1. Як завжди, рядки, що додаються, позначено в лістингу напівжирним шрифтом, існуючі рядки — звичайним.

 

Лістинг 1

ПланСчетов = ВыбранныйПланСчетов();

Если глИспользуетсяРазделительУчета =1 Тогда

РазделительУчета = глВосстановитьЗначение(,"БазФирма");

ПоВсемРУ = 0;

КонецЕсли;

КонецЕсли; // строка 616

 

// ==== Начало вставки Мехедов, Б&К №1-2(73-74), 2010 ====

// КВАРТАЛ НАЗАД

Если Обновить = 3 Тогда

Дата1=ДобавитьМесяц(Дата1,-3);

Дата2=КонКвартала(Дата1);

КонецЕсли;

 

// КВАРТАЛ ВПЕРЕД

Если Обновить = 4 Тогда

Дата1=ДобавитьМесяц(Дата1,3);

Дата2=КонКвартала(Дата1);

КонецЕсли;

 

// МЕСЯЦ НАЗАД

Если Обновить = 5 Тогда

Дата1=ДобавитьМесяц(Дата1,-1);

Дата2=КонМесяца(Дата1);

КонецЕсли;

 

// МЕСЯЦ ВПЕРЕД

Если Обновить = 6 Тогда

Дата1=ДобавитьМесяц(Дата1,1);

Дата2=КонМесяца(Дата1);

КонецЕсли;

 

// 1 КВАРТАЛ

Если Обновить = 11 Тогда

Дата1=НачГода(Дата1);

Дата2=КонМесяца(Дата1+89);

КонецЕсли;

 

// 2 КВАРТАЛ

Если Обновить = 12 Тогда

Дата1=НачМесяца(НачГода(Дата1)+95);

Дата2=КонМесяца(ДобавитьМесяц(Дата1,2));

КонецЕсли;

 

// 3 КВАРТАЛ

Если Обновить = 13 Тогда

Дата1=НачМесяца(НачГода(Дата1)+187);

Дата2=КонМесяца(ДобавитьМесяц(Дата1,2));

КонецЕсли;

 

// 4 КВАРТАЛ

Если Обновить = 14 Тогда

Дата1=НачМесяца(НачГода(Дата1)+278);

Дата2=КонМесяца(ДобавитьМесяц(Дата1,2));

КонецЕсли;

 

// ВЕСЬ ГОД

Если Обновить = 15 Тогда

Дата1=НачГода(Дата1);

Дата2=КонГода(Дата1);

КонецЕсли;

 

// 1 ПОЛУГОДИЕ

Если Обновить = 16 Тогда

Дата1=НачГода(Дата1);

Дата2=ДобавитьМесяц(Дата1,6)-1;

КонецЕсли;

 

// 9 МЕСЯЦЕВ

Если Обновить = 19 Тогда

Дата1=НачГода(Дата1);

Дата2=ДобавитьМесяц(Дата1,9)-1;

КонецЕсли;

//==== Конец вставки Мехедов, Б&К №1-2(73-74), 2010 ====

 

Если Обновить <> 2 Тогда // бывшая строка 618

Сформировать();

СтатусВозврата(0);

Возврат;

КонецЕсли;

 

Однак це ще не все. Тепер найскладніше. Будьте вкрай уважні! Перейдіть на вкладку «

Таблица» або «Таблица_Укр» залежно від значення константи «Формы на украинском». Тут необхідно розмістити так звані кнопки для переходу між періодами. Насправді це не кнопки у звичайному нашому розумінні, а малюнки-об’єкти. Два таких об’єкти вже наявні у друкованій формі звіту. Це «Обновить» і «Настройка». Скопіюємо один з них для проведення подальших експериментів над ним. У принципі, можна просто створити новий об’єкт, нічого не копіюючи. Для цього необхідно вибрати в меню «Таблица → Вставить рисунок → Прямоугольник» і розтягти цей об’єкт на друкованій формі. Щоправда, після цього новому об’єкту доведеться задати колір фону, ширину, висоту, рівнесенько вписати у верхній рядок на зразок уже наявних кнопок «Настройка» і «Обновить». Тому просто скопіюємо кнопку «Настройка» і використаємо її як зразок.

Наведемо покажчик миші на кнопку «

Настройка», натиснемо та утримуватимемо клавішу «Ctrl». Тепер необхідно, натиснувши на ліву кнопку миші та не відпускаючи клавішу «Ctrl», перетягти «клонований» об’єкт праворуч по сірій лінії (вона ще називається «Секция_6»). Після зупинення курсора миші та позиціонування об’єкта в потрібному місці форми необхідно послідовно відпустити ліву кнопку миші і тільки тоді — клавішу «Ctrl». Замість пунктирної рамки в тому місці екрана, де ми зупинилися, з’явиться скопійований графічний об’єкт «Настройка» (рис. 3).

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

Свойства». Приведемо вміст палітри властивостей вставленого об’єкта у відповідність до рис. 4. Коригування потребують лише два реквізити показаної на рисунку закладки «Текст»:

1) у полі введення напису замість назви кнопки «

Настройка» введемо символ «>» (без лапок);

2) у реквізиті «

Расшифровка» замість коду «РасшифровкаОбновить(2)» уведемо код «РасшифровкаОбновить(5)».

Решту реквізитів на закладці «

Текст» і на всіх інших закладках вікна властивостей рисунка (див. рис. 4) залишаємо без зміни. Нова кнопка виглядатиме приблизно так само, як і початкова. Вона відрізнятиметься написом і виконуваною дією: при подвійному клацанні мишею по ній не викликатиметься вікно настройки звіту. Буде здійснено ту дію, яку ми описали в доданому фрагменті коду, а саме установлення періоду звіту на попередній місяць.

Отриману в результаті наших дій кнопку ми «клонуємо» так само ще десять разів. Реквізити всіх доданих кнопок правимо так, як зазначено в табл. 2.

 

Таблиця 2

Реквізити доданих кнопок

№ з/п

Напис

Реквізит «Расшифровка»

1

<

РасшифровкаОбновить(5)

2

>

РасшифровкаОбновить(6)

3

<<<

РасшифровкаОбновить(3)

4

>>>

РасшифровкаОбновить(4)

5

1кв.

РасшифровкаОбновить(11)

6

2кв.

РасшифровкаОбновить(12)

7

І п.г.

РасшифровкаОбновить(16)

8

3кв.

РасшифровкаОбновить(13)

9

9м.

РасшифровкаОбновить(19)

10

4кв.

РасшифровкаОбновить(14)

11

Год

РасшифровкаОбновить(15)

 

Важливо!

Зверніть увагу на вміст поля «Расшифровка» у властивостях об’єктів. Саме воно визначає поведінку форми при подвійному клацанні мишею по відповідній кнопці.

Звіт «Оборотно-сальдовая ведомость» має дві друковані форми, українською та російською мовами. Зміни бажано внести до обох форм. Це зробити нескладно: можна просто скопіювати нововведені кнопки до сусідньої таблиці.

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

 

ІНШІ ЗВІТИ

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

Слід пам’ятати, що доповнення вносяться як до друкованої форми звіту, так і до його модуля. Процедура модуля, до якої впроваджуються доповнення, у всіх звітах має назву «

ПриОткрытии». Думаю, якщо ви зазначите номер рядка в модулі, перед яким необхідно вставити текст лістингу 1 (див. табл. 3), це значно полегшить роботу і заощадить ваш час.

 

Таблиця 3

Номер рядка модуля звіту, перед яким необхідно вставити текст лістингу 1

№ з/п

Найменування звіту

Номер рядка

1

Оборотно-сальдова відомість

618

2

Шахівка

254

3

Оборотно-сальдова відомість по рахунку

499

4

Аналіз рахунка

167

5

Аналіз рахунка за датами

160

6

Аналіз рахунка за субконто

489

7

Головна книга

259

8

Аналіз субконто

377

9

Картка субконто

344

10

Картка рахунка

480

11

Обороти між субконто

672

12

Звіт за проводками

266

13

Зведені проводки

181

14

Журнал-ордер за субконто

919

15

Розширений аналіз субконто

702

 

Важливо!

Номери рядків у табл. 3 дано для релізу 7.70.277. Якщо ви працюєте з більш раннім релізом конфігурації, то вам доведеться самостійно відшукати необхідне місце в модулі. Не забувайте, що вставку потрібно робити у процедурі «ПриОткрытии» перед рядком «Если Обновить <> 2 Тогда».

Не забудьте скопіювати і кнопки, точнісінько так, як це здійснювалося вище при доопрацюванні звіту «

Оборотно-сальдовая ведомость». До речі, при оформленні форми звіту кнопками акуратність буде незайвою. Кнопки повинні мати однакову висоту, пропорційну ширину і не наповзати одна на одну, але й великий інтервал між ними не прикрасить форму.

 

Нюанси оновлення конфігурації

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

На жаль, якщо усліпу відновити конфігурацію, не розбираючи, що змінювати, а що — ні, усі доопрацювання ви обов’язково втратите. На щастя, бухгалтерські звіти в нових релізах змінюються вкрай рідко. Адже звіти, по суті, є відображенням даних обліку, а не власне даними. Отже, бухгалтерські звіти не завжди обов’язково оновлювати стандартним оновленням. Розповім про те, як уберегти зроблені у звітах доопрацювання при черговому оновленні конфігурації.

Отже, насамперед уважно читаємо текстовий файл («

update»), що додається до оновлення, з описом унесених до нового релізу змін. Переконуємося в тому, що звіти в новому релізі не змінюються. Якщо деякі звіти зазнали змін, записуємо їх назви на аркуш паперу.

Зробивши архівну копію робочої бази даних, починаємо її оновлення. Відкриваємо базу в Конфігураторі, у меню «

Конфигурация» вибираємо пункт «Объединение конфигураций». У вікні «Открыть файл конфигурации» вибираємо файл метаданих 1Cv7.MD нового релізу конфігурації. Програма здійснить аналіз змін у структурі документів, довідників, звітів та обробок і виведе на екран показане на рис. 5 вікно.

Важливо!

Якщо звіти в новому релізі не змінювалися, зніміть позначку з пункту «Отчеты» (див. рис. 5).

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

Переконайтеся, що перемикачі у вікні об’єднання конфігурацій стоять на реквізитах «

Загружаемая конфигурация» та «Замещать объекты», і клацніть по кнопці «ОК». Конфігурацію буде оновлено, але звіти зі зробленими вами доопрацюваннями залишаться без змін.

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

 

Вибравши програму для ведення обліку, ви вибираєте засіб автоматизації, а не готове рішення безпосередньо для вашої організації. Виняток становлять лише програми, написані на замовлення саме для вашого підприємства або підприємства з аналогічною специфікою діяльності. Інакше кажучи, купуючи типову конфігурацію, будьте впевнені: нехай і мінімальні, але корективи внести до неї доведеться. Це стосується будь-якої бухгалтерської програми, чи то «1С:Бухгалтерія для України», чи то будь-яка інша програма з типовою конфігурацією.

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