Разобрать ограничение типа аналитики доходов

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

В ВидыПодарочныхСертификатов аналитика связана по типу со СтатьяДоходов. Схема использует характеристику, а не заранее выдуманный тип СправочникСсылка.Номенклатура.

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

Полный серверный общий модуль учебной копии КА2 Progress. Только схема и собственные значения в памяти.

Подготовка

  1. Используйте отдельную учебную копию КА2 Progress, соответствующую C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Названия и настройки проверены по реальным Catalogs/Номенклатура.xml и Catalogs/ВидыПодарочныхСертификатов.xml.

  2. Создайте серверный общий модуль УчебныеЗадачи, вставьте полный модуль одного урока и вызовите ВыполнитьПример() из своего серверного обработчика учебной команды.

  3. Примеры читают схему и создают значения только в памяти. Они не создают и не записывают товары, не меняют метаданные, не запускают заполнение объекта или перестроение поискового индекса.

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

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

  1. Исходная АналитикаДоходов имеет набор типов характеристики СтатьиДоходов, а ведущая СтатьяДоходов — ссылку на план видов характеристик.

  2. СвязьПоТипу читается как описание пути. Оно не является самим выбранным значением статьи и не содержит автоматически прочитанной аналитики из базы.

  3. ЭлементСвязи применяется к номеру вида субконто при связи с планом счетов. В этом реальном примере связь идёт к плану видов характеристик и XML задаёт 0.

  4. Создаём отдельное описание с теми же двумя параметрами. Отдельный Новый СвязьПоТипу без аргументов показывает пустой путь и нулевой элемент.

  5. Фактический допустимый тип аналитики зависит от выбранной характеристики. Не обещаем один ссылочный тип для всех статей и не читаем/записываем сами статьи.

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

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

  2. Описание схемы не изменено, подарочный сертификат и бухгалтерские операции не созданы.

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

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

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

  1. СвязьПоТипу — не обычный отбор ссылок и не значение характеристики.

  2. Не подставляйте номер субконто 1–3 в связь плана видов характеристик только по аналогии с планом счетов.

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

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

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

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

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