Имя: Пароль:
1C
1С v8
Ошибка чтения значения
0 rull9ss
 
13.04.12
20:38
Сильно не пинать, только учусь.

Пробую выполнить не сложный запрос


   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    БригадыДоставкиСрезПоследних.Водитель,
                  |    БригадыДоставкиСрезПоследних.Грузчик1,
                  |    БригадыДоставкиСрезПоследних.Грузчик2
                  |ИЗ
                  |    РегистрСведений.БригадыДоставки.СрезПоследних КАК БригадыДоставкиСрезПоследних
                  |ГДЕ
                  |    БригадыДоставкиСрезПоследних.Период = &Период
                  |    И БригадыДоставкиСрезПоследних.ТранспортноеСредство = &ТранспортноеСредство";
   Запрос.УстановитьПараметр("Период", Объект.ДатаИВремяДоставки);
   Запрос.УстановитьПараметр("ТранспортноеСредство", Объект.Машина);
   Результат = Запрос.Выполнить();
   Выборка = Результат.Выбрать();
   Если Выборка.Следующий() Тогда
   Объект.Водитель = Выборка.Водитель;
   Объект.Грузчик1 = Выборка.Грузчик1;
   Объект.Грузчик2 = Выборка.Грузчик2;
   КонецЕсли;


Но в результате получаю такое:
http://s019.radikal.ru/i626/1204/13/054d74c0a777.jpg
"Ошибка чтения значения"

Подскажите что может быть не так, и как бороться?
1 catena
 
13.04.12
20:42
(0)Стесняюсь спросить: курсор при этом выше или ниже Если?
2 ВотОнЯ
 
13.04.12
20:43
"Если Выборка.Следующий() Тогда"

замени на

Пока Выборка.Следующий() Цикл
...
...
КонецЦикла;

И внутри цикла точку останова поставь и проверь заходит в цикл вообще или нет, то есть возвращает запрос результат или пустой
3 catena
 
13.04.12
20:43
(0)И период внутрь виртуальной таблицы засунь, а то совсем криво будет.
4 ale-sarin
 
13.04.12
20:44
(0) Точку останова после "Если Выборка.Следующий() Тогда" поставить надо.
5 rull9ss
 
13.04.12
20:48
Точка останова стоит после  Выборка = Результат.Выбрать();
Условие не срабатывает. Изменил на цикл, аналогично - в цикл не входит
6 catena
 
13.04.12
20:51
(5)Выборка.* будет что-то показывать только после Следующи(). А у тебя просто пустой запрос получается.
и Учти (3).
7 Живой Ископаемый
 
13.04.12
20:53
2(5) чувак, у тебя запрос ничего не возвращает
8 ВотОнЯ
 
13.04.12
20:56
проверяй заполненность параметров запроса. если все верно - смотри есть ли у тебя в регистре вообще сведения, удовлетворяющие условиям запроса
9 echo77
 
13.04.12
20:56
(0) Читать (3), а так же книжку по 1С 8 для разработчиков, параметры виртуальных таблиц
10 Живой Ископаемый
 
13.04.12
20:57
боже, да просто сначала выполни запрос в консоли... или хотя бы посмотри список этого РС
11 rull9ss
 
13.04.12
21:08
Использовать виртуальную таблицу в запросе на 3 строки?
пфф... как обычно оказывается что ошибка в мелочах
Необходимо было всего лишь заменить строку

   Запрос.УстановитьПараметр("Период", НачалоДня(Объект.ДатаИВремяДоставки));
12 Живой Ископаемый
 
13.04.12
21:10
2(11) То есть если например у тебя в регистре запись на начало дня 12.апреля.2012, а в объекте дата - 13.04.2012 12:00:00, то твой запрос вернет НИЧЕГО, и это правильно?
только из-за того что тебе претит виртуальная таблица
13 Живой Ископаемый
 
13.04.12
21:11
а, гоню.. простите. :)
14 catena
 
13.04.12
21:17
ми пардон, а СрезПоследних уже не виртуальная таблица? О_о
15 hhhh
 
13.04.12
21:49
(14) он же потом зверски убивает эту виртальную таблицу условием

ГДЕ Период = &Период
16 Живой Ископаемый
 
13.04.12
21:57
2(15) слушай, а точно убивает? я тоже так подумал, но потом засомневался...