Основная страница

Глава 22-1
Работа с Журналами расчетов


Журнал расчетов — это средство для просмотра и редактирования резуль­татов расчета. Каждая строка журнала отражает единичное событие расчета для того или иного объекта. Такие события называются «расчетами» и характери­зуются следующими данными:

·                        объект, для которого произведен расчет;

·                        вид (т. е. способ) расчета;

·                        документ, на основании которого введен этот расчет;

·                        результат расчета;

·                        время действия (т. е. расчет имеет дату начала и дату окончания). период регистрации, во время которого расчет введен в журнал (это по­нятие не совпадает с понятием времени действия, так как время дейст­вия акта расчета и период регистрации, во время которого он введен в систему, могут не совпадать)

Справочник объектов расчета. Одним из самых важных свойств журнала расчетов является ссылка на справочник, элементы которого являются объек­тами расчета. Справочник объектов расчета может быть как простым, так и иерархическим. Не обязательно все элементы этого справочника должны рас­считываться конкретным журналом расчетов, но, в свою очередь, все строки журнала расчетов должны соответствовать тому или иному элементу справоч­ника объектов расчета. Как правило, журнал расчетов содержит несколько за­писей по одному объекту расчета, но одна запись журнала расчетов не может соответствовать сразу нескольким объектам.

Расчетный период. Журнал расчетов имеет определенную периодичность, т. е. все расчеты в нем выполняются в пределах определенного временного ин­тервала. Каждая запись журнала расчетов, соответствующая одному акту расче­та, также имеет временное протяжение (т. е. имеет дату начала и дату оконча­ния).

Важно! Временной интервал каждой отдельной записи журнала не может ле­жать в разных расчетных периодах журнала.

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

Примеры. Журнал расчета заработной платы сотрудников предприятия (каждый сотрудник — объект расчета), при этом выполняется расчет тех или иных начислений и удержаний (виды расчета), имеющих определенную про­должительность и результат. Другой пример — журнал расчета амортизации основных средств, где справочником объектов расчета является справочник основных средств предприятия, а видами расчета —алгоритм расчета амортиза­ции, списания, переоценки и т. д. Третий пример — журнал расчета дивидендов для акционеров АО, где объекты расчета — список акционеров предприятия, а виды расчета — способы начислений дивидендов на акции разных типов.

Контекст работы с журналом расчета

Так же, как и при работе с другими данными системы 1С:Предприятие, дос­туп к атрибутам журнала расчетов и вызов его методов зависит от контекста выполнения модуля программы. В контексте выполнения расчета (см. «Виды программных модулей»), доступны атрибуты, методы журнала расчетов, т. е. они пишутся непосредственно, с указанием необходимых параметров.

Пример:

// Запись рассчитанного значения в атрибут Результат журнала расчетов

Результат = Объект.Оклад * Дни / ВсегоДней;

Во всех остальных случаях доступ к атрибутам и методам журнала расчетов производится через переменную, являющуюся ссылкой на объект типа «Жур­нал расчетов», т. е. созданную функцией СоздатьОбъект с ключевым словом ЖурналРасчетов.

Англоязычный синоним ключевого слова ЖурналРасчетовCalcJournal.

Пример:

// Рассчитаем все записи журнала расчетов Зарплата

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

ЖР.ВыбратьПериод(НачалоТекущегоПериода());

Пока ПолучитьЗапись() = 1 Цикл

   ЖР.Рассчитать();

КонецЦикла;

Контекст работы с записями журнала расчетов

При работе с журналом расчетов приходится сталкиваться с понятием «за­писи журнала расчетов». Ссылкой на объект типа «запись журнала расчетов» является, например, атрибут ПервичнаяЗапись журнала расчетов. Метод журнала ТекущаяЗапись также возвращает объект такого типа.

Кроме того, объект этого типа передается как параметр предопределенной процедуре формы журнала расчетов ПриРасчете в том случае, если выполня­ется расчет одной записи журнала расчетов. С точки зрения встроенного языка, ссылки на записи журнала расчетов — агрегатные объекты, имеющие свои ат­рибуты.

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

Запись журнала расчетов как агрегатный объект не имеет методов.

Пример:

