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

Глава 23
Работа с Видами и Группами расчетов


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

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

Англоязычный синоним ключевого слова ВидРасчетаCalculationKind.

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

Пример:

*

// Узнаем, входит ли вид расчета ОплатаПоОкладу

//в группу ОблагаютсяНалогом

Проверка =

    ВидРасчета.ОплатаПоОкладу.ВходитВГруппу(ГруппаРасчетов.ОблагаютсяНалогом);

*

// Выведем наименование вида расчета

Сообщить(ВидРасчета.Доплата.Наименование);

Кроме того, объекты типа «вид расчета» могут сохраняться в базе данных, т. е. реквизиты справочников, документов, журналов расчета могут иметь тип «ВидРасчета» и хранить ссылки на объекты этого типа.

В глобальном контексте программы 1С:Предприятие есть атрибут «ВидРас­чета». Этот объект имеет метод ПолучитьАтрибут, который позволяет полу­чить доступ к объекту вида расчета конкретного вида по его имени. Т. е. допус­тимы следующие синтаксические конструкции:

Проверка =

   ВидРасчета.ОплатаПоОкладу.ВходитВГруппу(ГруппаРасчетов.ОблагаетсяНалогом);

Проверка =

   ВидРасчета.ПолучитьАтрибут("ОплатаПоОкладу").

                  ВходитВГруппу(ГруппаРасчетов.ОблагаютсяНалогом);

Атрибуты видов расчета и групп видов расчета

Код

Код вида расчета или группы видов расчета.

Синтаксис:

Код

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

Code

Описание:

Атрибут типа «строка».

Представляет собой строку, соответствующую идентификатору, заданному при конфигурировании.

Пример:

ВРО1 = ВидРасчета.ПоОкладу;

ВР02 = ВидРасчета.АмортизацияС_НДС;

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

Сообщить(ВРО1.Код);

Сообщить(ВР02.Код);

Сообщить(Группа.Код);

См. также: Наименование

Наименование

Наименование группы видов расчета или вида расчета.

Синтаксис:

Наименование

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

Descriptor

Описание:

Атрибут типа «строка». Представляет собой строку, соответствующую ком­ментарию, заданному при конфигурировании.

Пример:

ВР01 = ВидРасчета.ПоОкладу;

ВРО2 = Вид Расчета.АмортизацияС_НДС;

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

Сообщить("Это расчет " + ВР01.Наименование);

Сообщить(ВР02.Наименование + " " + ВР02.Код);

Сообщить(Строка(Группа.Наименование));

См. также: Наименование

Атрибуты видов расчета

Очередность

Очередность вида расчета.

Синтаксис:

Очередность

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

Priority

Описание:

Атрибут типа «число». Представляет собой число, соответствующее очеред­ности вида расчета, заданной при конфигурировании.

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

Пример:

ВР01 = ВидРасчета.ПоОкладу;

Сообщить("Это расчет "+ВР01.Наименование+"с очередностью "+ВРО1.Очередность);

См. также: ПриоритетВытеснения

ПриоритетВытеснения

Приоритет вытеснения вида расчета.

Синтаксис:

ПриоритетВытеснения

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

ReplacePriority

Описание:

Атрибут типа «число». Представляет собой число, соответствующее приори­тету вытеснения вида расчета, заданному при конфигурировании. Система ис­пользует приоритет вытеснения при разрешении ситуации, когда полностью или частично пересекаются периоды действия видов расчета. Например, когда метод журнала расчетов ВвестиРасчет вводит расчет в «занятый» временной интервал.

Для невытесняющих видов расчета значение этого атрибута равно нулю.

Замечание. Атрибут сохранен для поддержания совместимости с предыдущи­ми версиями программы. Вместо использования данного атрибута реко­мендуется использовать методы ВытесняетВидРасчета и ВытесняетсяВидомРасчета.

Пример:

*

ВР01 = ВидРасчета.ПоОкладу;

