АТРИБУТИ І МЕТОДИ ПРАВИЛ ПЕРЕРАХУНКУ

7161 АТРИБУТИ ПРАВИЛ ПЕРЕРАХУНКУ

Правило перерахунку, як зазначено в розд 77, при введенні ведучого розрахунку обнуляє значення атрибута Розрахована у залежних розрахунків

Кожне правило має 4 атрибута: Код, Найменування, Тип і КолічествоПеріодов Їх опис дано в табл 720

Атрибути правил перерахунку

Таблиця 720

Атрибут

Опис

Код

Рядок, що містить ідентифікатор правила перерахунку (розд 77)

Найменування

Рядок, що містить коментар правила перерахунку

Тип

Зовсім розрахунки мають бути перерассчитать:

• якщо Тип = 0 в поточному розрахунковому періоді ЖР

• якщо Тип = 1 в тому ж розрахунковому періоді, до якого належить вводиться провідний розрахунок

• якщо Тип = 2 в декількох періодах, наступних за періодом, до якого належить вводиться провідний розрахунок (розд 77)

Число період, що охоплює правилом, заноситься в атрибут КолічествоПеріодов правила перерахунку

КолічествоПеріодов

Число періодів, які охоплюються правилом перерахунку Може бути більше одиниці, тільки коли Тип = 2

ПрикладВиводяться атрибути правила перерахунку КвартальнаяПремія

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

ОчістітьОкноСообщеній () / / Очищаємо вікно повідомлень

ПП = ПравилоПерерасчетаКвартальнаяПремия Повідомити (Код (ідентифікатор): + ППКод) Повідомити (Найменування (коментар): + ППНаіменованіе) Повідомити (Тип = + ПравилоПерерасчетаКвартальнаяПремияТип) Повідомити (КоЛічествоПеріодов = + ППКолічествоПеріодов)

КонецПроцедури / / Виконати

Результат:

Код (ідентифікатор): КвартальнаяПремія Найменування (коментар): Для квартальної премії Тип = 2

КолічествоПеріодов = 3

7162 МЕТОДИ ПРАВИЛ ПЕРЕРАХУНКУ

Знаходяться в табл 721

Методи правил перерахунку

Таблиця 721

Метод

Опис

колВед= ППКолічествоВедущіх ()

Повертає кількість провідних ВР в правилі перерахунку ПП

прапор = ППІмеетВедущій (ВР)

Поверне 1, якщо вид розрахунку ВР входить в правило перерахунку ПП як провідний

ВР = ПППолучітьВедущій (ном)

Повертає вид розрахунку ВР, що входить до правило перерахунку ПП як провідний під номером ном

ППДобавітьКакВедущій (ВР)

Додає в правило перерахунку ПП вид розрахунку ВР в якості ведучого

Метод

Опис

ППУдалітьВсеВедущіе ()

Видаляє з правила перерахунку ПП всі провідні ВР

колПод = ППКолічествоПодчіненних ()

Повертає кількість підлеглих (залежних) ВР у правилі перерахунку ПП

прапор = ППІмеетПодчіненний ()

Поверне 1, якщо вид розрахунку ВР входить в правило перерахунку ПП як підлеглий

ВР = ПППолучітьПодчіненний (ном)

Повертає вид розрахунку ВР, що входить до правило перерахунку ПП як підлеглий під номером ном

ППДобавітьКакПодчіненний ()

Додає в правило перерахунку ПП вид розрахунку ВР в якості підлеглого

ППУдалітьВсеПодчіненние ()

Видаляє з правила перерахунку ПП все залежні ВР

флагТек =

ПравилоПерерасчетаПрименять

([ФлагНов])

При введенні провідних ВР правила перерахунку застосовуються, якщо флагНов = 1, і не застосовуються, якщо флагНов = 0 За замовчуванням флагНов = 1 Повертає поточне, до виклику методу значення прапора застосування правил перерахунку

Зауваження Префікс ПП, спожитий з методами правил перерахунку, може бути довільним

Приклад 1:

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

ОчістітьОкноСообщеній () / / Очищаємо вікно повідомлень

ПП = ПравілоПерерасчетаВБанк_2 колВед = ППКолічествоВедущіх () колПод = ППКолічествоПодчіненних ()

Повідомити (Правило перерахунку + ППКод) Повідомити (Число провідних ВР: + колВед) Повідомити (Число залежних ВР: + колПод) Повідомити (Список провідних ВР:)

