ПланОбменаСсылка.<Имя плана обмена>.ЭтотУзел

Свойства · ThisNode

Тип: Булево. Если свойство установлено в значение Истина, то данный объект является текущим узлом информационной базы. В противном случае, объект является другим узлом.

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

ПланОбменаСсылка.<Имя плана обмена>.ЭтотУзел (ExchangePlanRef.<Exchange plan name>.ThisNode)

ПланОбменаСсылка.<Имя плана обмена> (ExchangePlanRef.<Exchange plan name>)

ЭтотУзел (ThisNode)

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

Использование:
Только чтение.
Описание:
Тип: Булево.
Если свойство установлено в значение Истина, то данный объект является текущим узлом информационной базы. В противном случае, объект является другим узлом.
Доступность:

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

Использование в версии:

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

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

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

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

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

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

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

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу. В Конфигураторе имя корня Учебная85; не используйте рабочую базу или копию действующего обмена.

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

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

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

  5. В своём УчебныйОбмен включите автонумерацию и контроль уникальности кода. РИБ выключена, состав пустой, расширений/подписок нет, модули пустые. Никаких HTTP/почтовых обработчиков или регистрации чужих изменений не добавляйте.

  6. Уроки здесь не запускались в 1С. В ваших базах не создавались узлы, не отправлялись и не принимались сообщения; HTML показывает только код и объяснение.

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

  8. ВерсияДанных — непрозрачная строка платформы, не номер принятого сообщения. Все свойства ссылки readonly; изменения выполняются только у своего объекта.

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

  10. Транзакционные уроки временно записывают только свой новый периферийный узел и всегда откатывают запись. Не заменяйте ОтменитьТранзакцию фиксацией; внутри чужой транзакции модуль не допускается.

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

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

  1. Создать свой периферийный источник с новым UUID внутри новой отменяемой транзакции.

  2. Временно записать источник и получить именно его ссылку; ещё раз исключить текущий узел.

  3. Вызвать Скопировать на ссылке, проверить периферийность возвращённого объекта.

  4. Изменить только копию в памяти, проверить тип объекта, ЭтоНовый и пустоту её ссылки.

  5. Повторно получить исходный объект и проверить прежнее имя/адрес; не обращаться к выдуманным сетевым методам адреса.

  6. Не записывать копию. Откатить источник и проверить отсутствие своей исходной записи.

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

  1. Пять сравнений независимой копии Истина и проверки отката.

  2. Копия остаётся новым незаписанным объектом с пустой ссылкой.

  3. Источник не изменён копией, и после отката в базе не остаётся собственный источник.

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

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

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

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

  2. Нулевые счётчики и дата не доказывают успешный обмен. Этот блок не формирует/не читает сообщения и не открывает соединения.

  3. Не присваивайте свойствам ссылки и не устанавливайте ЭтотУзел=Истина для имитации текущей базы.

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

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

Открыть обычную форму ссылки только собственного подготовленного узла

Отдельный толстоклиентский урок: именованная обычная форма получает реального владельца ЭтаФорма, новый ключ окна и проверку отказа. Серверная транзакция сюда не переносится.

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

Полный модуль собственной ОБЫЧНОЙ формы обработки, толстый клиент с обычным приложением 8.5.1.1343; собственный подготовленный периферийный FORM85. Здесь не запускался.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу. В Конфигураторе имя корня Учебная85; не используйте рабочую базу или копию действующего обмена.

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

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

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

  5. В своём УчебныйОбмен включите автонумерацию и контроль уникальности кода. РИБ выключена, состав пустой, расширений/подписок нет, модули пустые. Никаких HTTP/почтовых обработчиков или регистрации чужих изменений не добавляйте.

  6. Уроки здесь не запускались в 1С. В ваших базах не создавались узлы, не отправлялись и не принимались сообщения; HTML показывает только код и объяснение.

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

  8. ВерсияДанных — непрозрачная строка платформы, не номер принятого сообщения. Все свойства ссылки readonly; изменения выполняются только у своего объекта.

  9. Запускайте толстый клиент в режиме обычного приложения. Создайте у своего плана ОБЫЧНУЮ форму узла УчебнаяФормаСсылкиУзла; не управляемую форму. Модуль пустой.

  10. Добавьте обычные поля кода/наименования; выключите для них доступность и не добавляйте кнопки Записать/ОК/Удалить. Форма учебная, без обработчиков отправки/чтения сообщений.

  11. Вручную подготовьте один собственный ПЕРИФЕРИЙНЫЙ узел: Код FORM85, Наименование Собственный учебный узел формы, АдресУчебногоУзла example.invalid. Не используйте текущий узел. Объект создаётся оператором заранее, этот код его не создаёт/не удаляет.

  12. Создайте обычную форму своей обработки с командой ПоказатьУчебныйУзел и вставьте весь код в её модуль. ЭтаФорма — реальный владелец, это не серверный общий модуль.

  13. После просмотра закройте окно вручную без сохранения. Не удерживайте транзакцию пока пользователь рассматривает интерактивную форму.

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

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

  1. Проверить свою платформу, конфигурацию и подготовленный учебный план.

  2. Найти только FORM85 и проверить имя, отсутствие пометки удаления и ЭтотУзел=Ложь.

  3. Передать именованную обычную форму, настоящую ЭтаФорма и новый UUID ключа уникальности.

  4. Если возвращено Неопределено, сообщить отказ и не вызывать Открыть.

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

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

  1. Открыта обычная УчебнаяФормаСсылкиУзла собственного подготовленного периферийного узла.

  2. Отсутствующий/текущий/неподходящий узел останавливает открытие.

  3. Отказ создания формы не объявляется успехом, сетевых сообщений нет.

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

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

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

  1. ПолучитьФорму ссылки доступен толстому клиенту, это не универсальное ОткрытьФорму управляемого приложения.

  2. ЭтотУзел readonly не меняется и не используется как переключатель режима соединения.

  3. Сам код не сохраняет форму. Ручные действия оператора не являются проверенным результатом этого заполнения.

  4. Нельзя заменить проверенный собственный узел первой найденной записью из рабочего обмена.

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

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

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

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

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