14. Механизмы сложных периодических расчетов
#14

Готовишься к экзамену?

Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.

Перейти в бота

Для обращения к предопределенному виду расчета необходимо:

найти его по неизменяемому коду: ПланыВидовРасчета.<Имя плана видов расчета>.НайтиПоКоду(Код)
Неправильно: Код элемента - это реквизит данных, который в большинстве конфигураций может быть изменяемым и не гарантирует стабильности для программной логики. Предопределенность обеспечивается не «кодом», а именем предопределенных данных, заданным в конфигураторе, поэтому для надежного обращения поиск по коду не подходит.
найти его по неизменяемому наименованию: ПланыВидовРасчета.<Имя плана видов расчета>.НайтиПоНаименованию(Наименование)
Неправильно: Наименование - пользовательское представление и часто редактируется, а еще может зависеть от языка интерфейса и правил формирования представления. Для кода важна ссылка на конкретный предопределенный объект, поэтому опираться на наименование рискованно и не является правильным способом.
найти его по заданному в конфигураторе имени: ПланыВидовРасчета.<Имя плана видов расчета>.<Имя предопределенного объекта>
Правильно: Предопределенные элементы создаются разработчиком и имеют системное «имя предопределенных данных», по которому платформа позволяет получать ссылку напрямую через менеджер объекта. Такой способ не зависит от пользовательских изменений кода/наименования и считается корректным для логики сложных периодических расчетов.
программно найти предопределенный элемент нельзя, пользователь просто его не может удалить и пометить на удаление
Неправильно: Предопределенный элемент как раз и нужен для того, чтобы на него можно было надежно ссылаться в программном коде (например, в алгоритмах начислений). Платформа предоставляет прямой доступ по имени предопределенного объекта, а ограничения для пользователя (нельзя удалить/пометить) - лишь сопутствующее свойство.

Пояснение

Предопределенный вид расчета - это элемент плана видов расчета, который разработчик задает в конфигураторе и связывает с данными информационной базы через «Имя предопределенных данных». Смысл предопределенных данных в том, чтобы код мог получать нужную ссылку напрямую и не зависеть от того, что пользователь поменял код или наименование элемента. Как это выглядит на практике: - В конфигураторе есть план видов расчета, например «Начисления», и в нем предопределенные виды расчета «Оклад», «Премия», «Больничный». - В коде вы обращаетесь напрямую: ВидРасчетаОклад = ПланыВидовРасчета.Начисления.Оклад; Далее эту ссылку используете при формировании набора записей регистра расчета, при проверке вытеснений/приоритетов, выборе формул и т.п. Почему не стоит искать по коду/наименованию: - Код и наименование - это реквизиты данных, которые могут быть изменены (вручную, при загрузке данных, при обменах), из-за чего поиск начнет возвращать не то значение или вообще ничего. - Предопределенное имя задается именно для программной идентификации и сохраняет смысл даже при изменении пользовательских реквизитов. Дополнительный контекст и «подводные камни»: - Если предопределенный элемент описан в конфигурации, но в базе не сопоставлен (например, после некорректной загрузки/обмена), прямое обращение может вернуть пустую ссылку/ошибку в логике. В таких случаях обычно используют стандартные инструменты администрирования/обработки предопределенных данных, чтобы восстановить соответствие. - В типовых решениях часто применяют универсальные функции получения предопределенных элементов по полному имени (например, когда имя формируется строкой) - но базовый и самый понятный способ в прикладном коде именно прямое обращение через менеджер: ПланыВидовРасчета.<План>.<Предопределенный>.