Основание

Темы платформы · Basis

Тип: Произвольный. Объект, являющийся основанием для создания нового объекта.

Полное описание, параметры и ограничения

Основание (Basis)

Расширение формы клиентского приложения для объекта таблицы внешнего источника данных

Основание (Basis)

Доступен, начиная с версии 8.3.5.

Описание:
Тип: Произвольный.
Объект, являющийся основанием для создания нового объекта.
Использование в версии:

Доступен, начиная с версии 8.3.5.

Методическая информация

Практические примеры

Основание: своя внешняя карточка книги

Параметр передаётся настоящему расширению своей формы и имеет конкретный собственный источник.

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

Основная команда — своя управляемая обработка; указанные обработчики формы / объекта — в своих точных модулях.

Подготовка

  1. Только собственный локальный SQL Server и отдельная учебная база 1С без рабочих внешних источников. SQL-блок выполните вручную в SSMS своего экземпляра: он создаёт новую GuideExternalBooks и две собственные таблицы. Если имя уже занято, существующую базу не удаляйте и не заменяйте.

  2. В ODBC Data Sources разрядности серверного процесса 1С создайте собственный System DSN GuideOwnBooks: ваш localhost SQL Server, база GuideExternalBooks, Windows-аутентификация. Пользователь серверного процесса 1С должен иметь доступ только к этой учебной базе. Настройте нормальное доверие сертификату драйвера, проверку TLS не отключайте.

  3. В Конфигураторе создайте ВнешниеИсточникиДанных → УчебныеКниги, автоматическое управление блокировками. Таблица Карточки: имя dbo.lesson_items, тип ОбъектныеДанные, ТолькоЧтение Ложь; Код=book_id Строка20, Название=title Строка100, Количество=quantity Число9.0. Null запрещён, ПоляКлюча и ПоляБлокировкиДанных — Код, представление — Название.

  4. Таблица Строки: имя dbo.lesson_lines, тип НеобъектныеДанные, ТолькоЧтение Ложь; Урок=lesson_id Строка20, Номер=line_no Число9.0, Название=title Строка100, Количество=quantity Число9.0. Null запрещён, поля ключа / блокировки — Урок и Номер именно в этом порядке.

  5. Мастером создайте у Карточки управляемую форму объекта УчебнаяКарточка, а у Строки управляемую форму записи УчебнаяСтрока. Сохраните настоящие основные реквизиты и привяжите поля. Назначьте эти формы основными для редактирования таблиц и создайте стандартные формы списков.

  6. В своей обработке с управляемой формой создайте команду ПодготовитьУчебноеСоединение. Отдельный блок настройки соединения относится только к модулю этой обработки; пользователь имеет административные права на свой источник. Настраивается только сеанс, не общие параметры чужого подключения.

  7. Основной обработчик — новая клиентская команда ОткрытьУчебнуюФорму в своей управляемой обработке. Сначала подключите собственное сеансовое соединение отдельной командой подготовки.

  8. При ручном опыте открывается только собственная форма УчебнаяКарточка. Записать не вызывается; закрывайте новые / скопированные данные без сохранения. BSL, SQL, открытие форм и запись внешней таблицы при сборке HTML не выполнялись.

  9. Дополнительный ОбработкаЗаполнения — модуль объекта таблицы Карточки, не модуль формы и не обработка. Сигнатура внешней таблицы начинается со СтандартнаяОбработка, затем ДанныеЗаполнения.

  10. Метка УчебноеОснование отличает собственную структуру от иных стандартных данных заполнения. В этом самостоятельном уроке не подключайте ещё один одноимённый обработчик.

&НаКлиенте
Процедура ОткрытьУчебнуюФорму(Команда)
    Параметры = Новый Структура;
    Основание = Новый Структура("УчебноеОснование,Код,Название,Количество", Истина, "BOOK-BASE", "Книга из своей памятки", 3);
    Параметры.Вставить("Основание", Основание);
    ОткрытьФорму("ВнешнийИсточникДанных.УчебныеКниги.Таблица.Карточки.Форма.УчебнаяКарточка", Параметры);
    Сообщить("Открыта собственная форма с параметром Основание");
КонецПроцедуры
SSMS своего SQL Server: новый изолированный источник
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. Подготовьте собственный SQL и метаданные по точному контракту.

  2. Настройте свой сеанс и откройте форму основным кодом.

  3. Сравните описанный результат / создание / копирование и закройте без записи.

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

  1. Внешняя карточка имеет ссылку; необъектная строка — составной ключ Урок / Номер. Эти два типа не подменяются строкой кода.

  2. Открытие формы не означает запись новой или скопированной SQL-строки. Для её записи потребуются свободный собственный ключ и явная команда пользователя.

  3. Основание реально используется обработчиком заполнения; он переносит название и количество 3 в новый объект.

  4. Копирование не вызывает ОбработкаЗаполнения. ЗначениеКопирования и Основание — разные сценарии.

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

Есть реальная форма внешней таблицы, корректный вид ключа и наблюдаемое назначение параметра.

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

  1. Эти самостоятельные уроки не надо объединять в один вызов с конфликтующими Ключ / ЗначениеКопирования / Основание.

  2. BSL и подключение к SQL при сборке справочника не выполнялись.

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

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

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

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

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