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