Тип: Булево. Позволяет открывать форму в режиме выбора.
Полное описание, параметры и ограничения
РежимВыбора (ChoiceMode)
Расширение формы клиентского приложения для объекта таблицы внешнего источника данных
РежимВыбора (ChoiceMode)
Доступен, начиная с версии 8.3.5.
Описание:
Тип: Булево.
Позволяет открывать форму в режиме выбора.
Использование в версии:
Доступен, начиная с версии 8.3.5.
Методическая информация
Практические примеры
Не закрывать свою карточку внешней книги до разрешения выбора
Событие именно формы объекта внешней таблицы в режиме выбора. Оно имеет один параметр СтандартнаяОбработка, а не выдуманное ВыбранноеЗначение.
Где и как запускать
Основной блок — модуль собственной формы объекта внешней таблицы; команды открытия / подключения — своя обработка.
Подготовка
Только собственный локальный SQL Server и отдельная учебная база 1С без рабочих внешних источников. SQL-блок выполните вручную в SSMS своего экземпляра: он создаёт новую GuideExternalBooks и две собственные таблицы. Если имя уже занято, существующую базу не удаляйте и не заменяйте.
В ODBC Data Sources разрядности серверного процесса 1С создайте собственный System DSN GuideOwnBooks: ваш localhost SQL Server, база GuideExternalBooks, Windows-аутентификация. Пользователь серверного процесса 1С должен иметь доступ только к этой учебной базе. Настройте нормальное доверие сертификату драйвера, проверку TLS не отключайте.
В Конфигураторе создайте ВнешниеИсточникиДанных → УчебныеКниги, автоматическое управление блокировками. Таблица Карточки: имя dbo.lesson_items, тип ОбъектныеДанные, ТолькоЧтение Ложь; Код=book_id Строка20, Название=title Строка100, Количество=quantity Число9.0. Null запрещён, ПоляКлюча и ПоляБлокировкиДанных — Код, представление — Название.
Таблица Строки: имя dbo.lesson_lines, тип НеобъектныеДанные, ТолькоЧтение Ложь; Урок=lesson_id Строка20, Номер=line_no Число9.0, Название=title Строка100, Количество=quantity Число9.0. Null запрещён, поля ключа / блокировки — Урок и Номер именно в этом порядке.
Мастером создайте у Карточки управляемую форму объекта УчебнаяКарточка, а у Строки управляемую форму записи УчебнаяСтрока. Сохраните настоящие основные реквизиты и привяжите поля. Назначьте эти формы основными для редактирования таблиц и создайте стандартные формы списков.
В своей обработке с управляемой формой создайте команду ПодготовитьУчебноеСоединение. Отдельный блок настройки соединения относится только к модулю этой обработки; пользователь имеет административные права на свой источник. Настраивается только сеанс, не общие параметры чужого подключения.
В форме объекта УчебнаяКарточка добавьте РазрешитьВыбор Булево и видимый флажок, начальное значение Ложь. Основной обработчик назначьте событию формы ВыборЗначения, не таблице списка.
После настройки своего сеансового соединения откройте карточку BOOK-1 в режиме выбора дополнительной клиентской командой своей обработки. Серверная функция получает настоящую ссылку запросом к своей таблице.
Назначьте собственную команду формы карточки для стандартного действия выбора, если её не создал мастер. Сравните штатный выбор при выключенном / включённом флажке; вручную событие не вызывайте.
Этот пример не записывает карточку, не меняет ключ и не отменяет обычное закрытие формы вне режима выбора. SQL и BSL при сборке HTML не исполнялись.
&НаКлиенте
Процедура ВыборЗначения(СтандартнаяОбработка)
Если Не РазрешитьВыбор Тогда
СтандартнаяОбработка = Ложь;
Сообщить("Включите разрешение выбора собственной книги");
КонецЕсли;
КонецПроцедурыSSMS своего локального экземпляра: новая учебная база и две таблицы
CREATE DATABASE GuideExternalBooks;
GO
USE GuideExternalBooks;
GO
CREATE TABLE dbo.lesson_items (
book_id nvarchar(20) NOT NULL PRIMARY KEY,
title nvarchar(100) NOT NULL,
quantity numeric(9,0) NOT NULL
);
CREATE TABLE dbo.lesson_lines (
lesson_id nvarchar(20) NOT NULL,
line_no numeric(9,0) NOT NULL,
title nvarchar(100) NOT NULL,
quantity numeric(9,0) NOT NULL,
PRIMARY KEY (lesson_id, line_no)
);
INSERT INTO dbo.lesson_items VALUES (N'BOOK-1', N'Учебная книга', 3);
INSERT INTO dbo.lesson_lines VALUES (N'LESSON-1', 1, N'Учебная строка книги', 3);Модуль своей обработки: настройка только собственного сеансового соединения
&НаКлиенте
Процедура ПодготовитьУчебноеСоединение(Команда)
НастроитьСвойИсточник();
КонецПроцедуры
&НаСервереБезКонтекста
Процедура НастроитьСвойИсточник()
Источник = ВнешниеИсточникиДанных.УчебныеКниги;
Параметры = Источник.ПолучитьПараметрыСоединенияСеанса();
Параметры.СУБД = "MSSQLServer";
Параметры.СтрокаСоединения = "DSN=GuideOwnBooks;";
Параметры.АутентификацияОС = Истина;
Параметры.АутентификацияСтандартная = Ложь;
Параметры.ИмяПользователя = "";
Параметры.Пароль = "";
Источник.УстановитьПараметрыСоединенияСеанса(Параметры);
Источник.УстановитьСоединение();
КонецПроцедурыТа же обработка: открыть реальную карточку в режиме выбора
&НаКлиенте
Процедура ВыбратьВнешнююКнигу(Команда)
Параметры = Новый Структура("Ключ,РежимВыбора", СсылкаСвоейВнешнейКниги(), Истина);
ОткрытьФорму("ВнешнийИсточникДанных.УчебныеКниги.Таблица.Карточки.Форма.УчебнаяКарточка", Параметры);
КонецПроцедурыТа же обработка: серверный источник настоящей ссылки
&НаСервереБезКонтекста
Функция СсылкаСвоейВнешнейКниги()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 Карточки.Ссылка КАК Ссылка
|ИЗ ВнешнийИсточникДанных.УчебныеКниги.Таблица.Карточки КАК Карточки
|ГДЕ Карточки.Код = &Код";
Запрос.УстановитьПараметр("Код", "BOOK-1");
Выборка = Запрос.Выполнить().Выбрать();
Если Не Выборка.Следующий() Тогда
ВызватьИсключение "Подготовьте собственную карточку BOOK-1";
КонецЕсли;
Возврат Выборка.Ссылка;
КонецФункцииРазбор по шагам
Подготовьте свой SQL-источник и настоящую карточку BOOK-1.
Откройте её форму с Ключом и РежимВыбора=Истина.
Выполните штатный выбор сначала без разрешения, затем с ним.
Как проверить результат
Ложь отменяет стандартную обработку выбора до закрытия формы. При установленном флажке код не переопределяет входной флаг на Истина.
РежимВыбора передан явно; обычное редактирование карточки не выдаётся за проверку события выбора.
Ожидаемый результат
Полный собственный источник и точный однопараметрический обработчик формы внешнего объекта.
На что обратить внимание
Не используйте этот учебный SQL и карточку вместо данных рабочего внешнего источника.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.