ПланОбменаОбъект.<Имя плана обмена>.Прочитать

Методы · Read

Считывает данные узла из базы данных.

Синтаксис

Прочитать()
Полное описание, параметры и ограничения

ПланОбменаОбъект.<Имя плана обмена>.Прочитать (ExchangePlanObject.<Exchange plan name>.Read)

ПланОбменаОбъект.<Имя плана обмена> (ExchangePlanObject.<Exchange plan name>)

Прочитать (Read)

Доступен, начиная с версии 8.0.

Синтаксис:
Прочитать()
Описание:

Считывает данные узла из базы данных.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

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

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Записать и перечитать только свой временный узел

Собственный UUID появляется лишь внутри своей транзакции. Показываем отличие изменения объекта в памяти от повторного чтения записи, затем полностью отменяем транзакцию.

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

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

Подготовка

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

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

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

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

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

  6. В отдельной пустой конфигурации Учебная85 создайте Планы обмена → УчебныйОбмен: длина кода 9, тип Строка, наименование длиной 100. Распределённая информационная база выключена; состав плана пустой.

  7. Добавьте реквизит АдресУчебногоУзла: Строка длиной 100, Проверка заполнения = Показывать ошибку. Модуль объекта и подписки должны быть пустыми; не добавляйте отправку сообщений или внешние действия.

  8. Добавьте макет УчебнаяПамятка типа Текстовый документ, одна строка: Этот узел используется только для учебных примеров. История данных для плана не включена. Обновите конфигурацию базы данных.

  9. Каждый фрагмент запускайте отдельно на сервере в ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи. УчебныйОбмен не является существующим рабочим обменом КА2 или УТ.

  10. Узел каждый раз новый и периферийный. Существующие узлы и текущий узел базы не меняются. Запись, блокировка и удаление далее выполняются только над своим новым UUID в собственной отменяемой транзакции.

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

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

  1. Сначала исключаем чужую активную транзакцию и проверяем отсутствие объекта по собственному UUID.

  2. Создаём только новый периферийный узел, задаём его будущую ссылку, адрес и код.

  3. Записать делает объект доступным внутри собственной транзакции, ещё без фиксации.

  4. Прочитать возвращает значения записи и сбрасывает локальную изменённость. Несохранённое имя намеренно теряется при повторном чтении.

  5. ВерсияДанных относится к записи, не к номеру сообщения обмена. Без второй записи версия остаётся той же.

  6. Обе ветки завершаются отменой собственной транзакции. В конце по собственному UUID нет узла.

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

  1. Девять сравнений Истина.

  2. Свой временный узел отсутствует после отмены; текущий и прежние узлы не менялись.

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

Разобраны запись, версия и локальная модифицированность на своём полностью отменяемом объекте.

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

  1. Прочитать может уничтожить несохранённые изменения объекта в памяти.

  2. Не заменяйте ОтменитьТранзакцию на фиксацию в этом учебном уроке.

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

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

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

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

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