для ін = 1 по колВед цикл Повідомити (ПППолучітьВедущій (ін) Код)

конецЦікла / / Для Повідомити (Список залежних ВР:) для ін = 1 по колПод цикл

Повідомити (ПППолучітьПодчіненний (ін) Код) конецЦікла / / Для

КонецПроцедури / / Виконати

Результат:

Правило перерахунку ВБанк_2

Число провідних ВР: 6

Число залежних ВР: 1

Список провідних ВР:

НачСальдо_2

Оклад_2

ПреміяКоеф_2

ПреміяСум_2

Премія1234_2

НДФЛ_2

Список залежних ВР: ВБанк_2

Приклад 2У правилі перерахунку ВБанк_2 спочатку видаляються всі ведучі і підлеглі ВР, а потім воно формується заново

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

ОчістітьОкноСообщеній () / / Очищаємо вікно повідомлень ПП = ПравілоПерерасчетаВБанк_2

ВРВед [1] = ВідРасчетаНачСальдо_2 ВРВед [2] = ВідРасчетаОклад_2 ВРВед [3] = ВідРасчетаПреміяКоеф_2 ВРВед [4] = ВідРасчетаПреміяСум_2 ВРВед [5] = ВідРасчетаПремія1234_2 ВРВед [6] = ВідРасчетаНДФЛ_2 ВРПод = ВідРасчетаВБанк_2

ППУдалітьВсеВедущіе () / / Видаляємо провідні ВР ППУдалітьВсеПодчіненние () / / Видаляємо підлеглі ВР

/ / Контроль

Повідомити (Число провідних ВР: + ППКолічествоВедущіх ()) Повідомити (Число підлеглих ВР: + ППКолічествоПод4іненних ()) для ін = 1 по 6 цикл

ППДобавітьКакВедущій (ВРВед [ін]) конецЦікла / / Для ППДобавітьКакПодчіненний (ВРПод)

/ / Контроль

Повідомити (Число провідних ВР: + ППКолічествоВедущіх ()) Повідомити (Число підлеглих ВР: + ППКолічествоПодчіненних ())

КонецПроцедури / / Виконати

Після введення розрахунків інтерфейс ЖЗ надає можливість розрахувати зарплату співробітників, сформувати їх розрахункові листки і відомість про перерахування в банк Для цих цілей з кнопками діалогу (мал 721) Розрахунок зарплати, повязані відповідно процедури РасчетЗП, ПечатьРЛ і ВедомостьБанк Це прості процедури, але для повноти викладу ми напишемо і приведемо їх код Додатково розглянемо запит, який повертає розподіл результатів розрахунків ЖЗ за господарськими операціями

7171 РОЗРАХУНОК ЗАРПЛАТИ

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

Оскільки розрахунок з ВР НачСальдо_2 фіксований, то в створюваній процедурі записи з таким ВР не розраховуватимуться зовсім Також не розраховуються записи з нескасованої річний правкою Крім того, закладемо в процедуру код, перевіряючий присутність у обєкта обовязкового розрахунку з ВР НДФЛ2 Відповідно до документа Табель наявність одного обовязкового розрахунку, наприклад НДФЛ_2, говорить про те, що в ЖЗ є і все інші обовязкові розрахунки обєкта, тобто розрахунки з ВР Оклад_2 і ВБанк_2

Після всього сказаного текст процедур розрахунку зарплати може бути таким:

/ / Процедура РасчетОбекта розраховує всі записи обєкта ЖЗ,

/ / Крім розрахунку з ВР НачСальдо_2

/ / Оскільки процедура присутній в модулі форми списку ЖЗ,

/ / То всі методи ЖР викликаються без префікса процедура РасчетОбекта (співр)

перем прапор, СОТР2

/ / Прапор буде дорівнювати одиниці, якщо у співробітника є розрахунок з ВР Оклад_2 прапор = 0

СОТР2 = співр / / Запамятовуємо для виведення повідомлення

/ / Відкриваємо вибірку розрахунків обєкта, зареєстрованих в поточному періоді ВибратьПеріодПоОбекту (співр)

поки ПолучітьЗапісь () = 1 цикл

якщо відРасч = ВідРасчетаНДФЛ_2 тоді прапор = 1

КонецЕсли

/ / Фіксовані та виправлені записи розраховувати немає сенсу якщо Фіксована + Виправлена ​​= 0 тоді

Розрахувати () КонецЕсли

конецЦікла / / Поки якщо прапор = 0 тоді

