Из реального поддерживаемого сервером типа и его описания создаём настоящий новый незаписанный объект. По фактическим именам его параметров считаем структурный план без чтения значений, токенов, Записать и отправки сообщений.
Где и как запускать
Неглобальный непривилегированный серверный общий модуль своей новой CF8.5.1.1343 на Windows x64. Все обращения — только к вручную подготовленному собственному локальному серверу взаимодействия; клиент получает строку.
Подготовка
Это будущий ручной опыт: здесь 1С, сервер взаимодействия, COM, сеть и база не запускались. Создайте свою новую изолированную Windows x64 VM, пустую учебную CF платформы 8.5.1.1343 и отдельный собственный локальный сервер взаимодействия. Не используйте рабочие серверы, абонентов или чужие аккаунты.
В CF задайте Имя = УчебныйЧерновикИнтеграции85; Версия = OWN85:interaction:draft; Основной режим запуска = Управляемое приложение; Режим совместимости = Не использовать. Не добавляйте предметные данные, расширения, фоновые задания, обработчики сообщений или запуска. Сервер взаимодействия вручную подготовьте только на http://localhost:9094, без публичной публикации, SMTP, внешних интеграций и совместного использования приложений.
В конфигураторе своей ИБ вручную создайте единственного пользователя: Имя = Уч85Черн_ и ваш новый ненулевой UUID в канонической записи; Полное имя = Учебный участник. Только на этом стенде заранее выдайте необходимые права Администрирование данных и администрирования системы взаимодействия. Войдите под ним; код не создаёт пользователей, не назначает права и не включает привилегированный режим.
Вручную зарегистрируйте только эту собственную пустую ИБ на своём отдельном сервере; Наименование приложения = УчебныйЧерновикИнтеграции85. Синхронизируйте своего внутреннего пользователя: имя, полное имя и связь с пользователем ИБ совпадают, пользователь не внешний и не заблокирован. Код проверит реальное соответствие в обе стороны и настоящую регистрацию своего приложения. Имя, адрес и UUID не являются доказательством владения сервером.
Общие → Общие модули: создайте ЧерновикИнтеграции85Сервер. Сервер = Да; Глобальный, Привилегированный, ВызовСервера, Клиент (управляемое приложение), Клиент (обычное приложение), ВнешнееСоединение = Нет; ПовторноеИспользованиеВозвращаемыхЗначений = НеИспользовать. В пустой модуль вставьте весь основной код. Он вызывается своей серверной функцией формы.
Общие → Общие формы: создайте управляемую ПланИнтеграции85. Реквизиты Согласие85 и Остановка85 — Булево; Протокол85 — Строка, длина 0. Согласие85 выведите флажком, Остановка85 не давайте редактировать. Начальное фактическое Ложь проверит код; значения редактора не предполагаются. Протокол85 — многострочное поле, ТолькоПросмотр = Да. АвтоматическоеСохранениеДанныхВНастройках = НеИспользовать; СохранениеДанныхВНастройках = НеИспользовать — это разные перечисления.
В форме → Команды создайте Подготовить85, Действие = Подготовить85, ИспользованиеТекущейСтроки и ИспользованиеВыделенныхСтрок = НеИспользует; добавьте кнопку. Вставьте целиком отдельный модуль формы ниже. Создайте свою подсистему УчебныйЧерновик85. Общие → Общие команды: ОткрытьПланИнтеграции85, без параметра, видима в этой подсистеме; вставьте отдельный полный модуль команды ниже.
Никакие настоящие токены, пароли мессенджеров, параметры чужих интеграций или адреса внешних сервисов не вводятся. Первый тип берётся из фактического списка своего сервера. Если список или описание параметров пусты либо новый объект не возвращает настоящее соответствие параметров, опыт прекращается как неподготовленный — не исправляйте это выдуманным типом, fake-соответствием, токеном, сохранением или внешним ботом.
&НаСервере
Функция ПодготовитьПлан85(Знач Подтверждено85) Экспорт
Если ТипЗнч(Подтверждено85) <> Тип("Булево") Или Не Подтверждено85 Тогда
ВызватьИсключение "Обращение к собственному учебному серверу не подтверждено";
КонецЕсли;
ПроверитьСвойСтенд85();
ПоддерживаемыеТипы85 = СистемаВзаимодействия.ПолучитьТипыВнешнихСистем();
Если ТипЗнч(ПоддерживаемыеТипы85) <> Тип("ФиксированныйМассив")
Или ПоддерживаемыеТипы85.Количество() = 0 Тогда
ВызватьИсключение "Свой сервер не вернул непустой список поддерживаемых типов";
КонецЕсли;
ТипСистемы85 = "";
Для Каждого ВозвращенныйТип85 Из ПоддерживаемыеТипы85 Цикл
Если ТипЗнч(ВозвращенныйТип85) <> Тип("Строка") Или ПустаяСтрока(ВозвращенныйТип85) Тогда
ВызватьИсключение "Поддерживаемый тип не является непустой строкой";
КонецЕсли;
Если ТипСистемы85 = "" Тогда
ТипСистемы85 = ВозвращенныйТип85;
КонецЕсли;
КонецЦикла;
Описание85 = СистемаВзаимодействия.ПолучитьОписаниеВнешнейСистемы(ТипСистемы85);
Если ТипЗнч(Описание85) <> Тип("ОписаниеВнешнейСистемыСистемыВзаимодействия") Тогда
ВызватьИсключение "Не получено настоящее описание выбранного сервером типа";
КонецЕсли;
ТипОписания85 = Описание85.Тип;
ОписанияПараметров85 = Описание85.ОписанияПараметров;
Если ТипЗнч(ТипОписания85) <> Тип("Строка") Или ТипОписания85 <> ТипСистемы85
Или ТипЗнч(ОписанияПараметров85) <> Тип("ФиксированныйМассив") Тогда
ВызватьИсключение "Описание не соответствует фактически выбранному типу";
КонецЕсли;
Описано85 = ОписанияПараметров85.Количество();
Если Описано85 = 0 Тогда
ВызватьИсключение "Для полного опыта требуется настоящее непустое описание параметров";
КонецЕсли;
Требования85 = Новый Соответствие;
Обязательных85 = 0;
Для Каждого ОписаниеПараметра85 Из ОписанияПараметров85 Цикл
Если ТипЗнч(ОписаниеПараметра85) <> Тип("ОписаниеПараметраВнешнейСистемыСистемыВзаимодействия") Тогда
ВызватьИсключение "В описании параметров присутствует неподтвержденный тип";
КонецЕсли;
ИмяПараметра85 = ОписаниеПараметра85.Имя;
Обязательный85 = ОписаниеПараметра85.Обязательный;
Если ТипЗнч(ИмяПараметра85) <> Тип("Строка") Или ПустаяСтрока(ИмяПараметра85)
Или ТипЗнч(Обязательный85) <> Тип("Булево") Тогда
ВызватьИсключение "Имя или признак обязательности параметра не подтверждены";
КонецЕсли;
Если Требования85.Получить(ИмяПараметра85) <> Неопределено Тогда
ВызватьИсключение "Имя параметра повторяется в фактическом описании";
КонецЕсли;
Требования85.Вставить(ИмяПараметра85, Обязательный85);
Если Обязательный85 Тогда
Обязательных85 = Обязательных85 + 1;
КонецЕсли;
КонецЦикла;
Если Требования85.Количество() <> Описано85 Тогда
ВызватьИсключение "Не подтвержден полный состав описанных параметров";
КонецЕсли;
Метка85 = Новый УникальныйИдентификатор;
Если ТипЗнч(Метка85) <> Тип("УникальныйИдентификатор") Тогда
ВызватьИсключение "Собственная метка черновика не создана";
КонецЕсли;
СобственныйКлюч85 = "own-draft85-" + Строка(Метка85);
Черновик85 = СистемаВзаимодействия.СоздатьИнтеграцию();
Если ТипЗнч(Черновик85) <> Тип("ИнтеграцияСистемыВзаимодействия") Тогда
ВызватьИсключение "Не получен новый собственный объект интеграции";
КонецЕсли;
Черновик85.ТипВнешнейСистемы = ТипСистемы85;
Черновик85.Ключ = СобственныйКлюч85;
Черновик85.Использование = Ложь;
ФактическийТип85 = Черновик85.ТипВнешнейСистемы;
ФактическийКлюч85 = Черновик85.Ключ;
ФактическоеИспользование85 = Черновик85.Использование;
Если ТипЗнч(ФактическийТип85) <> Тип("Строка") Или ФактическийТип85 <> ТипСистемы85
Или ТипЗнч(ФактическийКлюч85) <> Тип("Строка") Или ФактическийКлюч85 <> СобственныйКлюч85
Или ТипЗнч(ФактическоеИспользование85) <> Тип("Булево") Или ФактическоеИспользование85 Тогда
ВызватьИсключение "Перечитанные свойства своего черновика не совпали";
КонецЕсли;
Параметры85 = Черновик85.ПараметрыВнешнейСистемы;
Если ТипЗнч(Параметры85) <> Тип("Соответствие") Тогда
ВызватьИсключение "Параметры не являются настоящим соответствием; подготовка не подтверждена";
КонецЕсли;
Ключей85 = Параметры85.Количество();
Присутствующие85 = Новый Соответствие;
Известных85 = 0;
ОбязательныхПрисутствует85 = 0;
Неизвестных85 = 0;
Для Каждого ПараПараметра85 Из Параметры85 Цикл
КлючПараметра85 = ПараПараметра85.Ключ;
Если ТипЗнч(КлючПараметра85) <> Тип("Строка") Или ПустаяСтрока(КлючПараметра85) Тогда
ВызватьИсключение "Ключ фактического параметра не является непустым строковым именем";
КонецЕсли;
Если Присутствующие85.Получить(КлючПараметра85) <> Неопределено Тогда
ВызватьИсключение "Фактический обход повторил ключ параметра";
КонецЕсли;
Присутствующие85.Вставить(КлючПараметра85, Истина);
Требование85 = Требования85.Получить(КлючПараметра85);
Если ТипЗнч(Требование85) = Тип("Булево") Тогда
Известных85 = Известных85 + 1;
Если Требование85 Тогда
ОбязательныхПрисутствует85 = ОбязательныхПрисутствует85 + 1;
КонецЕсли;
ИначеЕсли Требование85 = Неопределено Тогда
Неизвестных85 = Неизвестных85 + 1;
Иначе
ВызватьИсключение "Собственная таблица требований содержит неподтвержденное значение";
КонецЕсли;
КонецЦикла;
Если Присутствующие85.Количество() <> Ключей85 Или Известных85 + Неизвестных85 <> Ключей85
Или Известных85 > Описано85 Или ОбязательныхПрисутствует85 > Обязательных85 Тогда
ВызватьИсключение "Полный расчет состава параметров не подтвержден";
КонецЕсли;
Необязательных85 = Описано85 - Обязательных85;
Отсутствующих85 = Описано85 - Известных85;
ОбязательныхОтсутствует85 = Обязательных85 - ОбязательныхПрисутствует85;
Если Черновик85.ТипВнешнейСистемы <> ФактическийТип85
Или Черновик85.Ключ <> ФактическийКлюч85
Или Черновик85.Использование <> ФактическоеИспользование85 Тогда
ВызватьИсключение "Свойства своего черновика изменились во время проверки";
КонецЕсли;
Строки85 = Новый Массив;
Строки85.Добавить("Собственный ключ черновика: " + ФактическийКлюч85);
Строки85.Добавить("Фактический поддерживаемый тип: " + ФактическийТип85 + "; Использование: " + Строка(ФактическоеИспользование85));
Строки85.Добавить("Сервер описал имен: " + Строка(Описано85) + "; обязательных: " + Строка(Обязательных85) + "; необязательных: " + Строка(Необязательных85));
Строки85.Добавить("Ключей в параметрах черновика: " + Строка(Ключей85) + "; известных: " + Строка(Известных85) + "; неизвестных: " + Строка(Неизвестных85));
Строки85.Добавить("Описанных имен отсутствует: " + Строка(Отсутствующих85) + "; обязательных присутствует: " + Строка(ОбязательныхПрисутствует85) + "; обязательных отсутствует: " + Строка(ОбязательныхОтсутствует85));
Для Каждого ПараТребования85 Из Требования85 Цикл
ЕстьИмя85 = Присутствующие85.Получить(ПараТребования85.Ключ) = Истина;
Строки85.Добавить(ПараТребования85.Ключ + ": обязательный = " + Строка(ПараТребования85.Значение) + "; имя присутствует = " + Строка(ЕстьИмя85));
КонецЦикла;
Строки85.Добавить("Это структурный план имен параметров, не проверка их значений или готовности к подключению. Значения не читались. Записать и отправка сообщений не вызывались. Отсутствие внутренних серверных действий и офлайн работа не обещаются.");
Возврат СтрСоединить(Строки85, Символы.ПС);
КонецФункции
&НаСервере
Процедура ПроверитьСвойСтенд85()
Если ПривилегированныйРежим() Тогда
ВызватьИсключение "Нужна собственная новая учебная конфигурация без привилегированного режима";
КонецЕсли;
Среда85 = Новый СистемнаяИнформация;
Если Среда85.ТипПлатформы <> ТипПлатформы.Windows_x86_64 Тогда
ВызватьИсключение "Нужна собственная Windows x64 VM с платформой 8.5.1.1343";
КонецЕсли;
Пользователи85 = ПользователиИнформационнойБазы.ПолучитьПользователей();
Текущий85 = ПользователиИнформационнойБазы.ТекущийПользователь();
Если Пользователи85.Количество() <> 1 Или Текущий85 = Неопределено Тогда
ВызватьИсключение "Нужен единственный собственный учебный пользователь";
КонецЕсли;
Если Пользователи85[0].УникальныйИдентификатор <> Текущий85.УникальныйИдентификатор
Или Лев(Текущий85.Имя, СтрДлина("Уч85Черн_")) <> "Уч85Черн_"
Или Текущий85.ПолноеИмя <> "Учебный участник" Тогда
ВызватьИсключение "Не подтверждена собственная учебная учетная запись";
КонецЕсли;
UUIDИмени85 = Новый УникальныйИдентификатор(Сред(Текущий85.Имя, СтрДлина("Уч85Черн_") + 1));
Если Текущий85.Имя <> "Уч85Черн_" + Строка(UUIDИмени85)
Или UUIDИмени85 = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000") Тогда
ВызватьИсключение "Имя должно содержать собственный новый ненулевой UUID";
КонецЕсли;
Если Не СистемаВзаимодействия.ИнформационнаяБазаЗарегистрирована()
Или Не СистемаВзаимодействия.ИспользованиеДоступно()
Или СистемаВзаимодействия.АдресСервера() <> "http://localhost:9094" Тогда
ВызватьИсключение "Вручную подтвердите регистрацию своей ИБ на собственном локальном сервере";
КонецЕсли;
ВерсияСервера85 = СистемаВзаимодействия.ВерсияСервера();
Если ТипЗнч(ВерсияСервера85) <> Тип("Строка") Или ПустаяСтрока(ВерсияСервера85) Тогда
ВызватьИсключение "Не получена версия собственного сервера взаимодействия";
КонецЕсли;
ИДПользователя85 = СистемаВзаимодействия.ИдентификаторТекущегоПользователя();
Если ТипЗнч(ИДПользователя85) <> Тип("ИдентификаторПользователяСистемыВзаимодействия")
Или СистемаВзаимодействия.ПолучитьИдентификаторПользователя(Текущий85.УникальныйИдентификатор) <> ИДПользователя85
Или СистемаВзаимодействия.ПолучитьИдентификаторПользователяИнформационнойБазы(ИДПользователя85) <> Текущий85.УникальныйИдентификатор Тогда
ВызватьИсключение "Двустороннее соответствие своей учетной записи не подтверждено";
КонецЕсли;
Пользователь85 = СистемаВзаимодействия.ПолучитьПользователя(ИДПользователя85);
Если ТипЗнч(Пользователь85) <> Тип("ПользовательСистемыВзаимодействия")
Или Пользователь85.Идентификатор <> ИДПользователя85
Или Пользователь85.Имя <> Текущий85.Имя Или Пользователь85.ПолноеИмя <> Текущий85.ПолноеИмя
Или Пользователь85.ИдентификаторПользователяИнформационнойБазы <> Текущий85.УникальныйИдентификатор
Или Пользователь85.Внешний Или Пользователь85.Заблокирован Тогда
ВызватьИсключение "Настоящий внутренний пользователь своего приложения не подтвержден";
КонецЕсли;
ИДПриложения85 = СистемаВзаимодействия.ИдентификаторТекущегоПриложения();
Если ТипЗнч(ИДПриложения85) <> Тип("ИдентификаторПриложенияСистемыВзаимодействия") Тогда
ВызватьИсключение "Не получен настоящий идентификатор своего приложения";
КонецЕсли;
Приложение85 = СистемаВзаимодействия.ПолучитьПриложение(ИДПриложения85);
Если ТипЗнч(Приложение85) <> Тип("ПриложениеСистемыВзаимодействия")
Или Приложение85.Идентификатор <> ИДПриложения85
Или Приложение85.Наименование <> "УчебныйЧерновикИнтеграции85" Тогда
ВызватьИсключение "Регистрация собственного приложения не подтверждена";
КонецЕсли;
КонецПроцедурыМодуль собственной формы ПланИнтеграции85
Общие → Общие формы → ПланИнтеграции85 → пустой модуль формы; команда Подготовить85 связана через Действие.
Настоящая клиентская команда очищает отчёт, захватывает и расходует согласие, ставит остановку до вызова своей серверной функции без контекста. Оба сохранения формы НеИспользовать.
&НаКлиенте
Процедура Подготовить85(Команда)
Протокол85 = "";
Попытка
Если ТипЗнч(Команда) <> Тип("КомандаФормы") Или Команда.Имя <> "Подготовить85"
Или ИмяФормы <> "ОбщаяФорма.ПланИнтеграции85"
Или АвтоматическоеСохранениеДанныхВНастройках <> АвтоматическоеСохранениеДанныхФормыВНастройках.НеИспользовать
Или СохранениеДанныхВНастройках <> СохранениеДанныхФормыВНастройках.НеИспользовать Тогда
ВызватьИсключение "Используйте свою настоящую команду и форму без сохранения данных";
КонецЕсли;
Если ТипЗнч(Остановка85) <> Тип("Булево") Или Остановка85
Или ТипЗнч(Согласие85) <> Тип("Булево") Или Не Согласие85 Тогда
ВызватьИсключение "Нужно однократное согласие на свой изолированный стенд";
КонецЕсли;
Подтверждено85 = Согласие85;
Согласие85 = Ложь;
Остановка85 = Истина;
Получено85 = ПодготовитьНаСервере85(Подтверждено85);
Если ТипЗнч(Получено85) <> Тип("Строка") Или Получено85 = "" Тогда
ВызватьИсключение "Не получен настоящий строковый план";
КонецЕсли;
Протокол85 = Получено85;
Исключение
Согласие85 = Ложь;
Остановка85 = Истина;
Протокол85 = "СТОП. Полный опыт не подтвержден. Технический текст ошибки не выводится; после отказа код не вызывает Записать, отправку, исправление или повторное обращение.";
КонецПопытки;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПодготовитьНаСервере85(Знач Подтверждено85)
Возврат ЧерновикИнтеграции85Сервер.ПодготовитьПлан85(Подтверждено85);
КонецФункцииМодуль собственной общей команды ОткрытьПланИнтеграции85
Общие → Общие команды → ОткрытьПланИнтеграции85 → пустой модуль; команда без параметра включена в свою подсистему.
Штатная клиентская ОбработкаКоманды использует оба настоящих параметра и только открывает собственную форму; автоматического обращения к серверу нет.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Если ПараметрКоманды <> Неопределено
Или ТипЗнч(ПараметрыВыполненияКоманды) <> Тип("ПараметрыВыполненияКоманды") Тогда
ВызватьИсключение "Используйте свою общую команду без параметра";
КонецЕсли;
ОткрытьФорму("ОбщаяФорма.ПланИнтеграции85");
КонецПроцедурыРазбор по шагам
Откройте форму своей общей командой. Только после проверки собственного изолированного стенда установите Согласие85 и нажмите Подготовить85. Старый отчёт очищается; фактическое согласие захватывается и расходуется, повтор блокируется до обращения клиента к серверу.
На сервере сначала подтверждается пользователь своей новой CF, реальная регистрация, локальный адрес, версия и связанное собственное приложение. Эти проверки ограничивают учебный маршрут, но не заменяют ручную проверку владения. Никакая регистрация или выдача прав не выполняется.
ПолучитьТипыВнешнихСистем возвращает настоящий фиксированный массив строк. Берём одну фактически возвращённую строку, не угадывая Telegram или другие имена. ПолучитьОписаниеВнешнейСистемы получает именно эту строку. Его реальный Тип должен совпасть, а список настоящих описаний параметров должен быть непустым.
Каждое настоящее описание даёт Имя и Обязательный. Из них собирается своя таблица требований в памяти; повторные имена отклоняются, обязательные и необязательные считаются из фактических признаков. Описания сервера не изменяются, хотя два свойства описания параметра доступны для записи.
СоздатьИнтеграцию возвращает настоящий новый объект. Только ему задаются собственный новый UUID-ключ, выбранный сервером ТипВнешнейСистемы и Использование = Ложь; все три значения перечитываются. Записать не вызывается. Слово «черновик» не доказывает офлайн работу или отсутствие внутренних действий этого метода на сервере.
ПараметрыВнешнейСистемы — свойство только для чтения, допускающее Соответствие или Неопределено. Продолжаем лишь с настоящим соответствием. При обходе читаем только ключи пар; значения не читаем, не копируем и не выводим. В своей таблице присутствия отмечаем фактические строковые имена.
Сопоставляем имена с требованиями: считаем известные и неизвестные, присутствующие и отсутствующие описанные имена, обязательные присутствующие и отсутствующие. Вычитаем именно рассчитанные количества и проверяем полный состав. В отчёте показаны настоящие ключ/тип/признак, строки требований и вычисленные счётчики, а не заранее заданный итог.
Как проверить результат
Будущий успешный опыт показывает собственный новый ключ и реальный поддерживаемый тип своего сервера; Использование перечитано как Ложь. Порядок поддерживаемых типов и требований может различаться; заранее обещанного имени типа или числа параметров нет.
Число описанных имён равно обязательным плюс необязательным. Реальное число ключей параметров равно известным плюс неизвестным. Присутствующие описанные плюс отсутствующие равны всем описанным; обязательные присутствующие плюс обязательные отсутствующие равны обязательным. Проверьте эти равенства по реальным числам отчёта.
Для каждого настоящего имени отчёт отдельно показывает фактический признак обязательности и наличие имени в параметрах черновика. Наличие имени НЕ говорит, что значение заполнено, имеет правильный формат или является действительным токеном. Значения не изучались.
Без согласия ожидается СТОП до серверного обращения. При повторе на этой же форме ожидается СТОП, а не новый объект. Пустой список типов/описаний или Неопределено вместо параметров — неполная подготовка, не успешный опыт по четырнадцати API.
При ошибке прав или сервера остаётся СТОП без технической строки ошибки, автоматической записи, отката или повторного обращения. Не открывайте новую форму ради повторения после неизвестного исхода: разбирать состояние допускается вручную только администратору своего стенда. Здесь отказ или успешный запуск фактически не воспроизводились.
Ожидаемый результат
После будущего успешного опыта показаны фактические ключ/тип/Использование своего нового объекта, реальные требования к именам и рассчитанные количества присутствующих, отсутствующих, обязательных и неизвестных параметров. Это не проверка значений, сохранения или подключения. Пустые/неподтверждённые реальные результаты означают СТОП, а не успешный пример. Запуск и компиляция в 1С не проверялись.
На что обратить внимание
ПолучитьИнтеграцию и ПолучитьИнтеграции не вызываются: отсутствующий случайный ключ или пустой каталог интеграций не подменяет полезное чтение собственного сохранённого объекта. Записать тоже отсутствует. Готовый опубликованный объект и собственный внешний мессенджер для этой структурной задачи не требуются.
СоздатьИнтеграцию описан как создание новой интеграции; native не называет его гарантированно локальным или офлайн. ТипВнешнейСистемы можно изменять только у нового незаписанного объекта. Отдельный Записать создаёт/обновляет интеграцию, но его отсутствие не доказывает отсутствие внутренних серверных действий Create или других обращений.
Использование = Ложь — настоящий признак объекта, не доказательство отсутствия сети или доставки. Отправка сообщений и подключение внешнего мессенджера здесь явно не вызываются. Выполнение всех обращений допускается только на своём изолированном будущем стенде.
ПараметрыВнешнейСистемы могут быть Неопределено при отсутствии Администрирование данных либо зависеть от типа внешней системы. Нельзя присвоить свойству Новый Соответствие ради прохождения проверки. Инициализация нового соответствия после установки типа не гарантируется текстом справки; неподтверждённый результат прекращает опыт.
ОписаниеВнешнейСистемы.Тип и ОписанияПараметров только для чтения. Имя и Обязательный у описания параметра доступны для чтения/записи, но в этом уроке не изменяются. Native не задаёт допустимые типы/форматы значений каждого внешнего параметра; из имени и Булево такие правила не выводятся.
Счётчики описывают только имена, а не секретные значения или пригодность интеграции к сохранению и аутентификации. Нет обещания равенства байтов, глубокого копирования, независимости серверных объектов, атомарного снимка или стабильного порядка обхода.
Согласие и Остановка85 — протокол текущего экземпляра формы, не авторизация и не постоянная запись. Они не защищают от поддельного обращения к серверу и не переживают создание новой формы. При ошибке не выполняются cleanup, запись, повтор или исправление неизвестного результата.
Основные native объекты доступны на сервере, в толстом клиенте и внешнем соединении, но не передаются тонкому/веб-клиенту. Клиент получает только строку. Это полный исходный код для указанной подготовки; компиляция и запуск в 1С не проверялись.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.