Сообщить("Это расчет "+ВР01.Наименование+" с очередностью "+ВР01.Очередность);

*

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

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

   Можно = 1;

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

      Если ЖрнЗарплата.ВидРасч.ПриоритетВытеснения >=

           ВидРасчета.ОплатаБЛ.ПриоритетВытеснения Тогда

         Можно = 0;

      КонецЕсли;

   КонецЦикла;

   Если Начало > Окончание Тогда

      Можно = 0;

   КонецЕсли;

   Если Можно = 1 Тогда

      ЖрнЗарплата.ВвестиРасчет(Сотрудник, ВидРасчета.ОплатаБЛ, Начало,

                    Окончание, 0);

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

         Перерасчет(ГруппаРасчетов.ПересчДляБЛ, Сотрудник, ТекущийДокумент(),

                     Начало, Окончание);

      КонецЕсли;

   Иначе

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

                | Проверьте и исправьте даты начала и окончания.

                | После этого закройте документ, повторно откройте

                | и проведите его");

      НеПроводитьДокумент();

   КонецЕсли;

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

См. также: методы журнала расчетов ВвестиРасчет, ЗаписатьРасчет

Методы видов расчета

ПолучитьАтрибут

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

Синтаксис:

ПолучитьАтрибут(<ИмяВидаРасчета>)

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

GetAttrib

Параметры:

<ИмяВидаРасчета>

Строковое выражение, содержащее идентифика­тор вида расчета, как он задан в конфигураторе.

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

Объект вид расчета.

Описание:

Метод ПолучитьАтрибут позволяет получить доступ к объекту вида рас­чета конкретного вида по его имени, как оно задано в конфигураторе.

Этот метод применяется только к объекту глобально контекста ВидРасчета.

Пример:

Начисл = ВидРасчета.ПолучитьАтрибут("Начисления");

ВходитВГруппу

Определяет входимость вида расчетов в группу видов расчета.

Синтаксис:

ВходитВГруппу(<Группа>)

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

BelongsToGroup

Параметры:

<Группа>

Группа расчетов, входимость в которую проверя­ется.

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

Число: 1 — если вид расчета входит в группу <Группа>; 0 в противном слу­чае.

Описание:

Этот метод предназначен для определения входимости вида расчета в кон­кретную группу расчетов.

Пример:

*

// В журнале расчетов зарплаты посчитаем все начисления

// для текущего сотрудника

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

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

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

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

Группа = Группа.ВсеНачисления;

Всего = 0;

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

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

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

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

   КонецЕсли;

КонецЦикла;

// ...

*

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

   Если ЖрнЗарплата.ВидРасч = ВидРасчета.РайонныйКоэФйициент Тогда

      СуммаРайонн = СуммаРайонн + ЖрнЗарплата.Результат;

   КонецЕсли;

   Если ЖрнЗарплата.ВидРасч = ВидРасчета.СевернаяНадбавка Тогда

      СуммаСеверн = СуммаСеверн + ЖрнЗарплата.Результат;

   КонецЕсли;

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

      Сумма = Сумма + ЖрнЗарплата.Результат;

      Если ТипРасчета = 1 Тогда

         Дней = Дней + КалендОтп.Дней(ЖрнЗарплата.ДатаНачала,

                                      ЖрнЗарплата.ДатаОкончания);

      Иначе

         Дней = Дней + ЖрнЗарплата.Дни;

      КонецЕсли;

   КонецЕсли;

КонецЦикла;

См. также: СодержитВидРасчета

Выбран

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

Синтаксис:

Выбран()

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

Selected

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

Число: 1 — если конкретный вид расчета выбран; 0 в противном случае.

Описание:

Этот метод предназначен для определения, не является ли «пустым» значе­ние переменной или реквизита типа «ВидРасчета».

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

Пример:

// Допл — объект типа "группа расчетов"

Допл = ГруппаРасчетов.Доплаты;

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