Повідомити (Оформіть табель співробітнику + сотр2Наіменованіе) КонецЕсли

КонецПроцедури / / РасчетОбекта процедура СоздатьСЗнач (сЗначСотр) далі

процедура РасчетЗП ()

перем співр, сЗначСотр, ін ОчістітьОкноСообщеній ()

якщо хто = 1 тоді / / Розрахунок зарплати обраного співробітника Стан (Розрахунок зарплати співробітника + ОбектНаіменованіе)

РасчетОбекта (Обєкт)

/ / Розрахунок латки співробітників обраного підрозділу

/ / Використовуючи метод ЖР ВибратьПоЗначенію, занесемо (без повторів) значення

/ / Атрибута Обєкт розрахунків обраного підрозділу в список сЗначСотр

інакше

Стан (Формуємо список співробітників підрозділу + ОбектРодітель) СоздатьСЗнач (сЗначСотр) / / Формуємо список співробітників підрозділу для ін = 1 по сЗначСотрРазмерСпіска () цикл

співр = сЗначСотрПолучитьЗначение (ін)

Стан (Розрахунок зарплати співробітника + сотрНаіменованіе) РасчетОбекта (співр)

конецЦікла / / Для

/ / Поправляємо ятати відбору УстановітьОтбор (Батько, сотрРодітель)

КонецЕсли КонецПроцедури / / РасчетЗП

процедура СоздатьСЗнач (сЗначСотр) / / Формуємо список співробітників підрозділу перем співр, пров

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

пер = ТекущійПеріод ()

ВибратьПоЗначенію (Батько, ОбектРодітель, пер, пер)

співр = Обєкт / / Перший обєкт вибірки поки ПолучітьЗапісь () = 1 цикл

/ / Значення в список сЗначСотр заносяться без повторів

якщо співр = Обєкт тоді продовжити

інакше

сЗначСотрДобавитьЗначение (співр) співр = Обєкт

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

/ / Додаємо посилання на останнього співробітника обраного підрозділу сЗначСотрДобавитьЗначение (співр)

КонецПроцедури / / СоздатьСЗнач

Зауваження:

1 Створений код працює істотно швидше, ніж аналогічний вбудований в 1С

2 Процедури РасчетОбекта і РасчетЗП додаються в модуль форми списку ЖЗ Зарплата_2

3 Вбудована процедура Стан виводить в рядок станів, розташовану в нижній лівій частині екрана, занесене в символьний параметр процедури повідомлення

4 Співробітників обраного підрозділу можна було б отримати з довідника Сотруднікі_2 і потім передати їх процедурі РасчетОбекта, вживши, наприклад, наступний код:

процедура РасчетЗЩ)

перем пер, співр, сСотр_2 ОчістітьОкноСообщеній ()

якщо хто = 1 тоді / / Розрахунок зарплати обраного співробітника Стан (Розрахунок зарплати співробітника + ОбектНаіменованіе) РасчетОбекта (Обєкт)

інакше

сСотр_2 = СоздатьОбект (СправочнікСотруднікі_2) сСотр_2ИспользоватьРодителя (ОбектРодітель) сСотр_2ВибратьЕлементи ()

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

співр = сСотр_2ТекущійЕлемент () Стан (Розрахунок зарплати співробітника + співр) РасчетОбекта (співр)

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

/ / Поправляємо ятати відбору УстановітьОтбор (Батько, сотрРодітель)

КонецЕсли

КонецПроцедури / / РасчетЗП

Критерій вибору коду в даному випадку його швидкодію Питання виміру часу обчислень обговорюється в розд 283

5 На період налагодження вам може знадобитися наведений нижче код, який скасовує ручну правку і обнуляє результат розрахунку з ВР ВБанк_2 (перерахування в банк):

/ / Скасовує ручну правку і заносить 0 в результат розрахунку з ВР ВБанк_2

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

ЖЗ = СоздатьОбект (ЖурналРасчетовЗарплата_2) жзВибратьПеріод (жзНачалоТекущегоПеріода ()) поки жзПолучітьЗапісь () = 1 цикл

якщо жзІсправлена ​​= 1 тоді

жзОтменітьІсправленіе () / / Обнуляємо прапор ручної правки КонецЕсли

якщо жзВідРасч = ВідРасчетаВБанк_2 тоді

жзРезультат = 0 КонецЕсли

конецЦікла / / Поки КонецПроцедури / / Виконати

Джерело: Бартеньев О В 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>

*

*