ПРОСТИЙ ЗВІТ ДЛЯ ДОВІДНИКА

5111 ДІАЛОГ І ТАБЛИЦЯ ЗВІТУ

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

Для завдання значень зміннихобріоклдіалог обробки Проба наведемо до представленого на рис 556 увазі

Рис 556 Діалог звіту за довідником Співробітники _2

Мінлива обр має різновид типу СправочнікОбразованіе_2, а зміннаокл числовий тип формату 102

У таблиці звіту будемо виводити відображені на рис 557 відомості

Рис 557 Макет звіту про співробітників

У секціяхзаг, підрідатаОтчтип виведених повідомлень шаблон, в секції співрвираз Читачам, які відчувають труднощі при побудові таблиць звіту, рекомендуємо знову звернутися до розд 19, в якому конструюється звіт про неперіодичних константах

5112 МОДУЛЬ ЗВІТУ

Модуль звіту, як це вже повелося, містить повязану з кнопкою Пуск процедуру Виконати, що витягує на цей раз дані про співробітників і спрямовуючу їх у щойно збудовану таблицю Сотруднікі_2 Крім процедури Виконати, включимо в модуль звіту зумовлену процедуру прочинене, яка встановлює початкові значення змінних діалогуобріоклВисновок секціїподрздійснюватимемо, якщо в підрозділі є хоча б один співробітник, що задовольняє умовам, заданим зміннимиобр і оклДля скорочення коду розмістимо його частина у функції ЕсліПродолжіть

Алгоритмформування звіту:

1 Початок

2 Створити обєктсСотр_2, що має різновид типу СправочнікСотруднікі_2

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

4 Відкрити вибірку з довідника Сотруднікік_2

5 Якщо поточний елемент це група, то знайти, чи потрібно виводити секціюпідр

Критерій простий: якщо в групі є хоча б один співробітник, що задовольняє умовам, заданим зміннимиобр іокл,то її імя виводиться в секціїпідр Відповідь на питання, чи потрібно виводити імя групи (підрозділу), повертає

функція НайтіФлагПодр Попередньо, коли знайдено перший підрозділ (чіслоПодр= 1), створюється обєкттабл,має тип Таблиця, і виводиться заголовок звіту секція заг

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

7 Після завершення вибірки, якщо в звіті є дані про співробітників (чіслоПодр> 0), вивести дату звіту і показати звіт, інакше вивести попередження про те, що звіт порожній

8 Кінець

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

процедура відкриття () перем відобра ОчістітьОкноСообщеній ()

відобра = СоздатьОбект (СправочнікОбразованіе_2)

відОбрВибратьЕлементи () відОбрПолучітьЕлемент ()

/ / Використовуємо в якості початкового значення змінної обр

// перший елемент довідника Образованіе_2 обр = відОбрТекущійЕлемент ()

окл = 20000 / / руб

КонецПроцедури / / прочинене

функція ЕсліПродолжіть (сСотр_2) далі функція НайтіФлагПодр (кодПодр) далі

процедура Виконати () / / Повязана з кнопкою Пуск обробки Проба перем сСотр_2, співр, код, дП, ставка, підр, текПодр

перем табл, чіслоПодр

/ / Створюємо обєкти сСотр_2 і табл

сСотр_2 = СоздатьОбект (СправочнікСотруднікі_2)

/ / Дата для періодичного реквізиту Оклад довідника Сотруднікі_2 сСотр_2ІспользоватьДату (РабочаяДата ())

/ / Позиціонуємо на першого запису довідника Сотруднікі_2

сСотр_2ВибратьЕлементи (1)

//

Задаємо вибірку з урахуванням ієрархії

чіслоПодр = 0

//

Число обраних підрозділів

/ / Включаємо у вибірку всі підлеглі елементи

поки сСотр_2ПолучітьЕлемент (1) = 1 цикл якщо сСотр_2ЕтоГруппа () = 1 тоді

/ / Знайдемо, чи потрібно виводити секцію подр

якщо НайтіФлагПодр (сСотр_2Код) = 0 тоді

продовжити / / У цьому підрозділі немає співробітників, інакше / / задовольняють умовам обр і окл

чіслоПодр = чіслоПодр + 1

/ / Якщо є хоча б один співробітник, що задовольняє заданим умовам,

/ / То починаємо формувати тотчет

якщо чіслоПодр = 1 тоді

