ДОДАВАННЯ ВИДІВ РОЗРАХУНКІВ У конфігурації

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

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

Послідуємо і ми цієї лінії поділу ВР Відкриємо конфігурацію, перемістимося на закладці Метадані в розділ Види розрахунків і введемо нові ВР, а результат відобразимо на рис 77

Рис 77 ВР співробітників з довідника Сотруднікі_2

За наявною у нас інформацією ми можемо поки що призначити введенням ВР зазначений у табл 72 пріоритет, і привласнити ідентифікаторам ВР імена і синоніми

Зауваження ВР зберігаються у файлі конфігурації системи 1CV7MD

717&nbsp&nbsp&nbsp ВІ Д РОЗРАХУНКУ ПОЧАТКОВЕ САЛЬДО

7361 ВЛАСТИВОСТІ ВИДУ РОЗРАХУНКУ ПОЧАТКОВЕ САЛЬДО

Задамо їх відповідно до рис 78

Рис 78 Властивості ВР Початкове сальдо

Це простий за властивостями ВР Він не є витісняючим, довгим або залежним Правда, він є обовязковим і самовитесняющімся Дати початку та закінчення розрахунків з ВР Початкове сальдо всіх співробітників однакові Для визначеності встановимо їх рівними дату початку поточного періоду, що повертається методом ЖР НачалоТекущегоПеріода

Зауваження  Ідентифікатор, синонім і коментар ВР виводяться наступними повідомленнями:

Повідомити (ВідРасчетаНачСальдо_2Код) Повідомити (” + ВідРасчетаНачСальдо_2) Повідомити (ВидРасчетаНачСальдо_2Наименование)

Результат:

НачСальдо_2

Початкове сальдо

Борг за підприємством або співробітником

7362 МОДУЛЬ ВИДУ РОЗРАХУНКУ ПОЧАТКОВЕ САЛЬДО

Проста і формула розрахунку результату ВР Початкове сальдо:

// начСальдоСтар початкове сальдо попереднього розрахункового періоду начСальдоНовое = начСальдоСтар + Дебет Кредит + Сторно

У нашому випадку

Дебет = Оклад_2 | Таріф_2 + ПреміяКоеф_2 + ПреміяСум_2 + Премія 1234_2 Кредит = НДФЛ_2 + ВБанк_2

/ / Сторно результати розрахунків, що виникли при виправленні помилок

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

У модуль ВР Початкове сальдо включимо наступний код: функція НачСальдо (Співробітник, нтп) далі

процедура ПровестіРасчет () / / Виконується при проведенні розрахунку

/ / Результат, Обєкт атрибути ЖЗ

Результат = НачСальдо (Обєкт, НачалоТекущегоПеріода ()) КонецПроцедури

/ / Вважає початкове сальдо

функція НачСальдо (Співробітник, нтп)

ЖЗ = СоздатьОбект (ЖурналРасчетовЗарплата_2) сальдо = 0

жзВибратьПеріодПоОбекту (Співробітник, нтп1) поки жзПолучітьЗапісь () = 1 цикл

якщо жзВидРасчВходитВГруппу(ГруппаРасчетовВсеУдержания_2) = 1 тоді сальдо = сальдо жзРезультат

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

сальдо = сальдо жзРезультат

інакше / / Дебет або Сторновані розрахунок сальдо = сальдо + жзРезультат

КонецЕсли

конецЦікла / / Поки повернення сальдо

КонецФункции / / НачСальдо

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

У нашому випадку в групу ВсеУдержанія_2 увійде лише ВР НДФЛ_2 (рис 79), і ми замість рядка коду

якщо жзВидРасчВходитВГруппу(ГруппаРасчетовВсеУдержания_2) = 1 тоді могли б записати

якщо жзВідРасч = ВідРасчетаНДФЛ_2 тоді

Рис 79 Нова група ВР ВсеУдержанія_2

Однак щоб зберегти працездатність коду на випадок додавання нових утримань, залишимо його без змін Звичайно, потрібно завжди памятати: кожне нове утримання повинне бути додано в групу ВсеУдержанія_2, інакше ВР Початкове сальдо і всі інші посилаються на цю групу програми будуть давати невірні результати

Можливість включення ВР в існуючі в конфігурації групи надається 1С вже при введенні ВР (див рис 78) Однак щоб це дію виконувати усвідомлено, потрібно мати інформацію, які групи і для яких цілей використовуються Її можна зосередити в описі групи ВР (рис 710), коректуючи його кожного разу при додаванні або видаленні посилань на групу

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

Як ми раніше умовилися, введення розрахунків з ВР Початкове сальдо буде здійснюватися безпосередньо з модуля форми списку ЖЗ Це виконується методами ЖР Нова, УстановітьРеквізіт і Записати Специфіка методу Записати в тому, що він не перевіряє правила витіснення та перерахунку ВР, навіть якщо вони є Оскільки ВР Початкове сальдо є самовитесняющімся, то треба або заборонити введення початкового сальдо, якщо розрахунок з таким ВР обєкт вже має, або замінити існуючий

на новий Ми зупинимося на першому варіанті Він логічний, оскільки початкове сальдо обчислюється за даними закритого, віднесеного до архіву періоду і не повинно змінюватися в часі

При введенні ВР Початкове сальдо відразу ж будемо обчислювати і фіксувати його значення, викликаючи метод ЖР ВиполнітьРасчет і встановлюючи в атрибут ЖР Фіксована число 1

