Различить два признака Валютный по уровню метаданных

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

В плане Хозрасчетный есть Валютный у счёта и Валютный у субконто. Внутреннее имя одинаковое, но описания разных объектов нельзя взаимозаменять.

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

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

Подготовка

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

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

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

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

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

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

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

  1. Ищем признаки в двух разных коллекциях одного реального плана, проверяя отсутствие до чтения.

  2. Имя Валютный используется в коде, синоним Валютный учет/Валютный — подпись в интерфейсе.

  3. ПолноеИмя помогает различить область описания. Родитель обоих описаний — план счетов, не конкретный счёт базы.

  4. Ни данные счетов, ни валюты, ни бухгалтерские суммы не читаются.

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

  1. Семь сравнений Истина; два полных имени относятся к разным уровням, хотя короткое имя одно.

  2. Сверьте с XML ChartsOfAccounts/Хозрасчетный.xml: AccountingFlag Валютный и ExtDimensionAccountingFlag Валютный.

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

Разделены два объекта схемы по назначению и фактической коллекции.

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

  1. Флаг схемы не является курсом валюты или суммой проводки.

  2. Синонимы могут отличаться в другой конфигурации/локализации; заменять ими внутренние имена нельзя.

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

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

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

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

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