Журналы расчетов
Ссылка на журнал расчетов
ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");
Ввод записей в журнал расчетов
Записи в журнал расчетов обычно вводятся при проведении документов.
ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата"); ЖЗ.УстановитьРеквизит("Рассчитана",1); ЖЗ.ВвестиРасчет(ВыбрСотрудник, ВидРасчета.Премия, НачалоМесяца, КонецМесяца, ПремияСотруднику);
или
ЖЗ.ЗаписатьРасчет(ВыбрСотрудник, ВидРасчета.Премия, НачалоМесяца, КонецМесяца, ПремияСотруднику);
Отличие метода ЗаписатьРасчет заключается в том, что ввод вытесняющих расчетов приводит к вытеснению только тех расчетов, которые имеют меньший приоритет, а не меньший либо равный, как в случае с методом ВвестиРасчет. Это приводит, в частности, к тому, что за счет применения этого метода расчет не вытесняет «сам себя».
При записи невытесняющего расчета ввод новых записей также происходит «осмотрительно» — новые записи вводятся только в том случае, если в журнале расчетов нет точно такой же записи. Под точно такой же записью здесь подразумевается запись с таким же видом расчета, для того же объекта и с тем же периодом действия.
Перебор записей журнала расчетов
Например, организуем перебор записей с периодом действия в январе.
ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата"); ДатаНач = '01.01.2002'; ДатаКон = '31.01.2002'; ЖЗ.ВыбратьЗаписи(ДатаНач, ДатаКон); Пока ЖЗ.ПолучитьЗапись()=1 Цикл <действия с тек. записью> КонецЦикла;
А теперь организуем перебор записей, введенных в январе.
ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата"); ДатаНач = '01.01.2002'; ЖЗ. ВыбратьПериод(ДатаНач); Пока ЖЗ.ПолучитьЗапись()=1 Цикл <действия с тек. записью> КонецЦикла;
Отличие методов ВыбратьЗаписи и ВыбратьПериод проявляется, если запись введена в другом месяце, но период ее действия лежит в январе. Например, в феврале сотруднику выдают премию за январь. Тогда запись будет введена в феврале (период регистрации), но период ее действия - январь. В первый цикл она попадет, а во второй нет.
Посчитаем все начисления текущего сотрудника за январь:
ВсегоНачислено = 0; ЖЗ.ВыбратьЗаписиПоОбъекту (ТекСотр, ДатаНач, ДатаКон); Пока ЖЗ.ПолучитьЗапись()=1 Цикл Если ЖЗ.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1 Тогда ВсегоНачислено = ВсегоНачислено + ЖЗ.Результат; КонецЕсли; КонецЦикла;
Теперь рассчитаем все записи текущего сотрудника, введеные в текущем месяце:
ЖЗ.ВыбратьПериодПоОбъекту (ТекСотр, ДатаНач); Пока ЖЗ.ПолучитьЗапись()=1 Цикл ЖЗ.Рассчитать(); КонецЦикла;
Рассчитаем все записи по документу, независимо от того, в каком расчетном периоде записи порождались:
ЖЗ.ВыбратьЗаписиПоДокументу (ВыбрДокумент); Пока ЖЗ.ПолучитьЗапись()=1 Цикл ЖЗ.Рассчитать(); КонецЦикла;
Рассчитаем все записи по указанному подразделению. В журнале расчетов указана графа отбора "Подразделение".
ТекПер = ЖЗ.ТекущийПериод(); ЖЗ.ВыбратьПоЗначению ("Подразделение",ВыбрПодразделение, ТекПер, ТекПер); Пока ЖЗ.ПолучитьЗапись()=1 Цикл ЖЗ.Рассчитать(); КонецЦикла;
Удаление записей в журнале расчетов
При отмене проведения документа обычно автоматически удаляются всего его движения, в том числе и введенные записи в журналы расчетов.
Можно также явно удалять записи методом журнала расчетов УдалитьЗапись().
Методы работы с периодом журнала расчетов
НачалоПериода = ЖЗ.НачалоТекущегоПериода(); КонецПериода = ЖЗ.КонецТекущегоПериода(); ПериодСтрокой = ЖЗ.ОписательПериода(НачМес); //например "Январь 2002 г"
Комментарии