Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Вытеснение по периоду действия




Вытеснение по периоду действия

В режиме «1С: Предприятие»

Теперь посмотрим, как работает механизм вытеснения по периоду действия.

Для этого нам понадобится создать документ Начисления сотрудникам

№ 3 (рис. 18. 11).

Этим документом мы зафиксируем тот факт, что Гусаков не выходил на работу с 1 по 10 июля.

Очевидно, что в этом случае потребуется пересчитать его оплату по окладу и как следствие начисленную премию.


 

Нажмем Провести и закрыть и затем сформируем отчет Перерасчет

(рис. 18. 12).

 

 

Как вы видите, в перерасчет попала запись о начислении оклада Гусакову. Это явилось результатом работы механизма вытеснения по периоду действия, ведь вид расчета Невыход вытесняет у нас вид расчета Оклад.

Обратите внимание, что в перерасчет попала и запись о начислении премии Гусакову.

Если вы помните, при создании предопределенных видов расчета мы указали, что результат вида расчета Премия будет зависеть от изменения результата вида расчета Невыход. Эта зависимость косвенная, но поскольку явно указали такую зависимость, платформа ее отследила.

Перепроведем документы Начисления сотрудникам № 1 и № 2 и убедимся, что таблица перерасчета очистилась.


1С: Предприятие 8. 3. Практическое пособие разработчика

 

Процедура расчета записей регистра расчета

В режиме «Конфигуратор»

До сих пор мы с вами просто заносили в регистр расчета Начисления

записи о том, что необходимо выполнить какой-либо вид расчета.

Но каким именно образом получать эти результаты, мы не говорили.

Теперь настало время описать алгоритмы формирования различных видов расчетов.

Поскольку эти алгоритмы нужно будет использовать не только в документе Начисление сотрудникам, удобнее всего будет разместить их в отдельном общем модуле.

Откроем в конфигураторе текст обработчика проведения документа НачисленияСотрудникам и добавим в него после завершения создания движений в регистре Начисления вызов процедуры РассчитатьНачис- ления() из общего модуля ПроведениеРасчетов (листинг 18. 2).

листинг 18. 2. Обработчик проведения документа

«НачисленияСотрудникам»

 


Обратите внимание: при проведении документа мы сначала запи- сываем движения, сформированные документом, в регистр (Движения. Начисления. Записать()), а затем передаем этот набор записей регистра в процедуру расчета РассчитатьНачисления(), которую мы создадим в общем модуле ПроведениеРасчетов.

Эту процедуру мы вызываем сначала для расчета первичных записей (Оклад), а затем для расчета вторичных (Премия).

Процедура расчета на основе описанных в ней алгоритмов и данных, содержащихся в записях регистра, должна сформировать значения ресурсов регистра.

После того как ресурсы будут рассчитаны, мы перезаписываем набор записей регистра без формирования записей перерасчета (второй параметр в методе Записать() – Истина).

Перед вызовом процедуры из общего модуля мы с помощью запроса формируем массив сотрудников, перечисленных в документе, чтобы передать его в вызываемую процедуру.

Для параметра запроса ТекущийДокумент устанавливаем значение стандартного реквизита документа – Ссылка. Используя метод запроса Запрос. Выполнить(). Выгрузить(), выгружаем результат запроса в таблицу значений (переменную ТаблЗнач). Затем формируем массив МассивСотрудников, содержащий колонку Сотрудник из этой таблицы значений.

Теперь создадим в ветке Общие новый общий модуль ПроведениеРас- четов.

Установим флажок Вызов сервера для видимости его экспортных процедур и функций (рис. 18. 13).


Рис. 18. 13. Свойства общего модуля

 

Добавим в него заготовку процедуры РассчитатьНачисления (листинг 18. 3).

листинг 18. 3. Заготовка процедуры «РассчитатьНачисления»

 

Алгоритм расчета начислений будет различным при расчете первичных (вид расчета – Оклад) и вторичных записей (вид расчета – Премия), и каждая из его частей будет находиться в своей ветке условия Если...

При расчете первичных записей нам понадобятся данные графика из регистра расчета, поэтому добавим в первую ветку условия запроса по виртуальной таблице регистра расчета РегистрРасчета. Начис- ления. ДанныеГрафика (листинг 18. 4).


листинг 18. 4. Изменение процедуры «РассчитатьНачисления»

Процедура РассчитатьНачисления(НаборЗаписейРегистра, ТребуемыйВидРасчета,

СписокСотрудников) Экспорт

Регистратор = НаборЗаписейРегистра. Отбор. Регистратор. Значение;

// Рассчитать первичные записи

Если ТребуемыйВидРасчета = ПланыВидовРасчета. ОсновныеНачисления. Оклад Тогда

Запрос = Новый Запрос; Запрос. Текст =

" ВЫБРАТЬ

|   НачисленияДанныеГрафика. ЗначениеПериодДействия КАК Норма,

|   НачисленияДанныеГрафика. ЗначениеФактическийПериодДействия КАК Факт,

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...