Устанавливает соответствие поля пространства блокировки полю источника данных.
Синтаксис
ИспользоватьИзИсточникаДанных(<ПолеПространстваБлокировок>, <ПолеИсточника>)Полное описание, параметры и ограничения
ЭлементБлокировкиДанных.ИспользоватьИзИсточникаДанных (DataLockItem.UseFromDataSource)
ЭлементБлокировкиДанных (DataLockItem)
ИспользоватьИзИсточникаДанных (UseFromDataSource)
Доступен, начиная с версии 8.1.
Синтаксис:
ИспользоватьИзИсточникаДанных(<ПолеПространстваБлокировок>, <ПолеИсточника>)
Параметры:
<ПолеПространстваБлокировок> (обязательный)
Тип: Строка, ПланВидовХарактеристикСсылка.<Имя плана видов характеристик>.
Имя поля пространства блокировки. Поддерживаются следующие имена полей:
Для пространства РегистрСведений.<имя>.НаборЗаписей - Регистратор (только для регистра, подчиненного регистратору);
Для пространства РегистрСведений.<имя> - Период (если есть), <имя измерения>, <имя разделителя>;
Для пространства РегистрНакопления.<имя>.НаборЗаписей - Регистратор;
Для пространства РегистрНакопления.<имя> - Период, <имя измерения>, <имя разделителя>;
Для пространства РегистрБухгалтерии.<имя>.НаборЗаписей - Регистратор;
Для пространства РегистрБухгалтерии.<имя> - Период, <имя измерения>, <вид движения> (значение системного перечисления ВидДвиженияБухгалтерии), Счет, Субконто<N>, <вид субконто>, <имя разделителя>;
Для пространства РегистрРасчета.<имя>.НаборЗаписей - Регистратор;
Для пространства РегистрРасчета.<имя> - ПериодРегистрации, ПериодДействия, <имя измерения>, <имя разделителя>;
Для пространства Перерасчет.<имя>.НаборЗаписей - ОбъектПерерасчета;
Для пространства Последовательность.<имя>.НаборЗаписей - Регистратор;
Для пространства Последовательность.<имя>.Записи - Регистратор, Период, <Измерение>;
Для пространства Последовательность.<имя> - <имя измерения>, <имя разделителя>;
Для пространства Константа.<имя> имена полей не поддерживаются;
Для пространства ВнешнийИсточникДанных.<имя источника>.Таблица.<имя таблицы> - <имя поля>.
Тип ПланВидовХарактеристикСсылка.<Имя плана видов характеристик> - блокировка устанавливается на пространство РегистрБухгалтерии.<имя>.
Для пространств, указанных ниже поддерживается поле Ссылка, а также все поля, указанные в свойстве "Поля блокировки данных" данного объекта метаданных:
Справочник.<имя>;
Документ.<имя>
ПланОбмена.<имя>;
ПланСчетов.<имя>;
БизнесПроцесс.<имя>;
Задача.<имя>;
ПланВидовРасчета.<имя>;
ПланВидовХарактеристик.<имя>;
ВнешнийИсточникДанных.<имя источника>.Таблица.<имя таблицы>.
<ПолеИсточника> (обязательный)
Тип: Строка.
Имя поля источника данных.
Описание:
Устанавливает соответствие поля пространства блокировки полю источника данных.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Примечание:
Не допускается задавать одно и то же поле пространства блокировок с помощью методов УстановитьЗначение и ИспользоватьИзИсточникаДанных.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Задать два ключа блокировки из собственной таблицы
Создаём таблицу с колонкой Ключ, связываем её с измерением КлючРезерва и устанавливаем разделяемую блокировку в собственной транзакции.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Только собственная пустая УчебнаяКонфигурацияСинтаксиса. Создайте независимый регистр сведений УчебныеРезервы, периодичность В пределах секунды, измерение КлючРезерва типа Строка длиной 50 и ресурс Количество типа Число. Записи регистра для уроков не нужны.
В собственной учебной конфигурации задайте Режим управления блокировкой данных=Управляемый. Создайте серверный общий модуль УчебныеЗадачи и процедуру ВыполнитьПример() Экспорт; каждый код вставляйте в её тело отдельно.
Вызывайте из собственной учебной обработки вне уже открытой транзакции. Не проводите рабочие документы, не запускайте в КА2/УНФ/УТ и не меняйте их режим блокировок ради опыта.
Первый урок только создаёт описание. Остальные реально устанавливают краткую управляемую блокировку в собственной транзакции и затем отменяют её. Данные не записываются и не удаляются.
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Запускайте отдельно, вне чужой транзакции";
КонецЕсли;
Схема = Метаданные.РегистрыСведений.Найти("УчебныеРезервы");
Если Схема = Неопределено Тогда
ВызватьИсключение "Создайте собственный учебный регистр УчебныеРезервы";
КонецЕсли;
Если Схема.Измерения.Найти("КлючРезерва") = Неопределено Тогда
ВызватьИсключение "Нет измерения КлючРезерва";
КонецЕсли;
Источник = Новый ТаблицаЗначений;
Источник.Колонки.Добавить("Ключ", Новый ОписаниеТипов("Строка"));
СтрокаКниги = Источник.Добавить();
СтрокаКниги.Ключ = "guide-book";
СтрокаРучки = Источник.Добавить();
СтрокаРучки.Ключ = "guide-pen";
Блокировка = Новый БлокировкаДанных;
Элемент = Блокировка.Добавить("РегистрСведений.УчебныеРезервы");
Элемент.Режим = РежимБлокировкиДанных.Разделяемый;
Элемент.ИсточникДанных = Источник;
Элемент.ИспользоватьИзИсточникаДанных("КлючРезерва", "Ключ");
Сообщить(Элемент.ИсточникДанных.Количество() = 2);
Сообщить(Элемент.Режим = РежимБлокировкиДанных.Разделяемый);
Для Каждого Поле Из Элемент.Поля Цикл
Сообщить("Поле: " + Строка(Поле.Поле));
Сообщить("Колонка источника: " + Строка(Поле.КолонкаИсточникаДанных));
КонецЦикла;
НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);
Попытка
Блокировка.Заблокировать();
Сообщить("Собственная управляемая блокировка установлена; данные не записывались");
ОтменитьТранзакцию();
Исключение
Если ТранзакцияАктивна() Тогда
ОтменитьТранзакцию();
КонецЕсли;
ВызватьИсключение;
КонецПопытки;
Сообщить(Не ТранзакцияАктивна());Разбор по шагам
ТаблицаЗначений содержит две собственные строки, не результат запроса рабочих товаров. Тип колонки Строка согласован с измерением КлючРезерва учебного регистра.
ИсточникДанных — таблица. ИспользоватьИзИсточникаДанных связывает поле пространства КлючРезерва с колонкой источника Ключ; имена намеренно разные.
Поля коллекции показывают эту связь. Значение поля, заданного через источник, не следует выдавать за одну строку guide-book: источник содержит два ключа.
Разделяемый режим отличается от Исключительный по совместимости блокировок. Он не является правом доступа и сам по себе не разрешает запись данных.
Заблокировать выполняется в собственной короткой транзакции с отменой; доказательство конфликтов режимов требует отдельного опыта двумя сеансами.
Как проверить результат
Две предварительные Истина: источник содержит два ключа и выбран Разделяемый. Связь поля указывает КлючРезерва → Ключ.
При успешном завершении активной транзакции нет. Таблица осталась собственным источником, записи регистра не изменились.
Ожидаемый результат
Показан реальный источник условий, сопоставление разных имён колонок и другой режим блокировки.
На что обратить внимание
Пустой/неполный источник или пропущенное сопоставление может изменить область блокировки. Не подменяйте таблицу рабочим запросом без проверки.
Разделяемая блокировка не заменяет исключительную для конкурирующей операции записи по бизнес-контракту.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.