Получает пустое значение ссылки на план обмена данного вида.
Синтаксис
ПустаяСсылка()Полное описание, параметры и ограничения
ПланОбменаМенеджер.<Имя плана обмена>.ПустаяСсылка (ExchangePlanManager.<Exchange plan name>.EmptyRef)
ПланОбменаМенеджер.<Имя плана обмена> (ExchangePlanManager.<Exchange plan name>)
ПустаяСсылка (EmptyRef)
Доступен, начиная с версии 8.0.
Синтаксис:
ПустаяСсылка()
Возвращаемое значение:
Тип: ПланОбменаСсылка.<Имя плана обмена>.
Описание:
Получает пустое значение ссылки на план обмена данного вида.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
Может использоваться, например, в тех случаях, когда нужно передать пустую ссылку в параметр метода.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Построить собственную ссылку узла без создания узла или обмена
Функциональный Новый создаёт пустую либо плановую ссылку. UUID передаётся элементом массива параметров; непустая ссылка и существующий узел — разные состояния.
Где и как запускать
Полный серверный модуль своей новой пустой Учебная85, платформа 8.5.1.1343. Только собственный периферийный узел, никакого настоящего обмена; здесь не запускался.
Подготовка
Создайте НОВУЮ пустую файловую учебную базу. В Конфигураторе имя корня Учебная85; не используйте рабочую базу или копию действующего обмена.
В отдельной пустой конфигурации Учебная85 создайте Планы обмена → УчебныйОбмен: длина кода 9, тип Строка, наименование длиной 100. Распределённая информационная база выключена; состав плана пустой.
Добавьте реквизит АдресУчебногоУзла: Строка длиной 100, Проверка заполнения = Показывать ошибку. Модуль объекта и подписки должны быть пустыми; не добавляйте отправку сообщений или внешние действия.
Добавьте макет УчебнаяПамятка типа Текстовый документ, одна строка: Этот узел используется только для учебных примеров. История данных для плана не включена. Обновите конфигурацию базы данных.
В своём УчебныйОбмен включите автонумерацию и контроль уникальности кода. РИБ выключена, состав пустой, расширений/подписок нет, модули пустые. Никаких HTTP/почтовых обработчиков или регистрации чужих изменений не добавляйте.
Уроки здесь не запускались в 1С. В ваших базах не создавались узлы, не отправлялись и не принимались сообщения; HTML показывает только код и объяснение.
ДатаОбмена по установленной справке означает дату последнего обмена с мобильным клиентом с автономным режимом. Её нельзя объявлять временем любой синхронизации или сетевым тестом.
ВерсияДанных — непрозрачная строка платформы, не номер принятого сообщения. Все свойства ссылки readonly; изменения выполняются только у своего объекта.
Создайте серверный общий модуль УчебныеСсылкиОбмена и вставьте весь модуль отдельного урока. ВыполнитьПример() Экспорт вызывайте из собственной процедуры формы с &НаСервереБезКонтекста.
Транзакционные уроки временно записывают только свой новый периферийный узел и всегда откатывают запись. Не заменяйте ОтменитьТранзакцию фиксацией; внутри чужой транзакции модуль не допускается.
Процедура ВыполнитьПример() Экспорт
Если Метаданные.ПланыОбмена.Найти("УчебныйОбмен") = Неопределено Тогда
ВызватьИсключение "Сначала создайте собственный учебный план обмена";
КонецЕсли;
ТипСсылки = Тип("ПланОбменаСсылка.УчебныйОбмен");
Пустая = Новый(Тип("ПланОбменаСсылка.УчебныйОбмен"));
Идентификатор = Новый УникальныйИдентификатор;
Параметры = Новый Массив;
Параметры.Добавить(Идентификатор);
Плановая = Новый(Тип("ПланОбменаСсылка.УчебныйОбмен"), Параметры);
Сообщить(ТипЗнч(Пустая) = ТипСсылки);
Сообщить(Пустая.Пустая());
Сообщить(Пустая = ПланыОбмена.УчебныйОбмен.ПустаяСсылка());
Сообщить(Не Плановая.Пустая());
Сообщить(Плановая.УникальныйИдентификатор() = Идентификатор);
Сообщить(Плановая = ПланыОбмена.УчебныйОбмен.ПолучитьСсылку(Идентификатор));
Сообщить(Плановая.ПолучитьОбъект() = Неопределено);
Сообщить("Ссылка не создала узел и не запустила обмен");
КонецПроцедурыРазбор по шагам
Проверить точную платформу и собственный подготовленный план УчебныйОбмен.
Создать пустую ссылку по прикладному Тип и сравнить её с ПустаяСсылка менеджера.
Создать новый UUID, затем отдельный массив и добавить UUID одним элементом.
Построить плановую ссылку функциональным Новый и сравнить с ПолучитьСсылку того же UUID.
Проверить ПолучитьОбъект=Неопределено; данные отсутствующего узла не читать и Записать не вызывать.
Как проверить результат
Семь сравнений Истина: тип, пустота, равенство пустых ссылок, непустота, UUID, равенство плановых и отсутствие объекта.
Узел в список не добавлен; сообщение обмена не создано.
Второй аргумент Новый — массив, не непосредственный UUID.
Ожидаемый результат
Показана реальная идентичность собственной прикладной ссылки без записи и сетевых операций.
На что обратить внимание
Новый UUID и непустая ссылка не подтверждают существование узла; отдельно проверяется ПолучитьОбъект.
Нулевые счётчики и дата не доказывают успешный обмен. Этот блок не формирует/не читает сообщения и не открывает соединения.
Не присваивайте свойствам ссылки и не устанавливайте ЭтотУзел=Истина для имитации текущей базы.
Откат базы не отменяет внешние действия обработчиков, поэтому урок допускается только в своей пустой конфигурации с пустыми модулями и подписками.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Проверить семейство ссылки: четыре своих типа и три неподходящих значения
ТипВсеСсылки возвращает ОписаниеТипов семейства, не коллекцию записей. Классифицируем семь своих значений и отдельно запрещаем бизнес-действие для распознанных пустых ссылок.
Где и как запускать
Полный серверный модуль новой собственной УчебныеСемейства85, 8.5.1.1343. Только четыре пустые ссылки и семь собственных значений в памяти; записи и обмена нет.
Подготовка
Создайте НОВУЮ пустую файловую базу, корневая конфигурация УчебныеСемейства85, платформа точно 8.5.1.1343. Это не копия УТ/КА2/УНФ/БП. Объекты ниже создаются в Конфигураторе, данные в них не вводятся.
Справочники → Добавить: единственный УчебныеТовары85. Код Строка 9, наименование Строка 50, без владельца, иерархии, предопределённых элементов и дополнительных реквизитов. Модули пустые.
Планы видов характеристик → Добавить: единственный УчебныеСвойства85. Код Строка 9, наименование Строка 50, тип значений характеристик Строка 30. Модули пустые, без дополнительных реквизитов, предопределённых элементов и обработчиков.
Планы счетов → Добавить: единственный УчебныеСчета85. Длина кода 9, наименование 50, без предопределённых счетов и дополнительных реквизитов; модули пустые. Для этого урока счета не создаются и состав субконто не используется.
Планы обмена → Добавить: единственный УчебныеУзлы85. Код Строка 9, наименование Строка 50, распределённая информационная база выключена, состав плана пустой. Не создавайте узлы, сообщения, регистрации изменений и начальные образы; модули пустые.
Других объектов этих четырёх семейств не добавляйте. Документов, регистров, расширений, подписок и фоновых заданий для урока нет. Обновите конфигурацию базы данных.
Создайте серверный общий модуль УчебныеСемействаПримеры. Вставьте весь модуль и вызовите ВыполнитьПример() Экспорт из своей серверной команды обработки. Не вставляйте экспортную процедуру в тело другой процедуры.
Пустые ссылки получаются из своих конкретных менеджеров. Непустые объекты не ищутся по первой строке, кодам или UUID; запись и обмен не выполняются. Данные семи тестов существуют только в собственном массиве в памяти.
Здесь пример в 1С не запускался. Контракты сверены с установленной справкой 8.5.1.1343. Распознавание семейства типа не является проверкой заполнения, существования записи, разрешения доступа или пригодности для бизнес-операции.
Процедура ВыполнитьПример() Экспорт
Если Метаданные.Справочники.Количество() <> 1
Или Метаданные.Справочники.Найти("УчебныеТовары85") = Неопределено Тогда
ВызватьИсключение "Нужен только собственный объект УчебныеТовары85";
КонецЕсли;
Если Метаданные.ПланыСчетов.Количество() <> 1
Или Метаданные.ПланыСчетов.Найти("УчебныеСчета85") = Неопределено Тогда
ВызватьИсключение "Нужен только собственный объект УчебныеСчета85";
КонецЕсли;
Если Метаданные.ПланыВидовХарактеристик.Количество() <> 1
Или Метаданные.ПланыВидовХарактеристик.Найти("УчебныеСвойства85") = Неопределено Тогда
ВызватьИсключение "Нужен только собственный объект УчебныеСвойства85";
КонецЕсли;
Если Метаданные.ПланыОбмена.Количество() <> 1
Или Метаданные.ПланыОбмена.Найти("УчебныеУзлы85") = Неопределено Тогда
ВызватьИсключение "Нужен только собственный объект УчебныеУзлы85";
КонецЕсли;
ТипыТоваров = Справочники.ТипВсеСсылки();
ТипыСчетов = ПланыСчетов.ТипВсеСсылки();
ТипыСвойств = ПланыВидовХарактеристик.ТипВсеСсылки();
ТипыУзлов = ПланыОбмена.ТипВсеСсылки();
Сообщить(ТипЗнч(ТипыТоваров) = Тип("ОписаниеТипов"));
Сообщить(ТипЗнч(ТипыСчетов) = Тип("ОписаниеТипов"));
Сообщить(ТипЗнч(ТипыСвойств) = Тип("ОписаниеТипов"));
Сообщить(ТипЗнч(ТипыУзлов) = Тип("ОписаниеТипов"));
Тесты = Новый Массив;
Тесты.Добавить(Новый Структура("Значение,Ожидается", Справочники.УчебныеТовары85.ПустаяСсылка(), "Справочник"));
Тесты.Добавить(Новый Структура("Значение,Ожидается", ПланыСчетов.УчебныеСчета85.ПустаяСсылка(), "ПланСчетов"));
Тесты.Добавить(Новый Структура("Значение,Ожидается", ПланыВидовХарактеристик.УчебныеСвойства85.ПустаяСсылка(), "ПланВидовХарактеристик"));
Тесты.Добавить(Новый Структура("Значение,Ожидается", ПланыОбмена.УчебныеУзлы85.ПустаяСсылка(), "ПланОбмена"));
Тесты.Добавить(Новый Структура("Значение,Ожидается", 7, "НеПоддерживается"));
Тесты.Добавить(Новый Структура("Значение,Ожидается", "УчебныеТовары85", "НеПоддерживается"));
Тесты.Добавить(Новый Структура("Значение,Ожидается", Неопределено, "НеПоддерживается"));
Распознано = 0;
Отклонено = 0;
Для Каждого Тест Из Тесты Цикл
ТипВхода = ТипЗнч(Тест.Значение);
Если ТипыТоваров.СодержитТип(ТипВхода) Тогда
Категория = "Справочник";
ИначеЕсли ТипыСчетов.СодержитТип(ТипВхода) Тогда
Категория = "ПланСчетов";
ИначеЕсли ТипыСвойств.СодержитТип(ТипВхода) Тогда
Категория = "ПланВидовХарактеристик";
ИначеЕсли ТипыУзлов.СодержитТип(ТипВхода) Тогда
Категория = "ПланОбмена";
Иначе
Категория = "НеПоддерживается";
КонецЕсли;
Если Категория <> Тест.Ожидается Тогда
ВызватьИсключение "Семейство своего тестового значения определено неверно";
КонецЕсли;
Сообщить(Строка(ТипВхода) + " → " + Категория);
Если Категория = "НеПоддерживается" Тогда
Отклонено = Отклонено + 1;
Сообщить("Значение не преобразуется из числа или строки в ссылку");
Иначе
Распознано = Распознано + 1;
Если ЗначениеЗаполнено(Тест.Значение) Тогда
ВызватьИсключение "Тест должен содержать только собственную пустую ссылку";
КонецЕсли;
Сообщить("Семейство распознано, но ссылка пустая: бизнес-действие запрещено");
КонецЕсли;
КонецЦикла;
Если Тесты.Количество() <> 7 Или Распознано <> 4 Или Отклонено <> 3 Тогда
ВызватьИсключение "Не подтверждено прохождение всех семи своих тестов";
КонецЕсли;
Сообщить("Распознано 4 пустых типизированных ссылки, отклонено 3 нессылочных значения");
Сообщить("Определение типа не проверяет существование записи и не разрешает бизнес-операцию");
КонецПроцедурыРазбор по шагам
Проверить точную платформу, имя собственной новой конфигурации и наличие только своих четырёх объектов метаданных.
Получить по одному ОписаниеТипов от менеджера семейства. Справочники — менеджер всех справочников, Справочники.УчебныеТовары85 — менеджер конкретного справочника.
Самостоятельно получить четыре пустые ссылки. Их значения пустые, но типы разные и существуют в собственной конфигурации.
Добавить отрицательные проверки: число 7, строка с названием справочника и Неопределено. Название или числовое значение не преобразуется в ссылку.
Для каждого теста взять ТипЗнч и проверить принадлежность через СодержитТип. Проверяется тип, не имя объекта и не результат Строка.
Сравнить фактическую категорию с собственной ожидаемой. Несоответствие вызывает исключение, а не скрывается в итоговом количестве.
После распознавания отдельно проверить ЗначениеЗаполнено: четыре своих ссылки пустые, поэтому бизнес-действие не выполняется.
Проверить все семь тестов: четыре распознаны как семейства, три отклонены. Записи, обмена и проверки существования объекта в этом опыте нет.
Как проверить результат
Четыре проверки возвращаемого ОписаниеТипов показывают Истина.
Все семь категорий совпадают с заданными ожидаемыми: Справочник, ПланСчетов, ПланВидовХарактеристик, ПланОбмена и три НеПоддерживается.
Четыре ссылки распознаны по типу, но отдельно признаны пустыми; код не использует их как существующие записи.
Итог 4/3 получен после проверки каждого теста, а не вместо проверки содержимого. База и сообщения обмена не изменяются.
Ожидаемый результат
Разобрана проверка входного типа до бизнес-операции и различие между семейством, конкретным типом, заполнением и существованием записи.
На что обратить внимание
Проверка семейства может быть шире допустимого конкретного справочника: в реальном обработчике дополнительно проверяйте точный контракт параметра.
ОписаниеТипов не перечисляет элементы информационной базы. Здесь не выполняются выборки и не читаются данные пустых ссылок.
Тип характеристики Строка не является типом ссылки на элемент плана видов характеристик; этот урок проверяет именно ссылку.
Тип узла плана обмена не даёт разрешения регистрировать изменения, отправлять сообщения или создавать начальный образ.
Заполненная ссылка тоже может вести к отсутствующей записи; этого отдельного условия типовая классификация не доказывает.
Здесь только статическая проверка по справке; запуск в 1С не подтверждён.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.