Разобрать настройки ввода внешней ссылки по строке

Учебные задачи

Код и Наименование участвуют во вводе по строке. Режимы выбора и поиска читаются как настройки, не как выполненный запрос во внешнюю БД.

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

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

Подготовка

  1. Используйте отдельную учебную конфигурацию Учебная85 без расширений, не рабочие КА2/УНФ/УТ. В Конфигураторе создайте Внешние источники данных → УчебныйВнешний → Таблицы → Товары. Строку подключения оставьте пустой: упражнения читают только метаданные, внешняя СУБД не требуется.

  2. Для таблицы задайте вид Таблица, тип ОбъектныеДанные, имя в источнике guide_books, ТолькоЧтение=Истина. В её Полях создайте Код (Строка 20, имя book_code), Наименование (Строка 100, имя book_name), Количество (Число 9.0, имя book_quantity) и Версия (Число 15.0, имя book_version). Это описание учебного источника, не команда создания SQL-таблицы.

  3. В ПоляКлюча и ПоляБлокировкиДанных включите Код, ПолеПредставления=Наименование, ПолеВерсииДанных=Версия, ПолеРодителя не задавайте. ВводПоСтроке: Код и Наименование. Для Количество запретите Null, задайте заполнение 0 и Подсказку «Количество книг». Для Наименование задайте Синоним «Название книги». СозданиеПриВводе оставьте без использования.

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

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

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

  1. ВводПоСтроке — список полей конфигурации. Это не поиск книг во внешней таблице.

  2. Два поля и их имена сверяются с подготовкой. Результат Найти проверяется до получения индекса.

  3. Индекс проверен на оба края перед Получить; порядок Код/Наименование заранее не предполагается.

  4. Быстрый выбор, история, создание, способ поиска и способ редактирования диагностируются независимо.

  5. ВводитсяНаОсновании — отдельная коллекция описаний разрешённых оснований. Урок ничего не создаёт по основанию.

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

  1. Три сравнения Истина; режимы и число оснований диагностические.

  2. Во внешнем источнике не искались и не создавались строки.

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

Настройки ввода прочитаны без имитации реального поиска.

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

  1. Наличие поля в ВводПоСтроке не подтверждает доступность внешней СУБД.

  2. СозданиеПриВводе не является вызовом создания записи; в упражнении оно отключено вручную.

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

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

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

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

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