Одинаковое имя БазовыеВидыРасчета скрывает два разных уровня: разрешённые планы в метаданных и строки зависимостей у конкретного вида.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ пустую файловую базу, имя корня УчебныеРасчеты85. Не изменяйте рабочие ЗУП/КА2/УНФ/УТ/БП. Пример технический: зарплата, налоги и выплаты не рассчитываются.
Планы видов расчёта → Добавить: УчебныеНачисления85. ТипКода Строка, ДлинаКода 10, ДлинаНаименования 100. ИспользованиеПериодаДействия включено; ЗависимостьОтВидовРасчета=ПоПериодуДействия.
В настройке базовых планов видов расчёта выберите только сам УчебныеНачисления85. Это позволяет учебным видам ссылаться на другие виды того же плана. Предопределённые виды, пользовательские реквизиты и табличные части не создавайте.
Модули объекта/менеджера оставьте пустыми, регистры расчёта и бизнес-алгоритмы не добавляйте. Обновите конфигурацию БД и создайте серверный ВыполнитьПример() Экспорт собственной обработки.
Фрагмент вставляется внутрь процедуры. Все виды и строки зависимостей создаются только в памяти; Записать, блокировки, удаления объектов и привилегированный режим не вызываются.
Случайные ссылки зависимостей — ПЛАНОВЫЕ идентификаторы, соответствующих сохранённых видов нет. Они нужны для разбора типизированных списков, а не для запуска расчёта.
Для уроков схемы не создавайте формы, команды, макеты, дополнительные индексы, ввод на основании и расширения. Историю данных оставьте выключенной; флаги немедленного обновления истории и обработки после записи версии выключите.
Каждый фрагмент выполняется отдельно. Кроме специального сравнения схемы и объекта, уроки только читают метаданные. Выборки видов, расчётные регистры, смена режима и запись не вызываются.
Описание = Метаданные.ПланыВидовРасчета.Найти("УчебныеНачисления85");
Если Описание = Неопределено Тогда
ВызватьИсключение "Создайте собственный план УчебныеНачисления85";
КонецЕсли;
Если Описание.ТипКода <> Метаданные.СвойстваОбъектов.ТипКодаПланаВидовРасчета.Строка
Или Описание.ДлинаКода <> 10 Или Описание.ДлинаНаименования <> 100
Или Не Описание.ИспользованиеПериодаДействия
Или Описание.ЗависимостьОтВидовРасчета <> Метаданные.СвойстваОбъектов.ИспользованиеБазыПланаВидовРасчета.ПоПериодуДействия Тогда
ВызватьИсключение "Настройки учебного плана не соответствуют подготовке";
КонецЕсли;
Если Описание.БазовыеВидыРасчета.Количество() <> 1
Или Не Описание.БазовыеВидыРасчета.Содержит(Описание) Тогда
ВызватьИсключение "Выберите только собственный план как базовый";
КонецЕсли;
Менеджер = ПланыВидовРасчета.УчебныеНачисления85;
Сообщить(Описание.БазовыеВидыРасчета.Количество() = 1);
Для Каждого БазовыйПлан Из Описание.БазовыеВидыРасчета Цикл
Сообщить("Разрешённый план: " + БазовыйПлан.ПолноеИмя());
КонецЦикла;
НовыйВид = Менеджер.СоздатьВидРасчета();
Сообщить(НовыйВид.БазовыеВидыРасчета.Количество() = 0);
Сообщить(НовыйВид.ВытесняющиеВидыРасчета.Количество() = 0);
Сообщить(Описание.ИспользованиеПериодаДействия);
Сообщить(Описание.ЗависимостьОтВидовРасчета = Метаданные.СвойстваОбъектов.ИспользованиеБазыПланаВидовРасчета.ПоПериодуДействия);
Сообщить(Описание.ТипКода = Метаданные.СвойстваОбъектов.ТипКодаПланаВидовРасчета.Строка);
Сообщить(Описание.ДлинаКода = 10);
Сообщить(Описание.ДлинаНаименования = 100);
Сообщить("Допустимая длина кода: " + Строка(Описание.ДопустимаяДлинаКода));
Сообщить(Описание.ВводитсяНаОсновании.Количество() = 0);Разбор по шагам
В Конфигураторе разрешили один базовый план — сам УчебныеНачисления85. Перебор схемы выводит объект метаданных этого плана.
Новый вид не наследует автоматически список всех видов плана: его строки базовых и вытесняющих зависимостей пусты.
ИспользованиеПериодаДействия и зависимость ПоПериодуДействия включают требуемые возможности объекта, но не создают начисления.
Длины кода/названия сравниваем с подготовкой; допустимую длину выводим фактически. Настройки ввода на основании не являются списком результатов расчёта.
Как проверить результат
Девять логических проверок дают Истина; полное имя разрешённого плана — ПланВидовРасчета.УчебныеНачисления85.
Новый вид остаётся незаписанным. Нет ни суммы базы, ни строки регистра расчёта.
Ожидаемый результат
Разделены разрешение схемы, доступность табличных частей и заполнение зависимостей отдельного вида.
На что обратить внимание
Коллекция базовых планов метаданных не содержит строки ВидРасчета конкретного объекта.
Отсутствие зависимостей у нового вида не означает отсутствие базового плана в схеме.
Чтение схемы не подтверждает корректность алгоритма премии или перерасчёта в рабочей конфигурации.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.