Различить базовое измерение сотрудника и физическое лицо в регистре расчёта

Учебные задачи

Начисления использует Сотрудник как базовое измерение; ФизическоеЛицо не базовое. Это не взаимозаменяемые ключи расчёта.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.

  2. Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.

  3. Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.

  4. В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.

  5. Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.

Регистр = Метаданные.РегистрыРасчета.Найти("Начисления");
Если Регистр = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует РегистрыРасчета.Начисления";
КонецЕсли;
Поле = Регистр.Измерения.Найти("Сотрудник");
Если Поле = Неопределено Тогда
    ВызватьИсключение "В Начисления отсутствует измерение Сотрудник";
КонецЕсли;
ФизическоеЛицо = Регистр.Измерения.Найти("ФизическоеЛицо");
Если ФизическоеЛицо = Неопределено Тогда
    ВызватьИсключение "Не найдено измерение ФизическоеЛицо";
КонецЕсли;
Сообщить(Поле.БазовоеИзмерение);
Сообщить(Не ФизическоеЛицо.БазовоеИзмерение);
Сообщить(Поле.ЗапрещатьНезаполненныеЗначения);
Сообщить(Поле.Тип.СодержитТип(Тип("СправочникСсылка.Сотрудники")));
Сообщить(ФизическоеЛицо.Тип.СодержитТип(Тип("СправочникСсылка.ФизическиеЛица")));
Сообщить("Для получения базы изучайте сопоставление именно измерений расчётного регистра");

Разбор по шагам

  1. Каждое измерение находим по собственному имени, не берём первое в коллекции.

  2. БазовоеИзмерение влияет на получение базы расчёта и дополнительное индексирование.

  3. Ссылка сотрудника и ссылка физического лица относятся к разным справочникам.

  4. Мы читаем структуру, не рассчитываем зарплату, базу или перерасчёты.

Как проверить результат

  1. Пять сравнений Истина по XML: базовый сотрудник, небазовое физлицо, обязательность и два разных ссылочных типа.

  2. Начисления не изменились, расчёт зарплаты не запускается.

Ожидаемый результат

Выбран правильный уровень идентичности для дальнейшего изучения расчёта.

На что обратить внимание

  1. Одно физическое лицо может иметь несколько контекстов трудовых отношений; не подменяйте ключ сотрудника без анализа.

  2. Базовое измерение не доказывает правильность формулы, периода действия или состава ведущих видов расчёта.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.