7363 ДОКУМЕНТ НачПеріода_2

Призначення документа НачПеріода_2 це фіксація факту зміни розрахункового періоду: кожна планова зміна повинна супроводжуватися розрахунком початкового сальдо співробітників На документ НачПеріода_2 згідно табл 72 повинні посилатися розрахунки з ВР НачСальдо_2 Це посилання фіксується атрибутами ЖР Документ і РодітельскійДокумент і носить формальний характер, бо без неї не можна ввести розрахунок в ЖЗ З іншого боку, такий документ корисний, оскільки в ньому будуть відображатися такі важливі операції, як зміни розрахункових періодів

Документ будемо фіксувати в новому журналі Розрахунки, в якому будуть розміщуватися і все інші, крім Табеля, документи, що вводять розрахунки в ЖЗ Зарплата_2

Найзручніше факт зміни розрахункового періоду було б виконувати в зумовленою процедурі модуля форми ЖР ПріСменеРасчетногоПеріода Однак такої процедури немає, але натомість є однойменна процедура глобального модуля Саме в неї ми помістимо виклик процедури ФіксіроватьСменуРП Щоб гарантувати виклик цієї процедури після виконання всіх перевірок, код її виклику потрібно розташувати в кінці зумовленою процедури ПріСменеРасчетногоПеріода

Виклик процедури ФіксіроватьСменуРП може бути таким:

/ / Це попередній опис розмістимо до коду

/ / Зумовленою процедури ПріСменеРасчетногоПеріода процедура ФіксіроватьСменуРЩжз, період) далі

процедура ПріСменеРасчетногоПеріода (ЖРН, Період)

/ / Міняємо розрахунковий період в ЖЗ Зарплата_2 якщо ЖрнВід () = Зарплата_2 тоді

ФіксіроватьСменуРЩЖрн, Період) КонецЕсли

КонецПроцедури / / ПріСменеРасчетногоПеріода

Саму ж процедуру ФіксіроватьСменуРП розташуємо в кінці глобального модуля: процедура ФіксіроватьСменуРЩжз, період)

КонецПроцедури / / ФіксіроватьСменуРП

/ / Тіло процедури ФіксіроватьСменуРП

Написання коду процедури завершимо після створення документа НачПеріода_2, в табличній частині якого визначимо 3 реквізиту: НовПеріод, ДатаУстановкі і Користувач Першому і третьому призначимо символьний тип з довжиною рядка в 15 символів, а другий тип Дата Такі реквізити дозволять нам фіксувати не тільки факт зміни розрахункового періоду, а й обличчя, зміну здійснила

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

Рис 711 Діалог форми документа Початкове сальдо

Інші властивості документа визначимо відповідно до рис 712

Рис 712 Властивості документа НачПеріода_2

Тепер ясний і текст процедури ФіксіроватьСменуРП:

/ / Заносить дані про зміну розрахункового періоду в документ НачПеріода_2 процедура ФіксіроватьСменуРП (ЖЗ, період)

// період змінна типу РасчетнийПеріод перем док

док = СоздатьОбект (ДокументНачПеріода_2)

/ / Номер документа не змінюється і завжди дорівнює одиниці докНайтіПоНомеру (1, Дата (0))

якщо докВибран () = 1 тоді

докНоваяСтрока () / / Додаємо в документ новий рядок докНовПеріод = жзОпісательПеріода (періодДатаНачала)

/ / Дата зміни розрахункового періоду ЖЗ Зарплата_2

докДатаУстановкі = ТекущаяДата ()

докПользователь = ІмяПользователя () докЗапісать ()

/ / Відкриваємо документ НачПеріода_2 під номером 1 для контрольного перегляду

ОткритьФорму (докТекущійДокумент ()) інакше

Попередження (Документа НачПеріода_2 під номером 1 немає”) КонецЕсли

КонецПроцедури / / ФіксіроватьСменуРП

Щоб запобігти інтерактивне редагування документа НачПеріода_2, постачимо модуль форми документа наступними зумовленими процедурами:

процедура ПріУдаленііСтрокі ()

Попередження (В цьому документі не можна видаляти записи”) СтатусВозврата (0)

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

процедура ПріВводеСтрокі ()

Попередження (В цей документ не можна додавати записи”) СтатусВозврата (0)

КонецПроцедури / / ПріВводеСтрокі

процедура відкриття ()

формаПанельІнструментов (0) / / Відключаємо панель інструментів КонецПроцедури / / прочинене

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

Для створення і запису в журнал Розрахунки документа НачПеріода_2 з номером 1 скористаємося обробкою Проба, розмістивши в ній на цей раз наступний код:

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

док = СоздатьОбект (ДокументНачПеріода_2)

/ / Номер документа не змінюється і завжди дорівнює одиниці докНайтіПоНомеру (1, Дата (0))

якщо докВибран () = 1 тоді

Попередження (Документ НачПеріода_2 під номером 1 вже є”) інакше

докНовий () докНомерДок = 1

докДатаДок = ТекущаяДата () докЗапісать () ОткритьФорму (ЖурналРасчети)

КонецЕсли

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

Рис 713 Створено документ НачПеріода_2 під номером 1

Надалі інших документів виду НачПеріода_2 створюватися не буде, а всі записи про зміну розрахункових періодів будуть направлятися в документ № 1

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

*

*