ЭлементБлокировкиДанных.ИспользоватьИзИсточникаДанных

Методы · UseFromDataSource

Устанавливает соответствие поля пространства блокировки полю источника данных.

Синтаксис

ИспользоватьИзИсточникаДанных(<ПолеПространстваБлокировок>, <ПолеИсточника>)
Полное описание, параметры и ограничения

ЭлементБлокировкиДанных.ИспользоватьИзИсточникаДанных (DataLockItem.UseFromDataSource)

ЭлементБлокировкиДанных (DataLockItem)

ИспользоватьИзИсточникаДанных (UseFromDataSource)

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

Синтаксис:
ИспользоватьИзИсточникаДанных(<ПолеПространстваБлокировок>, <ПолеИсточника>)
Параметры:

<ПолеПространстваБлокировок> (обязательный)
Тип: Строка, ПланВидовХарактеристикСсылка.<Имя плана видов характеристик>.
Имя поля пространства блокировки. Поддерживаются следующие имена полей:
Для пространства РегистрСведений.<имя>.НаборЗаписей - Регистратор (только для регистра, подчиненного регистратору);

Для пространства РегистрСведений.<имя> - Период (если есть), <имя измерения>, <имя разделителя>;

Для пространства РегистрНакопления.<имя>.НаборЗаписей - Регистратор;

Для пространства РегистрНакопления.<имя> - Период, <имя измерения>, <имя разделителя>;

Для пространства РегистрБухгалтерии.<имя>.НаборЗаписей - Регистратор;

Для пространства РегистрБухгалтерии.<имя> - Период, <имя измерения>, <вид движения> (значение системного перечисления ВидДвиженияБухгалтерии), Счет, Субконто<N>, <вид субконто>, <имя разделителя>;

Для пространства РегистрРасчета.<имя>.НаборЗаписей - Регистратор;

Для пространства РегистрРасчета.<имя> - ПериодРегистрации, ПериодДействия, <имя измерения>, <имя разделителя>;

Для пространства Перерасчет.<имя>.НаборЗаписей - ОбъектПерерасчета;

Для пространства Последовательность.<имя>.НаборЗаписей - Регистратор;

Для пространства Последовательность.<имя>.Записи - Регистратор, Период, <Измерение>;

Для пространства Последовательность.<имя> - <имя измерения>, <имя разделителя>;

Для пространства Константа.<имя> имена полей не поддерживаются;

Для пространства ВнешнийИсточникДанных.<имя источника>.Таблица.<имя таблицы> - <имя поля>.

Тип ПланВидовХарактеристикСсылка.<Имя плана видов характеристик> - блокировка устанавливается на пространство РегистрБухгалтерии.<имя>.
Для пространств, указанных ниже поддерживается поле Ссылка, а также все поля, указанные в свойстве "Поля блокировки данных" данного объекта метаданных:
Справочник.<имя>;

Документ.<имя>

ПланОбмена.<имя>;

ПланСчетов.<имя>;

БизнесПроцесс.<имя>;

Задача.<имя>;

ПланВидовРасчета.<имя>;

ПланВидовХарактеристик.<имя>;

ВнешнийИсточникДанных.<имя источника>.Таблица.<имя таблицы>.

<ПолеИсточника> (обязательный)
Тип: Строка.
Имя поля источника данных.
Описание:

Устанавливает соответствие поля пространства блокировки полю источника данных.

Доступность:

Сервер, толстый клиент, внешнее соединение.

Примечание:
Не допускается задавать одно и то же поле пространства блокировок с помощью методов УстановитьЗначение и ИспользоватьИзИсточникаДанных.
Использование в версии:

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

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

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

Задать два ключа блокировки из собственной таблицы

Создаём таблицу с колонкой Ключ, связываем её с измерением КлючРезерва и устанавливаем разделяемую блокировку в собственной транзакции.

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

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

