ПланОбменаОбъект.<Имя плана обмена>.ДатаОбмена

Свойства · ExchangeDate

Тип: Дата. Дата последнего обмена с мобильным клиентом с автономным режимом.

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

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

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

ДатаОбмена (ExchangeDate)

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

Использование:
Только чтение.
Описание:
Тип: Дата.
Дата последнего обмена с мобильным клиентом с автономным режимом.
Доступность:

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

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

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

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

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

Создать черновик узла без запуска обмена

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

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

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

Подготовка

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

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

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

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

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

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

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

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

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

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

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

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

  1. СоздатьУзел возвращает новый объект, который ещё не записан. ЭтотУзел проверяется до изменения полей.

  2. Ссылка пуста, а ПолучитьСсылкуНового тоже пустая до явного резервирования UUID.

  3. НомерОтправленного и НомерПринятого относятся к разным направлениям сообщений. Они не равны количеству товаров или документов.

  4. ДополнительныеСвойства хранит временную цель упражнения. Это не добавление реквизита в метаданные.

  5. ДатаОбмена связана с обменом мобильного клиента с автономным режимом; чтение даты не запускает обмен и не задаёт время текущего урока.

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

  1. Восемь сравнений Истина в новом учебном узле.

  2. Версия и дата диагностические: ни одно сообщение не было сформировано или отправлено.

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

Создан собственный черновик периферийного узла без сетевых действий и записи.

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

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

  2. Нулевые счётчики не являются подтверждением успешного обмена.

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

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

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

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

Полный серверный модуль своей новой пустой Учебная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С» и не аффилирован с ней.