Иллюстрированный самоучитель по языку системы 1С:Предприятие

Методы журнала расчетов

ВвестиРасчетНаОсновании

Ввести запись в журнал расчетов на основании произвольного документа.

Синтаксис:

ВвестиРасчетНаОсновании(<Основание>, <Объект>, <ВидРасчета>, <ДатаНачала>,
<ДатаОконч>, <Результат>)

Англоязычный синоним:

InsertCalculationByReason

Параметры:

<Основание> Документ, на основании которого вводится запись (или записи) в журнал расчетов.
<Объект> Объект расчета – элемент справочника, заданного при конфигурировании журнала расчетов.
<ВидРасчета> Вид вводимого расчета – ссылка на агрегатный объект типа "ВидРасчета".
<ДатаНачала> Необязательный параметр. Дата начала действия вводимого расчета. По умолчанию – дата начала текущего расчетного периода журнала расчетов.
<ДатаОконч> Необязательный параметр. Дата окончания действия вводимого расчета. По умолчанию – дата окончания текущего расчетного периода журнала расчетов.
<Результат> Необязательный параметр. Результат расчета. По умолчанию – ноль.

Возвращаемое значение:

Число: 1 – если операция успешно выполнена; 0 – в противном случае.

Описание:

Метод предназначен для ввода строк в журнал расчетов. Работает так же, как и метод ВвестиРасчет, но при этом реквизит Документ вводимых строк журнала расчетов заполняется значением параметра <Основание>. Использование метода ВвестиРасчетНаОсновании – один из способов непосредственно установить родительские отношения между любым документом и вводимыми записями журнала расчетов.

Важно! Метод ВвестиРасчетНаОсновании можно применять только для тех объектов, которые созданы функцией СоздатьОбъект. Это значит, например, что его нельзя использовать непосредственно (без точки) в форме журнала расчетов или в модуле видов расчета.

Пример:

// Модуль выполняется при проведении документа расчета "Начало месяца"

Процедура ПровестиДокумент()

// Если можно проводить...

Если (МожноПроводить = 1) Тогда

// Журнал расчетов — Зарплата

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

ЖРКомп = СоздатьОбъект("ЖурналРасчетов.Компенсации");

// конец и начало текущего периода

КТП = ЖР.КонецТекущегоПериода();

НТП = ЖР.НачалоТекущегоПериода();

Сотр = СоздатьОбъект("Справочник.Сотрудники");

Спр = СоздатьОбъект("Справочник.ПриказыДлительногоДействия");

Сотр.ВыбратьЭлементы();

Пока Сотр.ПолучитьЭлемент() > 0 Цикл

// расчет "приказов длительного действия"

// типа доплат исп. листов, штрафов и пр...

Спр.ИспользоватьВладельца(Сотрудник);

Спр.ВыбратьЭлементы();

// предполагается, что в каждом приказе есть

// реквизиты Начало, Окончание и Сотрудник

Пока Спр.ПолучитьЭлемент() > 0 Цикл

//. . .

Если Спр.Приказ.Вид() <> "" Тогда

Если ((Спр.Приказ.Окончание >= НТП) И

(Спр.Приказ.Начало <= КТП)) Тогда

// предполагается, что в каждом приказе

// есть реквизиты Начало и Окончание

ЖР.ВвестиРасчетНаОсновании(Спр.Приказ, Спр.Приказ.Сотрудник,

Спр.Приказ.Расчет, Макс(Спр.Прика з.Начало, НТП),

Мин(Спр.Приказ.Окончание, КТП), 0);

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЦикла;

ИначеЕсли МожноПроводить = 0 Тогда

Сообщить("Документ не проведен!!!");

КонецЕсли;

КонецПроцедуры

См. также: ВвестиРасчет, ЗаписатьРасчетНаОсновании.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.