Подготовка

  1. Только собственная пустая УчебнаяКонфигурацияСинтаксиса. Создайте независимый регистр сведений УчебныеРезервы, периодичность В пределах секунды, измерение КлючРезерва типа Строка длиной 50 и ресурс Количество типа Число. Записи регистра для уроков не нужны.

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

  3. Вызывайте из собственной учебной обработки вне уже открытой транзакции. Не проводите рабочие документы, не запускайте в КА2/УНФ/УТ и не меняйте их режим блокировок ради опыта.

  4. Первый урок только создаёт описание. Остальные реально устанавливают краткую управляемую блокировку в собственной транзакции и затем отменяют её. Данные не записываются и не удаляются.

Если ТранзакцияАктивна() Тогда
    ВызватьИсключение "Запускайте отдельно, вне чужой транзакции";
КонецЕсли;
Схема = Метаданные.РегистрыСведений.Найти("УчебныеРезервы");
Если Схема = Неопределено Тогда
    ВызватьИсключение "Создайте собственный учебный регистр УчебныеРезервы";
КонецЕсли;
Если Схема.Измерения.Найти("КлючРезерва") = Неопределено Тогда
    ВызватьИсключение "Нет измерения КлючРезерва";
КонецЕсли;
Источник = Новый ТаблицаЗначений;
Источник.Колонки.Добавить("Ключ", Новый ОписаниеТипов("Строка"));
СтрокаКниги = Источник.Добавить();
СтрокаКниги.Ключ = "guide-book";
СтрокаРучки = Источник.Добавить();
СтрокаРучки.Ключ = "guide-pen";
Блокировка = Новый БлокировкаДанных;
Элемент = Блокировка.Добавить("РегистрСведений.УчебныеРезервы");
Элемент.Режим = РежимБлокировкиДанных.Разделяемый;
Элемент.ИсточникДанных = Источник;
Элемент.ИспользоватьИзИсточникаДанных("КлючРезерва", "Ключ");
Сообщить(Элемент.ИсточникДанных.Количество() = 2);
Сообщить(Элемент.Режим = РежимБлокировкиДанных.Разделяемый);
Для Каждого Поле Из Элемент.Поля Цикл
    Сообщить("Поле: " + Строка(Поле.Поле));
    Сообщить("Колонка источника: " + Строка(Поле.КолонкаИсточникаДанных));
КонецЦикла;
НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);
Попытка
    Блокировка.Заблокировать();
    Сообщить("Собственная управляемая блокировка установлена; данные не записывались");
    ОтменитьТранзакцию();
Исключение
    Если ТранзакцияАктивна() Тогда
        ОтменитьТранзакцию();
    КонецЕсли;
    ВызватьИсключение;
КонецПопытки;
Сообщить(Не ТранзакцияАктивна());

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

  1. ТаблицаЗначений содержит две собственные строки, не результат запроса рабочих товаров. Тип колонки Строка согласован с измерением КлючРезерва учебного регистра.

  2. ИсточникДанных — таблица. ИспользоватьИзИсточникаДанных связывает поле пространства КлючРезерва с колонкой источника Ключ; имена намеренно разные.

  3. Поля коллекции показывают эту связь. Значение поля, заданного через источник, не следует выдавать за одну строку guide-book: источник содержит два ключа.

  4. Разделяемый режим отличается от Исключительный по совместимости блокировок. Он не является правом доступа и сам по себе не разрешает запись данных.

  5. Заблокировать выполняется в собственной короткой транзакции с отменой; доказательство конфликтов режимов требует отдельного опыта двумя сеансами.

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

  1. Две предварительные Истина: источник содержит два ключа и выбран Разделяемый. Связь поля указывает КлючРезерва → Ключ.

  2. При успешном завершении активной транзакции нет. Таблица осталась собственным источником, записи регистра не изменились.

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

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

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

  1. Пустой/неполный источник или пропущенное сопоставление может изменить область блокировки. Не подменяйте таблицу рабочим запросом без проверки.

  2. Разделяемая блокировка не заменяет исключительную для конкурирующей операции записи по бизнес-контракту.

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

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

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

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

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