Прикладной пример: УровеньИзоляцииТранзакций.ЧтениеЗафиксированных

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

Конкретный собственный регистр / внешний источник / карта маршрута и точное применение системного значения.

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

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

Подготовка

  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. Используйте только свой настроенный SQL-источник УчебныеКниги из подготовки, объектную таблицу Карточки и свою BOOK-1 / Учебная книга / количество 3. Это не куб и не таблица обычного справочника 1С.

  6. В собственной обычной форме толстого клиента Windows сначала выполните дополнительный блок соединения с собственным DSN=GuideOwnBooks, затем основной блок в той же процедуре. Пароли в код не вставляются; подключение использует собственную согласованную учётную запись ОС.

  7. Второй параметр НачатьТранзакцию — уровень изоляции, первый — режим блокировок. Не передавайте этот enum глобальной НачатьТранзакцию базы 1С.

Если Источник.ТранзакцияАктивна() Тогда
    ВызватьИсключение "У собственного внешнего источника уже есть транзакция";
КонецЕсли;
Источник.НачатьТранзакцию(, УровеньИзоляцииТранзакций.ЧтениеЗафиксированных);
Попытка
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ Карточки.Название, Карточки.Количество
    |ИЗ ВнешнийИсточникДанных.УчебныеКниги.Таблица.Карточки КАК Карточки
    |ГДЕ Карточки.Код = &Код";
    Запрос.УстановитьПараметр("Код", "BOOK-1");
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Сообщить(Выборка.Название + ": " + Строка(Выборка.Количество));
    КонецЦикла;
    Источник.ОтменитьТранзакцию();
Исключение
    Источник.ОтменитьТранзакцию();
    Источник.РазорватьСоединение();
    ВызватьИсключение;
КонецПопытки;
Источник.РазорватьСоединение();
Ранее в той же собственной процедуре: открыть только свой внешний источник
Источник = ВнешниеИсточникиДанных.УчебныеКниги;
Параметры = Источник.ПолучитьПараметрыСоединенияСеанса();
Параметры.СУБД = "MSSQLServer";
Параметры.СтрокаСоединения = "DSN=GuideOwnBooks;";
Параметры.АутентификацияОС = Истина;
Параметры.АутентификацияСтандартная = Ложь;
Параметры.ИмяПользователя = "";
Параметры.Пароль = "";
Источник.УстановитьПараметрыСоединенияСеанса(Параметры);
Источник.УстановитьСоединение();

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

  1. Подготовьте указанную собственную схему и данные.

  2. Разместите основной блок и необходимые дополнительные части в точном модуле.

  3. Сравните фактические строки / точки / режим с указанными ограничениями.

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

  1. Пример только читает свою книгу; затем отменяет транзакцию именно внешнего Источника и закрывает своё соединение.

  2. Авто выбирает изоляцию по режиму блокировок. Если уровень не поддерживается внешней СУБД, платформа автоматически повышает его: запрошенное значение не доказывает фактическую изоляцию.

  3. Один запуск не доказывает отсутствие фантомов / неповторяемого чтения. Для сравнения конкурентных эффектов нужен отдельный согласованный опыт; здесь параллельных записей нет.

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

Системное значение применено к документированному вызову или реальному свойству, без фиктивного входного объекта.

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

  1. Эти самостоятельные опыты не запускаются в рабочей базе.

  2. BSL, транзакции, SQL-соединение и старт процессов при сборке HTML не выполнялись.

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

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

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

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

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