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

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

ВвестиРасчет

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

Синтаксис:

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

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

InsertCalculation

Параметры:

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

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

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

Описание:

Метод ВвестиРасчет предназначен для ввода строк в журнал расчетов. Как правило, используется в модуле расчета документа, но может использоваться и в модуле вида расчета. Метод вводит одну или несколько записей в журнал расчетов, и результат ее действия зависит от того, вводится "вытесняющий" расчет или обычный.

При вводе вытесняющего расчета проводится анализ уже существующих записей журнала расчетш; для интервала времени, заданного параметрами ДатаНачала и ДатаОкончания. Если в этом периоде уже существуют записи, приоритет вытеснения которых меньше либо равен приоритету вытеснения вводимого расчета, будет проводиться редактирование периода их действия или полное их удаление. Это приведет, например, к тому, что вводимая запись будет вытеснять записи с тем же видом расчета.

В том случае, если вытесняемые данные принадлежат не текущему периоду расчета, проводится не корректировка или полное удаление записей, а их сторнирование.

Если приоритет вытеснения уже существующих записей больше приоритета вытеснения вводимого расчета, то корректируется период действия вводимой записи. Это может привести, например, к тому, что новая запись вовсе не будет введена, если ее место во времени уже занято записями с большим приоритетом вытеснения.

Для случая ввода невытесняющих расчетов анализ существующих записей журнала расчетов и их протяженности во времени не проводится, и расчет вводится в любом случае.

Во всех вышеописанных случаях ввод записей в журнал расчетов проводится в пределах границ расчетных периодов журнала расчетов. Например, если при месячной периодичности журнала задать дату начала и дату окончания, отстоящие друг от друга более, чем на месяц, будет введено более одной записи журнала расчетов – для всех периодов, затрагиваемых временным интервалом от <ДатаНачала> до <ДатаОкончания>.

Важно
Следует помнить, что ввод записи с временем действия расчета, не принадлежащим текущему расчетному периоду, не означает ввода записей прошлого или будущего периода. Вводимые записи всегда принадлежат текущему периоду (т. е. введены в текущем периоде), хотя и производят расчеты прошлого или будущего периодов
.

Атрибуты Документ и РодительскийДокумент журнала расчетов заполняются значением того документа, в модуле расчета которого сработал метод ВвестиРасчет. Этот документ будет "родителем" и "основанием" вводимой записи журнала расчетов. В том случае, когда метод сработал в модуле вида расчета, реквизиты Документ и РодительскийДокумент заполняются значениями этих атрибутов той записи журнала расчетов, при расчете которой выполнен метод ВвестиРасчет.

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

Параметр <Результат> можно использовать в том случае, когда сразу при вводе записей журнала расчетов можно записать их результат.

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

Пример:

// Ввод выбранного расчета.

// Атрибут "Расчет" — реквизит формы документа

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

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

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

ЖР.ВвестиРасчет(Сотрудник, Расчет, ДатаН, ДатаК, 0);

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

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

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