Процедура ПриРасчете(Объект)

   // определим, что считаем?

   Если ТипЗначения(Объект) = 12 Тогда

      // имеем дело с документом

      Если Объект.Автор <> Расчетчик Тогда

         // если автор данного документа не есть текущий расчетчик

         // запретим расчет чужого документа!

         СтатусВозврата(0);

      КонецЕсли;

   ИначеЕсли ТипЗначения(Объект) = 11 Тогда

      // а это — элемент справочника

      Если Объект.Владелец <> Расчетчик Тогда

         // если рассчитываемый объект лежит в папке текущего

         // расчетчика — считать можно, иначе — нет

         СтатусВозврата(0);

      КонецЕсли;

   Иначе

      // иначе — считаем одну запись

      Если (Объект.Документ.Автор <> Расчетчик) ИЛИ

           (Объект.Объект.Владелец <> Расчетчик) Тогда

         // не дадим считать запись чужого документа или объекта

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

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

Контекст работы с периодом журнала расчетов

При работе с журналом расчетов приходится сталкиваться с понятием «пе­риод журнала расчетов». Ссылкой на такого рода объект являются, например, атрибуты ПериодРегистрации и ПериодДействия журнала расчетов. Кроме того, объект этого типа передается в качестве одного из параметров предопре­деленной процедуре глобального модуля ПриСменеРасчетногоПериода. С точки зрения встроенного языка, период журнала расчетов — агрегатный объ­ект, имеющий свои атрибуты (см. ниже) и методы. Атрибуты периода журнала расчетов предназначены только для чтения.

Атрибуты периода журнала расчетов

ДатаНачала

Дата начала периода журнала расчетов.

Синтаксис:

ДатаНачала

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

DateFrom

Описание:

Атрибут типа «дата» — дата начала периода журнала расчетов.

Пример:

