Так же как константы и регистры, виды расчетов и группы видов расчета являются частью глобального контекста выполнения программы 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
Параметры:
<Номер> |
Номер вида расчета в списке видов расчета данной группы. |
Возвращаемое значение:
Агрегатный объект типа «Вид Расчета».
Описание:
Метод позволяет получить ссылку на вид расчета, входящий в данную группу под определенным номером. Обычно применяется в цикле с методом Количество.
Пример:
См. предыдущий пример.
См. также: Количество