Создать пустую и плановую ссылку функциональной формой Новый

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

Тип прикладного объекта существует после подготовки метаданных. Второй параметр функционального Новый — массив аргументов, не один UUID; ссылка сама по себе не создаёт запись.

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

Полный серверный модуль своей новой пустой конфигурации Учебная85, платформа 8.5.1.1343. Собственные ссылки/объекты, временная запись только с откатом; здесь не запускался.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.

  2. Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.

  3. Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.

  4. Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.

  5. Для этого блока УчебныеТовары не подчинён владельцу, не имеет предопределённых элементов и дополнительных обработчиков. Модули объекта/менеджера пусты, подписок и расширений нет. Иерархия групп и элементов допускает два уровня ниже корня.

  6. Точную платформу 8.5.1.1343 проверяет код. Ссылки и объекты создаются самим уроком; UUID не подменяется знакомым кодом из УТ/КА2/УНФ/БП.

  7. Свойства ссылки readonly, свойства полученного объекта могут быть записываемыми. Ссылка.Скопировать возвращает новый объект, но сам метод не записывает его в базу.

  8. Непустой UUID/ссылка не подтверждает наличие записи. Для плановой ссылки проверяется ПолучитьОбъект=Неопределено, а данные отсутствующей записи не читаются.

  9. ВерсияДанных — непрозрачная строка платформы, не число, дата, версия конфигурации или номер обновления. Урок не декодирует и не назначает её вручную.

  10. Здесь в 1С примеры не запускались. Проверены исходники и установленная справка; записи/формы в ваших базах этим заполнением не создавались.

  11. Весь модуль вставьте в серверный общий модуль УчебныеСсылки. Его серверная экспортная процедура ВыполнитьПример вызывается из своей процедуры формы с &НаСервереБезКонтекста. Не вставляйте готовую процедуру внутрь другого обработчика.

  12. В транзакционных опытах временно записываются только собственные новые товар/группы, затем выполняется ОтменитьТранзакцию и при успехе, и при ошибке. Не заменяйте откат фиксацией и не вызывайте этот модуль внутри чужой транзакции.

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

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

  1. Проверить собственную Учебная85 и наличие подготовленного УчебныеТовары.

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

  3. Создать новый собственный UUID и поместить его одним элементом в отдельный Массив.

  4. Передать Тип и массив в функциональный Новый; сравнить с ПолучитьСсылку того же UUID.

  5. Проверить отсутствие объекта у непустой плановой ссылки. Данные отсутствующего товара не читать и Записать не вызывать.

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

  1. Шесть проверок Истина: правильный тип, пустая/непустая ссылка, UUID, равенство и отсутствие записи.

  2. Никакой новый товар не появился в базе.

  3. Второй аргумент Новый — Массив с UUID; прямой UUID по установленному описанию функционального Новый игнорировался бы.

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

На собственном новом UUID разобран реальный конструктор прикладной ссылки без записи.

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

  1. Объект и ссылка не взаимозаменяемы: только объект используется для изменения данных, ссылка идентифицирует запись.

  2. Ссылки на отсутствующий или отменённый объект не следует читать как существующий товар.

  3. Никакие чужие объекты не ищутся по первому совпадению/первой строке и не удаляются по названию.

  4. Свойства ссылки не присваиваются, а непрозрачная ВерсияДанных не декодируется.

  5. Откат базы не отменяет внешние действия обработчиков, поэтому допускается только подготовленная своя пустая конфигурация без таких обработчиков.

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

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

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

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

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