// Док — ссылка на документ, имеющий реквизит Сотрудник

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

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

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

      // предполагается, что документы-основания этих

      // видов расчета имеют реквизит ВР

      Если ЖЗ.Документ.ВР.Выбран() = 0 Тогда

         Сообщить("Не указан конкретный вид расчета в документе!");

      КонецЕсли;

   КонецЕсли;

КонецЦикла;

ВытесняетВидРасчета

Определяет, вытесняет ли данный вид расчета, заданный в качестве параметра.

Синтаксис:

ВытесняетВидРасчета(<ВидРасчета>)

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

DisplaceCalc

Параметры:

<ВидРасчета>

Вид расчета, для которого проверяется, вытесня­ется ли он текущим видом расчета.

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

Число: 1 — если вид расчета, метод которого вызывается, вытесняет заданный в качестве параметра <ВидРасчета>; 0 в противном случае.

Описание:

Метод предназначен для определения взаимного влияния видов расчета при вводе их в журнал расчетов.

Пример:

// ВР — реквизит документа типа "вид расчета",

// тогда при проведении документа

// Сотр — реквизит документа типа "элемент справочника Сотрудники".

// ДтНач, ДтОконч — реквизиты документа типа "дата"

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

ЖР.ВыбратьПоОбъекту(Сотр, ДтНач, ДтОконч);

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

   Если ЖР.ВидРасч.ВытесняетВидРасчета(ВР) = 0 Тогда

      // если нашли вид расчета, который мы не сможем вытеснить

      Сообщить("Невозможно корректное проведение документа");

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

      Возврат;

   КонецЕсли;

КонецЦикла;

См. также: ВытесняетсяВидомРасчета

ВытесняетсяВидомРасчета

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

Синтаксис:

ВытесняетсяВидомРасчета(<ВидРасчета>)

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

DisplaceByCalc

Параметры:

<ВидРасчета>

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

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

Число: 1 — если вид расчета, метод которого вызывается, вытесняется видом расчета, заданным в качестве параметра <ВидРасчета>; 0 в противном случае.

Описание:

Метод предназначен для определения взаимного влияния видов расчета при вводе их в журнал расчетов.

См. также: ВытесняетВидРасчета

Методы групп видов расчета

СодержитВидРасчета

Определяет, содержит ли группа вид расчета.

Синтаксис:

СодержитВидРасчета(<ВидРасчета>)

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

ContainCalculationKind

Параметры:

<ВидРасчета>

Вид расчета, входимость которого проверяется.

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

Число: 1 — если <ВидРасчета> входит в группу; 0 в противном случае.

Описание:

Метод предназначен для определения того, содержит ли группа заданный вид расчета.

Пример:

Входит = ГруппаРасчетов.ОблНалогом.СодержитВидРасчета(ЖР.ВидРасч);

См. также: ВходитВГруппу

Количество

Количество видов расчета, включенных в группу видов расчета.

Синтаксис:

Количество()

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

Count

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

Целое положительное число — количество видов расчета, входящих в груп­пу.

Описание:

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

Пример:

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

// текущий сотрудник Сотр = Объект;

// Для всех видов удержаний проведем расчет в

// журнале расчетов зарплаты

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

ВсеУд = Группа.ВсеУдержания;

Счетчик = 1;

Пока Счетчик <= ВсеУд.Количество() Цикл

   ЖР.ВвестиРасчет(Сотр, ВсеУд.ПолучитьВидРасчета(Счетчик));

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

КонецЦикла;

См. также: ПолучитьВидРасчета

ПолучитьРасчет

Получает ссылку на вид расчета.

Синтаксис:

ПолучитьРасчет(<Номер>)

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

GetCalculation

Параметры:

<Номер>

Номер вида расчета в списке видов расчета данной группы.

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

Агрегатный объект типа «Вид Расчета».

Описание:

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

Пример:

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

См. также: Количество







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