Имя: Пароль:
1C
1С v8
БлокировкаДанных и результат запроса
0 RealSaint
 
02.08.11
16:23
Платформа 8.2.14.519. Пытаюсь использовать результат запроса как источник данных для блокировки данных. Пишу такое:


Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЕдиницыИзмерения.Ссылка,
| ЕдиницыИзмерения.Код
|ИЗ
| Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
|ГДЕ
| ЕдиницыИзмерения.Код В(&Коды)";

Запрос.УстановитьПараметр("Коды", мКоды);

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

// Блокировка данных.
Блокировка = Новый БлокировкаДанных;

ЭлементБлокировки = Блокировка.Добавить("Справочник.ЕдиницыИзмерения");
ЭлементБлокировки.ИсточникДанных = Результат;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Ссылка", "Ссылка");

Блокировка.Заблокировать();


При выполнении метода Заблокировать() получаю следующую ошибку:

{Справочник.ЕдиницыИзмерения.Форма.КлассификаторЕдиницИзмерения.Форма(185)}: Ошибка при вызове метода контекста (Заблокировать)
Блокировка.Заблокировать();
по причине:
Не найдено поле источника данных: Ссылка

Люди добрые, что я делаю неправильно? Ведь если результат запроса выгрузить в таблицу значений и назначить её в качестве источника данных для блокировки, то ошибки не возникает. А вот с результатом запроса работать не хочет.
1 apokrit
 
02.08.11
16:26
(0) Напиши в тексте запроса ЕдиницыИзмерения.Ссылка КАК Ссылка
2 Reset
 
02.08.11
16:34
(0) Запустил копи пастом твой код, ошибки не дало.
мКоды инициализировал парой существующих у меня кодов.
3 RealSaint
 
02.08.11
17:25
(1) Спасибо, помогло. А почему без псевдонима поля не работает?
4 RealSaint
 
02.08.11
17:26
(2) Блокировку нужно устанавливать в транзакции. Без транзакции блокировка не устанавливается, соответственно ошибка не проявляется.
5 Reset
 
02.08.11
17:33
(4) Спс, кэп. Разумеется, выполнял в транзакции.
6 RealSaint
 
02.08.11
17:38
(5) Ну, не в транзакции и у меня без ошибок выполняется. Так что не знаю что и думать о причинах, по которым у тебя выполнилось без ошибок.