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

Свойства · DeletionMark

Тип: Булево. Содержит признак пометки на удаление узла. Истина - пометка удаления установлена.

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

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

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

ПометкаУдаления (DeletionMark)

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

Использование:
Только чтение.
Описание:
Тип: Булево.
Содержит признак пометки на удаление узла.
Истина - пометка удаления установлена.
Доступность:

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

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

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

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

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

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

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

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

Полный модуль собственной ОБЫЧНОЙ формы обработки, толстый клиент с обычным приложением 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. Нельзя заменить проверенный собственный узел первой найденной записью из рабочего обмена.

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

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

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

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

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

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

  1. Сначала убедиться, что чужой транзакции нет, и зарезервировать собственную отсутствующую ссылку нового UUID.

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

  3. Записать свой узел внутри новой транзакции; читать поля только по настоящей сохранённой ссылке.

  4. ЭтотУзел указывает текущую базу, не факт соединения; здесь он Ложь. Счётчики нового узла не подтверждают передачу.

  5. Проверить тип даты и равенство объекту, без угадывания даты. Версия — строка, а имя метаданных — УчебныйОбмен.

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

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

  1. Одиннадцать сравнений паспорта Истина и две проверки итогового отката.

  2. Ни одному свойству Читаемая ничего не присваивается.

  3. Сообщения обмена не отправлены, текущий узел базы не изменён.

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

Все девять readonly-свойств ссылки разобраны на собственном сохранённом периферийном объекте с откатом.

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

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

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

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

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

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

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

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

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

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