СообщениеNDEF ожидает ФиксированныйМассив записей. Показываем, почему изменение исходного обычного массива не добавляет запись в уже собранное сообщение.
Где и как запускать
Полный клиентский модуль собственной формы мобильного клиента/приложения. Только создание NDEF-объектов в памяти; без NFC-чтения/записи.
Подготовка
Эти типы доступны в мобильном клиенте или мобильном приложении (клиент), начиная с 8.3.23. Непосредственно в обычном серверном модуле, тонком клиенте Windows или Конфигураторе их не запускайте.
Подготовьте отдельное учебное мобильное приложение/клиент на поддерживаемой платформе. В собственной управляемой форме создайте команду ВыполнитьПример и назначьте клиентский обработчик. Вставьте полный модуль одного урока.
Для создания объектов в памяти физическая NFC-метка не используется. Код не включает NFC, не запрашивает сканирование, не открывает URI и не записывает ничего на метку.
Все данные собственные учебные: Книга, guide-book, количество 3 и фиктивные домены example.invalid. Не кладите в NFC-примеры реальные токены, пароль, персональные сведения или ссылку на закрытую рабочую систему.
&НаКлиенте
Процедура ВыполнитьПример(Команда)
Записи = Новый Массив;
Записи.Добавить(Новый ТекстоваяЗаписьNDEF("Книга", "ru"));
Записи.Добавить(Новый URIЗаписьNDEF("https://syntax-guide.example.invalid/book/guide-book"));
Состав = Новый ФиксированныйМассив(Записи);
Сообщение = Новый СообщениеNDEF(Состав);
Сообщить(Сообщение.Записи.Количество() = 2);
Сообщить(ТипЗнч(Сообщение.Записи[0]) = Тип("ТекстоваяЗаписьNDEF"));
Сообщить(ТипЗнч(Сообщение.Записи[1]) = Тип("URIЗаписьNDEF"));
Сообщить(Сообщение.Записи[0].Текст = "Книга");
Сообщить("Полный размер сообщения в байтах: " + Строка(Сообщение.Размер));
Записи.Добавить(Новый ТекстоваяЗаписьNDEF("Собственная третья запись", "ru"));
Сообщить(Записи.Количество() = 3);
Сообщить(Сообщение.Записи.Количество() = 2);
НовоеСообщение = Новый СообщениеNDEF(Новый ФиксированныйМассив(Записи));
Сообщить(НовоеСообщение.Записи.Количество() = 3);
КонецПроцедурыРазбор по шагам
Создаём два собственных объекта записей и обычный массив. Перед конструктором сообщения явно преобразуем его в ФиксированныйМассив.
Первые два индекса существуют, потому что сообщение составлено самим уроком из двух записей. Для чужого считанного сообщения нужна отдельная проверка состава.
Размер относится к целому NDEF-сообщению в байтах, а не только строке Книга. Не выдумываем универсальную ёмкость любой физической метки.
Добавление третьей записи меняет только исходный обычный массив. Состав ранее созданного фиксированного сообщения остаётся из двух записей.
Для нового состава создаётся новое сообщение из нового фиксированного массива. Ни одно сообщение не отправляется на метку.
Как проверить результат
Семь контрольных Истина и фактический размер двухзаписного сообщения.
Старое сообщение содержит 2 записи, новое — 3. NFC-носитель не нужен и не изменён.
Ожидаемый результат
Показано правильное составление и пересоздание NDEF-сообщения из нескольких типизированных записей.
На что обратить внимание
Нельзя передавать обычный Массив вместо документированного ФиксированныйМассив.
Не сравнивайте размер сообщения с количеством его записей или символов текста.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.