Разбираемся на практике

Ссылка и объект в 1С:
как прочитать и изменить один товар

Товар выбрали в поле формы, но его название не получается изменить. Давайте разделим две задачи: указать, какой это товар, и получить данные, которые собираемся записать.

Модуль формы 1С: ссылка Товар, ПолучитьОбъект, изменение наименования и Записать
  • Идентификатор и изменяемые данные
  • Один товар вместо большой конфигурации
  • Запись отдельным действием
  • Проверка после повторного открытия
Содержание

Подготовьте один учебный справочник

Создайте в пустой конфигурации справочник «Товары» с наименованием длиной 100. Добавьте элемент «Учебная лампа». Никакие данные магазина или работодателя для примера не нужны.

В управляемой форме обработки создайте реквизит «Товар» типа СправочникСсылка.Товары. Перетащите его в форму и выберите созданный элемент. Это значение указывает на товар, но не превращает поле формы в редактор всех его данных.

  1. Справочник «Товары» в Конфигураторе

    Откройте вкладку «Данные» справочника и задайте длину наименования 100. На снимке — наша отдельная учебная база, а не типовая конфигурация.

    Справочник Товары в Конфигураторе 1С: вкладка Данные и длина наименования 100
    Сначала создаём объект метаданных. Только после этого тип СправочникСсылка.Товары появится в выборе типов реквизита формы.
  2. Проверьте тип реквизита «Товар»

    Справа в редакторе формы видно: реквизит Товар имеет тип СправочникСсылка.Товары. Слева — поле на экране и кнопка Переименовать. Не выбирайте здесь Строка только потому, что в поле будет отображаться название.

    Реквизит Товар типа СправочникСсылка.Товары и кнопка Переименовать в редакторе формы 1С
    Одна строка справа задаёт данные формы, элемент слева выводит их на экран. Технический путь в заголовке относится к файлу учебной обработки; повторять этот путь у себя не нужно.

Когда достаточно ссылки

Ссылку удобно хранить в строке заказа, передавать параметром запроса и сравнивать с другой ссылкой того же типа. Два выбора одного товара указывают на один элемент, даже если сделали их в разных формах.

По ссылке можно читать реквизиты. Но такое чтение не означает, что ссылка стала объектом для записи. И не стоит читать десятки реквизитов по ссылкам внутри большого цикла: для списка сначала продумайте запрос.

Как получить объект и записать изменение

Добавьте команду «Переименовать» и создайте её клиентский обработчик. Из него вызовите серверную процедуру ниже. В ней доступен реквизит формы Товар. Пример меняет только выбранный учебный элемент.

Проверка заполнения нужна до ПолучитьОбъект. Если выбор пустой, сообщите об этом и завершите действие. После успешной записи заново откройте товар из списка.

Модуль формы в Конфигураторе: Товар.ПолучитьОбъект, изменение Наименования и ОбъектТовара.Записать
В настоящем модуле открыт тот же пример, который приведён ниже. ПолучитьОбъект получает изменяемые данные, присваивание меняет их в памяти, а Записать — отдельная следующая строка. Это снимок кода, не подтверждение уже выполненной записи.
Модуль формы учебной обработки
&НаКлиенте
Процедура Переименовать(Команда)
    ПереименоватьНаСервере();
КонецПроцедуры

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

Сравните состояние до и после записи

Сначала временно уберите только строку Записать. Выполните команду и посмотрите наименование в переменной ОбъектТовара: оно новое. Откройте товар заново — в базе осталось старое название. Верните запись и повторите опыт.

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

Два независимых действия
ШагЧто меняется
Присвоить НаименованиеДанные полученного объекта в памяти
Вызвать ЗаписатьСохранённый элемент справочника

Проверьте, что можете объяснить решение

Добавьте поле «НовоеНаименование» и запретите пустое название. Передавайте его в ту же серверную процедуру. Проверьте выбранный товар, пустой выбор и строку из пробелов.

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

Самопроверка

Частые вопросы

Ссылка — это строка с названием?

Нет. Разные элементы могут иметь одинаковые названия. Ссылка идентифицирует элемент, а название — его реквизит.

ПолучитьОбъект уже изменяет базу?

Нет. Он получает данные для работы. Изменения сохраняет Записать.

Нужно получать объект для запроса?

Если нужен отбор по выбранному товару, обычно передают ссылку параметром запроса.

Первичные источники

Что проверить дополнительно

·

Полезный материал

Поделиться статьёй

Сохраните материал или отправьте его тому, кому он пригодится.

Шаг 1 из 5

Данные в 1С: как выбирать значения, читать и проверять результат

Выберите коллекцию под задачу: список значений, описание одного предмета или поиск по ключу.

Следующий шаг

От прочитанного примера — к своему решению

В «1С код» — 153 бесплатные задачи по языку, коллекциям и запросам. Формат похож на LeetCode: небольшое условие, ваше решение и результат проверки. Начните с простой задачи и попробуйте объяснить свой код.

Нужен бесплатный вход. AI-раздел и практика с проверкой ментором имеют отдельные условия доступа. В «1С код» действуют лимиты попыток и восстановление жизней.
Попробовать «1С код» бесплатно →