табл = СоздатьОбект (Таблиця)

/ / Звяжемо зміннутабл з таблицею Сотруднікі_2,

/ / Містить макет звіту таблІсходнаяТабліца (Сотруднікі_2)

/ / При виведенні застосовуємо задані за умовчанням параметри таблиці

/ / Для їх зміни слід звернутися до методу Опції таблВивестіСекцію (заг) / / Виводимо секцію заг

КонецЕсли

підр = сСотр_2Наіменованіе таблВивестіСекцію (підр) продовжити

КонецЕсли

КонецЕсли

якщо ЕсліПродолжіть (сСотр_2) = 1 тоді

продовжити / / Перехід на початок циклу КонецЕсли

співр = сСотр_2Наіменованіе

код = сСотр_2Код

якщо ПустоеЗначеніе (сСотр_2ПріказПріем) = 0 тоді

/ / Дату працевлаштування беремо з відповідного наказу про прийом на роботу дП = сСотр_2ПриказПриемДатаПриема

інакше

дП = -; КонецЕсли

ставка = сСотр_20клад

/ / Висновок черговий рядки в звіт таблВивестіСекцію (співр)

конецЦікла / / Поки

якщо чіслоПодр = 0 тоді

Попередження (Співробітників, що відповідають заданим умовам, немає”)

інакше / /

У звіті є співробітники

таблВивестіСекцію (датаОтч)

//

Дата звіту

/ / Забороняємо редагування результуючої таблиці

табл ТолькоПросмотр (1)

/ / Задаємо в методі Показати заголовок вікна з результуючої таблицею таблПоказать (Вибірка з довідника Сотруднікі_2)

КонецЕсли

КонецПроцедури / / Виконати Результат наведено в табл 57

/ / Повертає 1, якщо співробітник не задовольняє вимогам обр іокл

функція ЕсліПродолжіть (сСотр_2)

якщо (сСотр_2Оклад <окл) або (сСотр_2.Образованіе <> обр) тоді

повернення 1 / / Умови, задані в діалозі, не виконуються інакше

повернення 0 / / Цикл не переривається

КонецЕсли

КонецФункции / / ЕсліПродолжіть

/ / Функція НайтіФлагПодр поверне 1, якщо в підрозділі є

/ / Хоча б один співробітник, що задовольняє умовам,

/ / Заданих змінними обр і окл,або 0-в іншому випадку Функція НайтіФлагПодр (кодПодр)

перем сСотр_2а

сСотр_2а = СоздатьОбект (СправочнікСотрудіікі_2)

/ / Дата для періодичного реквізиту Оклад довідника Сотруднікі_2 сСотр_2аІспользоватьДату (РабочаяДата ())

/ / Знайдемо групу Шукаємо у всьому довіднику

сСотр_2аНайтіПоКоду (кодПодр, 0)

/ / Задаємо батька, в межах якого здійснюватиметься подальша вибірка сСотр_2аИспользоватьРодителя(сСотр_2аТекущийЭлемент())

/ / Або простіше: сСотр_2аИспользоватьРодителя (сСотр_2а)

сСотр_2аВибратьЕлементи (1) / / Задаємо вибірку з урахуванням ієрархії

/ / Включаємо у вибірку всі підлеглі елементи поки сСотр_2аПолучітьЕлемент (1) = 1 цикл

якщо ЕсліПродолжіть (сСотр_2а) = 0 тоді

повернення 1

//

Співробітник, що відповідає умовам

КонецЕсли

//

обр і окл, знайдений

конецЦікла

повернення 0 / / Ні потрібного співробітника КонецФункции / / НайтіФлагПодр

Таблиця 57

Співробітники, що мають вищу освіту і оклад,  не менший 2000 руб

Співробітник

Код

Дата працевлаштування

Оклад

Підрозділ 01 Цех

Підрозділ 01/1

Агальцов Юрій Олексійович

111

2900

Підрозділ 01/2

Кузьміна Раїса Миколаївна

122

2700

Підрозділ 02 Цех

Абрамова Лариса Сергіївна

201

2000

Горюнова Уляна Валеріївна

2010

201101

2700

Дата звіту 291101

Джерело: Бартеньев О В 1С: Підприємство: програмування для всіх Базові обєкти та розрахунки на одній дискеті М: Діалог-МІФІ, 2005 464 с

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*