Сравнить роль Сотрудник в начислениях и удержаниях

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

В Начисления Сотрудник — измерение, а в Удержания — реквизит. Одно имя поля не позволяет без проверки переносить запрос или структуру набора записей.

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

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

Подготовка

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

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

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

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

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

Описание = Метаданные.РегистрыРасчета.Найти("Начисления");
Если Описание = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует РегистрыРасчета.Начисления";
КонецЕсли;
Удержания = Метаданные.РегистрыРасчета.Найти("Удержания");
Если Удержания = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует РегистрыРасчета.Удержания";
КонецЕсли;
Сотрудник = Описание.Измерения.Найти("Сотрудник");
Если Сотрудник = Неопределено Тогда
    ВызватьИсключение "В учебных начислениях ожидалось измерение Сотрудник";
КонецЕсли;
СотрудникУдержаний = Удержания.Реквизиты.Найти("Сотрудник");
Если СотрудникУдержаний = Неопределено Тогда
    ВызватьИсключение "В учебных удержаниях ожидался реквизит Сотрудник";
КонецЕсли;
Сообщить(Описание.Измерения.Количество() = 4);
Сообщить(Удержания.Измерения.Количество() = 2);
Сообщить(Удержания.Измерения.Найти("Сотрудник") = Неопределено);
Сообщить(Сотрудник.Тип.СодержитТип(Тип("СправочникСсылка.Сотрудники")));
Сообщить(СотрудникУдержаний.Тип.СодержитТип(Тип("СправочникСсылка.Сотрудники")));
Сообщить(Сотрудник.Родитель() = Описание);
Сообщить(СотрудникУдержаний.Родитель() = Удержания);

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

  1. Поиск делаем в разных группах схемы: Измерения против Реквизиты.

  2. Проверяем наличие до Тип и Родитель; одинаковая ссылочная типизация не делает роль поля одинаковой.

  3. Четыре и два измерения — количества описаний разрезов учёта, не сотрудников или строк расчёта.

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

  1. Семь сравнений Истина по предоставленным XML.

  2. Не читалась зарплата, персональные данные или справочник сотрудников.

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

Обнаружено конкретное отличие схем двух реальных регистров.

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

  1. СправочникСсылка.Сотрудники и строковый табельный номер — разные типы.

  2. Не добавляйте недостающее измерение в типовую конфигурацию только ради переноса чужого примера.

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

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

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

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

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