Процедура ПриСменеРасчетногоПериода(ЖР, Период)

   Если ЖР.Вид() = "Зарплата" Тогда

      Предупреждение("Это смена текущего расчетного периода

               | для журнала Зарплата");

   КонецЕсли;

   Если Период.ДатаНачала <= ЖР.НачалоТекущегоПериода Тогда

      //не позволяем откатывать период назад

      СтатусВозврата(0);

   КонецЕсли;

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

См. также: ДатаОкончания

ДатаОкончания

Дата окончания периода журнала расчетов.

Синтаксис:

ДатаОкончания

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

DateTill

Описание:

Атрибут типа «дата» — дата окончания периода журнала расчетов.

См. также: ДатаНачала

ОписательПериода

Возвращает строку-описатель периода.

Синтаксис:

ОписательПериода

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

РеriodDescriptor

Описание:

Атрибут ОписательПериода является строковым представлением расчетного периода журнала расчетов. Тип формируемой строки различный для разной периодичности журнала расчетов. Например, для периода журналов с месячной периодичностью строка имеет вид "Январь 1997г", в случае квартальной перио­дичности журнала расчетов — "1 Квартал 1997г", а в случае недельной перио­дичности — "12.02.97 - 18.02.97".

Как правило, применяется при формировании отчетов.

Пример:

Процедура ВыводПоПериодам()

   Перем Запрос, ТекстЗапроса, Таб;

   Перем ДатаАкт;

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

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

   //Создание объекта типа Запрос

   Запрос = СоздатьОбъект("Запрос");

   ТекстЗапроса = "//{{ЗАПРОС(ВыводПоПериодам)

   |Период с ДатаАкт по ДатаАкт;

   |Сотр = ЖурналРасчетов.Зарплата.Объект;

   |Пер = ЖурналРасчетов.Зарплата.ПериодРегистрации;

   |Рез = ЖурналРасчетов.Зарплата.Результат;

   |Группировка Сотр упорядочить по Сотр.МестоРаботы без групп;

   |Группировка Пер;

   |Функция Сум = Сумма(Рез);

   |"//}}ЗАПРОС

   ;

   // Если ошибка в запросе, то выход из процедуры

   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

      Возврат;

   КонецЕсли;

   Пока Запрос.Группировка("Сотр") = 1 Цикл

      Сообщить(Запрос.Сотр.Наименование);

      Пока Запрос.Группировка("Пер") = 1 Цикл

         Сообщить(Запрос.Пер.ОписательПериода + "-" + 3апрос.Сум);

      КонецЦикла;

   КонецЦикла;

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

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

ПрибавитьПериод

Возвращает очередной период журнала на базе текущего периода.

Синтаксис:

ПрибавитьПериод(<Количество>)

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

AddPeriod

Параметры:

<Количество>

Число периодов, на которое отстоит текущий пе­риод от искомого. По умолчанию — 1 (т. е. метод возвращает следующий период).

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

Период журнала, отстоящий от заданного на определяемое параметром <Количество> число периодов.

Описание:

Метод предназначен для получения периода отстоящего от текущего на за­данное число периодов. Если <Количество> положительное число, возвра­щаемое значение — будущий период, в противном случае — прошлый период.

Пример:

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

ЖР.ВыбратьПериод(РабочаяДата());

//на три расчетных периода (месяца) назад

Пер = ЖР.ПериодДействия.ПрибавитьПериод(-3);

// теперь отбираем записи по нужному нам периоду

ЖР.ВыбратьПериод(Пер.ДатаНачала);

Всего = 0;

Пока ПолучитьЗапись() = 1 Цикл

   Если ЖР.ВидРасч = ВидРасчета.Доплата Тогда

      Всего = Всего + ЖР.Результат;

   КонецЕсли;

КонецЦикла;

Атрибуты журнала расчетов

Документ

Документ-основание текущей записи журнала расчетов.

Синтаксис:

Документ

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

Document

Описание:

Атрибут типа «Документ». Ссылка на документ, на основании которого данная запись (расчет) введена в журнал расчетов. Это может быть, например, документ «Больничный лист», породивший одну или несколько записей с ви­дом расчета «Оплата больничного листа».

Этот атрибут журнала расчетов заполняется в момент проведения докумен­та ссылкой на этот документ, в случае использования методов ВвестиРасчет, ВвестиПерерасчет, ЗаписатьРасчет, или ссылкой на другой документ, в случае использования методов ВвестиРасчетНаОсновании, ЗаписатьРасчетНаОсновании, ВвестиПерерасчетНаОсновании (см. ни­же).

Атрибут Документ предназначен только для чтения.

Пример:

Процедура ПровестиРасчет()

   Календ = Объект.Категория.Получить(ДатаНачала).Календарь;

   Дней = Календ.Дней(ДатаНачала, ДатаОкончания);

   Если ОткрытДок(Документ) = 0 Тогда

      РассчитатьСреднюю(Документ, Константа.МесСреднБЛ,

           ГруппаРасчетов.СредняяДляБЛ, 0);

   КонецЕсли;

   // среднюю зарплату берем из документа породившего расчет

   Результат =Окр(Дней * Документ.СрЗарплата);

   Дни = ?(Сторно = 1, -Дней, Дней);

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

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

РодительскийДокумент

Документ, который ввел данную запись в журнал расчетов.

Синтаксис:

РодительскийДокумент

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

ParentDocument

Описание:

Атрибут типа «Документ». Ссылка на документ расчета, который ввел дан­ную запись (расчет) журнала расчетов.

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

Атрибут РодительскийДокумент предназначен только для чтения.

Пример:

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

ЖР.ВыбратьЗаписиПоОбъекту();

Пока ЖР.ПолучитьЗапись() = 1 Цикл

   Если (ЖР.ВидРасч = ВидРасчета.ПоОкладу) И

            (ЖР.РодительскийДокумент.Вид() <> "НачалоМесяца") Тогда

      СообщитьОПерерасчете();

   КонецЕсли;

КонецЦикла;

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

Объект

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

Синтаксис:

Объект

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

Object

Описание:

Атрибут типа «Справочник». Ссылка на конкретный элемент того справоч­ника, который при конфигурировании журнала расчетов задан как список объ­ектов расчета (справочник объектов расчета). К этому конкретному элементу справочника имеет отношение данная запись (расчет) журнала расчетов.

Атрибут Объект предназначен только для чтения.

Пример:

// Расчет профвзносов

Процедура ПровестиРасчет()

   // объект расчета — сотрудник

   Если Объект.Профсоюз.Получить(ДатаОкончания) = Да Тогда

      // Зануляем результат перед расчетом для того,

      // чтобы не учитывать его при расчете уже взятого налога!!!

      Результат = 0;

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

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

      ЖР.ВыбратьЗаписиПоОбъекту(Объект, ЖР.НачалоПериодаПоДате(ДатаНачала),

              ЖР.КонецПериодаПоДате(ДатаНачала));

      Облагаем = 0;

      УжеВзяли = 0;

      Группа = ГруппаРасчетов.ОблагаетсяПроф;

      Пока ЖР.ПолучитьЗапись() > 0 Цикл

         Если ЖР.ВидРасч.ВходитВГруппу(Группа) = 1 Тогда

            Облагаем = Облагаем + ЖР.Результат;

         ИначеЕсли ЖР.ВидРасч = ВидРасчета.ПрофВзносы Тогда

            УжеВзяли = УжеВзяли + ЖР.Результат;

         КонецЕсли;

      КонецЦикла;

      Результат = Окр(Константа.ПроцентПроф.Получить(ДатаНачала) / 100 *

              Облагаем - УжеВзяли);

   Иначе

      Результат = 0;

   КонецЕсли;

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

См. также: ВыбратьПериодПоОбъекту, ВыбратьЗаписиПоОбъекту

ВидРасч

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

Синтаксис:

ВидРасч

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

CalculKind

Описание:

Атрибут типа «ВидРасчета». Ссылка на конкретный вид расчета, алгоритм которого будет использован при вычислении результата данной записи журна­ла расчетов (акта расчета).

Атрибут ВидРасч предназначен только для чтения.

Пример:

// Перечисление в банк

Процедура ПровестиРасчет()

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

   // посчитаем сумму на руки

   НаРуки = 0;

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

   Пока ЖР.ПолучитьЗапись() = 1 Цикл

      // если строка журнала расчетов имеет вид расчета,

      // входящий в группу "Все начисления"

      Если ЖР.ВидРасч.ВходитВГруппу(Группа.ВсеНачислнения) Тогда

         НаРуки = НаРуки + ЖР.Результат;

         // ...или "Все удержания"

      ИначеЕсли ЖР.ВидРасч.ВходитВГруппу(Группа.ВсеУдержания) Тогда

         НаРуки = НаРуки - ЖР.Результат;

      КонецЕсли;

   КонецЦикла;

   Если Документ.Сумма <> 0 Тогда

      Результат = Окр(Мин(Документ.Сумма, НаРуки));

   ИначеЕсли Документ.Процент <> 0 Тогда

      НаРуки = 0;

      Результат = Окр(НаРуки * Процент / 100);

   КонецЕсли;

   Если Документ.Банк.Выбран() Тогда

      ПроцентУд = Документ.Банк.ПроцентУдержания;

   Иначе

      Сообщение("Не указан банк для перечисления средств!");

      Возврат;

   КонецЕсли;

   ЖР.ВвестиРасчет(Объект, ВидРасчета.БанковскиеИздержки,

                ДатаНачала, ДатаОкончания, Окр(Результат * ПроцентУд / 100));

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

ДатаНачала

Дата начала действия записи журнала расчетов.

Синтаксис:

ДатаНачала

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

DateFrom

Описание:

Атрибут типа «дата» — дата начала действия текущего акта расчета (записи журнала расчетов). Эта дата может не совпадать с периодом регистрации Атрибут ДатаНачала предназначен только для чтения.

Пример:

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

// ДатаНачала и ДатаОкончания доступны непосредственно!

// календарь

Календ = Объект.Категория.Получить(ДатаНачала).Календарь;

// размер оклада

Тариф = Объект.Тариф.Получить(ДатаОкончания);

Часов = Календ.Часов(ДатаНачала.ДатаОкончания);

Результат = Окр(Тариф*Часов);

Часы = ?(Сторно = 1, -Часов, Часов);

См. также: ДатаОкончания, ПериодДействия, ПериодРегистрации

ДатаОкончания

Дата окончания действия записи журнала расчетов.

Синтаксис:

ДатаОкончания

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

DateTill

Описание:

Атрибут типа «дата» — дата окончания действия текущего акта расчета (за­писи журнала расчетов).

Атрибут ДатаОкончания предназначен только для чтения.

Пример:

См. предыдущий пример.

См. также: ДатаНачала, ПериодДействия, ПериодРегистрации

ПериодДействия

Период действия записи журнала расчетов.

Синтаксис:

ПериодДействия

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

EffectivePeriod

Описание:

Атрибут типа «период журнала расчетов» — период действия текущей запи­си журнала расчетов. Под периодом действия подразумевается тот расчетный период журнала, в который попадают ДатаНачала и ДатаОкончания дейст­вия записи журнала расчетов (акта расчета).

Атрибут ПериодДействия предназначен только для чтения.

Пример:

Процедура ПоПодр()

   Перем Запрос, ТекстЗапроса, Таб;

   //Создание объекта типа Запрос

   Запрос = СоздатьОбъект("Запрос");

   ТекстЗапроса = "//{{ЗАПРОС(ПоПодр)

   |Период с ДатаНач по ДатаКон;

   |Док = ЖурналРасчетов.Зарплата.ТекущийДокумент;

   |ПД = ЖурналРасчетов.Зарплата.ПериодДействия;

   |Подр = ЖурналРасчетов.Зарплата.Объект.МестоРаботы.Владелец;

   |Рез = ЖурналРасчетов.Зарплата.Результат;

   |Группировка ПД;

   |Группировка Подр без групп;

   |Функция Итог = Сумма(Рез);

   |"//}}ЗАПРОС

   // Если ошибка в запросе, то выход из процедуры

   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

      Возврат;

   КонецЕсли;

   // Подготовка к заполнению выходных форм данными запроса

   Таб = СоздатьОбъект("Таблица");

   Таб.ИсходнаяТаблица("ПоПодр");

   // Заполнение полей "Заголовок"

   Таб.ВывестиСекцию("Заголовок");

   Пока Запрос.Группировка("ПД") = 1 Цикл

      // Заполнение полей ПД

      Таб.ВывестиСекцию("ПД");

      Сообщение(Запрос.ПД.Описатель);

      Пока Запрос.Группировка("Подр") = 1 Цикл

         // Заполнение полей Подр

         Таб.ВывестиСекцию("Подр");

      КонецЦикла;

   КонецЦикла;

   // Заполнение полей "Итого"

   Таб.ВывестиСекцию("Итого");

   // Вывод заполненной формы

   Таб.Опции(1, 0, 1, 0);

   Таб.Показать("ПоПодр", "");

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

См. также: ДатаНачала, ПериодДействия, ПериодРегистрации

ПериодРегистрации

Период регистрации записи журнала расчетов.

Синтаксис:

ПериодРегистрации

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

RegistrationPeriod

Описание:

Атрибут типа «период журнала расчетов» — расчетный период, в котором текущая запись была введена в журнал расчетов. Это тот расчетный период, который на момент ввода данной записи был установлен для журнала расчетов как текущий.

Атрибут ПериодРегистрации предназначен только для чтения.

Пример:

См. предыдущий пример.

См. также: ДатаНачала, ДатаОкончания, ПериодДействия

Сторно

Признак сторнирующей записи.

Синтаксис:

Сторно

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

Storno

Описание:

Атрибут типа «число», принимает два значения: 1 — для сторнирующих за­писей журнала расчетов и 0 — для обычных записей. Признак «сторно» равен 1 не только для простых сторно-записей, но и для рассчитанных, отредактиро­ванных вручную или зафиксированных (не подлежащих редактированию) сторно-записей.

Сторнирующие записи могут появляться в журнале расчетов в результате выполнения методов ВвестиРасчет, ЗаписатьРасчет и им подобных, если при этом затрагиваются один или несколько прошлых расчетных периодов и вводимый вид расчета является «вытесняющим». При этом система автомати­чески вводит необходимые сторнирующие записи. Для таких записей (введен­ных системным образом) признак сторнирования не может быть переопреде­лен.

Если сторнирующая запись введена программным образом, т. е. атрибут Сторно задан за счет применения метода УстановитьРеквизит или непо­средственным присвоением:

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

ЖрнРасчета.Сторно = 1;

тогда он может быть переопределен программным образом.

Пример:

*

Процедура ПровестиРасчет()

   // календарь

   Календ = Объект.Категория.Получить(ДатаОкончания).Календарь;

   // размер оклада

   Оклад = Объект.Оклад.Получить(ДатаОкончания);

   Дней = Календ.Дней(ДатаНачала, ДатаОкончания);

   ВсегоДней = Календ.Дней(НачалоПериодаПоДате(ДатаНачала),

                КонецПериодаПоДате(ДатаНачала));

   Если ВсегоДней > 0 Тогда

      Результат = Окр(Оклад * Дней / ВсегоДней);

      // если запись-сторно — поставим отрицательные дни!

      Дни = ?(Сторно = 1, -Дней, Дней);

   Иначе

      Результат = 0;

      Дни = 0;

      Сообщить("Неправильный календарь!");

   КонецЕсли;

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

*

// вводим сторнирующие рассчитанные записи

ВР = ВидРасчета.ДоплатаКОкладу;

ЖрнЗарплата.УстановитьРеквизит("Сторно", 1);

ЖрнЗарплата.УстановитьРеквизит("Рассчитана", 1);

ЖрнЗарплата.ВвестиРасчет(Сотрудник, ВР, , , Сумма * Процент);

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

Рассчитана

Признак того, что запись рассчитана.

Синтаксис:

Рассчитана

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

Calculated

Описание:

Атрибут типа «число», принимает два значения: 1 — для рассчитанных за­писей журнала расчетов и 0 — для нерассчитанных записей.

Запись журнала расчетов становится рассчитанной в результате удачного выполнения одной из соответствующих команд меню «Действия» или при вы­полнении методов журнала расчетов Рассчитать, ВыпролнитьРасчет.

Атрибут Рассчитана предназначен только для чтения.

Пример:

// Перед выводом отчета проверим, все ли записи рассчитаны

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

ЖрнЗарплата.ВыбратьПериодПоОбъекту(Сотрудник, ДатаОтчета);

// признак нерассчитанности

ПлохоДело=0;

Пока ЖрнЗарплата.ПолучитьЗапись() = 1 Цикл

   Если ЖрнЗарплата.Рассчитана = 0 Тогда

      ПолохоДело = 1;

      Прервать;

   КонецЕсли;

КонецЦикла;

Если ПлохоДело = 1 Тогда

   Предупреждение("Не проведен полный расчет сотрудника!

                   | Формирование отчета невозможно");

   Возврат;

КонецЕсли;

// продолжим формирование документа

См. также: Исправлена, Фиксирована

Исправлена

Признак того, что запись исправлена вручную.

Синтаксис:

Исправлена

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

Updated

Описание:

Атрибут типа «число», принимает два значения: 1 — для записей журнала расчетов, результат которых исправлен «вручную» и 0 — для остальных запи­сей.

Запись журнала расчетов становится исправленной при редактировании ре­зультата расчета непосредственно в журнале расчетов. Исправленные вручную записи не редактируются при очередном сеансе расчета, т. е. результат автома­тического расчета не заменяет результат ручного ввода. Это значит, что резуль­тат ручного редактирования «главнее» результата автоматического расчета.

Атрибут Исправлена предназначен только для чтения.

Пример:

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

ЖрнЗарплата.ВыбратьЗаписиПоДокументу(ТекущийДокумент());

Счетчик = 0;

Пока ЖрнЗарплата.ПолучитьЗапись() = 1 Цикл

   Если ЖрнЗарплата.Исправлена = 1 Тогда

      Счетчик = Счетчик + 1;

   КонецЕсли;

КонецЦикла;

Если Счетчик <> 0 Тогда

   Сообщение("Исправленных записей — " + Счетчик);

КонецЕсли;

// продолжим формирование документа

См. также: Рассчитана, Фиксирована

Фиксирована

Признак того, что результат расчета записи защищен от исправления.

Синтаксис:

Фиксирована

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

Locked

Описание:

Атрибут типа «число», принимает два значения: 1 — для фиксированных записей журнала расчетов и 0 — для остальных записей.

Запись журнала расчетов становится фиксированной при выполнении ме­тода журнала расчетов ФиксироватьЗапись. Признак фиксированности запи­си можно снять, применив метод журнала расчетов ОсвободитьЗапись.

После фиксации записи результат ее расчета не может быть изменен ника­ким, в том числе, программным способом.

Атрибут Фиксирована предназначен только для чтения.

Пример:

Если ЖрнЗарплата.Фиксирована = 1 Тогда

   Если ДатаДок > ЖрнЗарплата.НачалоТекущегоПериода() Тогда

      ОсвободитьЗапись();

   Иначе

      // отказ от расчета;

      // ....

   КонецЕсли;

КоненцЕсли;

См. также: ФиксироватьЗапись, ОсвободитьЗапись

Перерасчет

Признак того, что запись является перерасчетом другой записи про­шлого периода.

Синтаксис:

Перерасчет

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

Recalc

Описание:

Атрибут типа «число», принимает два значения: 1 — для записей-перерасчетов и 0 — для остальных записей.

Записи-перерасчеты вводятся в журнал расчетов при выполнении одного из методов журнала расчетов: ВвестиПерерасчет или ВвестиПерерасчетНаОсновании.

Атрибут Перерасчет предназначен только для чтения.

Пример:

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

ЖрнЗарплата.ВыбратьПериодПоОбъекту(Сотрудник, ДатаОтчета);

Есть = 0;

Пока ЖрнЗарплата.ПолучитьЗапись() = 1 Цикл

   Если ЖрнЗарплата.Перерасчет = 0 Тогда

      Есть = 1;

      Пер = ЖрнЗарплата.ПервичнаяЗапись.ПериодРегистрации;

      Прервать;

   КонецЕсли;

КонецЦикла;

Если Есть = 1 Тогда

   Предупреждение("За истекший период проводились перерасчеты

          | прошлого периода " + Пер.Описатель);

   Возврат;

КонецЕсли;

// продолжим формирование документа

См. также: ПервичнаяЗапись

ПервичнаяЗапись

Первичная запись записи-перерасчета. Запись, на основании которой введена текущая запись-перерасчет.

Синтаксис:

ПервичнаяЗапись

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

ParentRecord

Описание:

Атрибут типа «запись журнала расчетов». Имеет непустое значение для за­писей-перерасчетов, т. е. тех записей, которые введены в систему одним из ме­тодов журнала расчетов: ВвестиПерерасчет или ВвестиПерерасчетНаОсновании.

Атрибут ПервичнаяЗапись предназначен только для чтения.

Пример:

См. предыдущий пример.

См. также: Перерасчет, ВвестиПерерасчет, ВвестиПерерасчетНаОсновании

Результат

Результат расчета,

Синтаксис:

Результат

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

Result

Описание:

Атрибут типа «число». Используется для доступа к результату расчета запи­си. Как правило, самым важным действием процедуры ПровестиРасчет мо­дуля расчета является вычисление результата расчета и заполнение атрибута Расчет.

Пример:

*

// Переберем все записи текущего периода журнала расчетов

//по текущему основному средству и просуммируем результат

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

ЖР.ВыбратьПериодПоОбъекту(Объект, ЖР.НачалоТекущегоПериода());

// Инициализируем переменную

Сумма = 0;

Пока ЖР.ПолучитьЗапись() > 0 Цикл

   Сумма = Сумма + ЖР.Результат;

КонецЦикла

*

Результат = Оклад * Дней / ОтработаноДней;

<Реквизит>

Значение реквизита журнала расчетов.

Синтаксис:

<Реквизит>

Идентификатор реквизита журнала расчетов, как он задан в конфигураторе.

Описание:

Атрибут <Реквизит> предоставляет доступ к значению реквизита записи журнала расчетов. В тексте программного модуля в качестве названия реквизи­та используется идентификатор конкретного реквизита журнала расчетов, соз­данного в конфигураторе.

Пример:

//В этом примере журнал расчетов "Зарплата"

// имеет реквизит "ХозОперация"

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

ЖР.ВыбратьПериод(ЖР.НачалоТекущегоПериода());

Пока ЖР.ПолучитьЗапись() = 1 Цикл

   ЖР.ХозОперация = ПолучитьХО(ЖР.ТекущаяЗапись());

   // вызвали вспомогательную функцию пользователя: ПолучитьХО

КонецЦикла;






Перейти  к оглавлению: Описание встроенного языка