Прочитать значение заполнения, не обещая автоматическое заполнение товара

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

У ВариантОформленияПродажи задано значение РеализацияТоваровУслуг, но FillFromFillingValue=false. Значение и разрешение его использования — разные настройки.

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

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

Подготовка

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

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

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

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

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

  1. ЗначениеЗаполнения читается как типизированное значение пользовательского перечисления, не как строка РеализацияТоваровУслуг.

  2. Ожидаемое значение существует в XML этой КА2. Оно не объявляется универсальным для УТ, УНФ или пустой учебной конфигурации.

  3. ЗаполнятьИзДанныхЗаполнения читается отдельно и в исходном XML равно false. Не делаем из факта наличия значения вывод о заполнении каждого нового объекта.

  4. СодержитТип проверяет совместимость значения со схемой. Объект не создаётся, Заполнить и Записать не вызываются.

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

  1. Три проверки — Истина в исходной копии и пояснение выключенного флага.

  2. Никакая номенклатура не изменена; подтверждение реального заполнения потребовало бы отдельного теста обработчика на копии.

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

Ученик различает объявленный шаблон значения и фактический механизм заполнения объекта.

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

  1. Не подменяйте значение пользовательского перечисления строкой его имени.

  2. Метаданные не объясняют все программные переопределения заполнения.

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

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

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

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

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