Вход | Регистрация
 

Ошибка чтения значения

Ошибка чтения значения
Я
   ivangrant
 
23.10.19 - 16:16
Тысячу тем нашёл и ни одной нет решения :(
При выполнении запроса выпадает "ошибка чтения значения" по всем отбираемым полям в запросе. Ошибку ловил в отладчике.
Пробовал и ссылки запихивать и строки, и в отбор и в запрос. Бестолку.
Консолькой всё показывает.
В запросе не хочет. Запрос находится во внешнем обработчике.
Вот сам он:
[code]Функция ПолучитьРуководителя(Организация, Дата)
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ОтветственныеЛица.Руководитель КАК Руководитель,
    |    ОтветственныеЛицаПолномочия.Должность КАК Должность,
    |    ОтветственныеЛицаПолномочия.ОснованиеПодписи
    |ИЗ
    |    РегистрСведений.СведенияОбОтветственныхЛицах.СрезПоследних КАК ОтветственныеЛица
    |    ЛЕВОЕ СОЕДИНЕНИЕ
    |    РегистрСведений.ОснованияПолномочийОтветственныхЛиц КАК ОтветственныеЛицаПолномочия
    |    ПО
    |    ОтветственныеЛица.Организация = ОтветственныеЛицаПолномочия.Организация
    |    И ОтветственныеЛица.Руководитель = ОтветственныеЛицаПолномочия.ФизическоеЛицо
    |ГДЕ
    |    ОтветственныеЛица.Период <= &Период
    |    И ОтветственныеЛица.Организация = &Организация";
    
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("Период", Дата);
    Выбор = Запрос.Выполнить().Выбрать();
    Если Выбор.Следующий() Тогда
        Возврат Новый Структура ("Руководитель, Должность, ОснованиеПодписи", Выбор.Руководитель, Выбор.Должность, Выбор.ОснованиеПодписи);
    КонецЕсли;
    Возврат Неопределено;
КонецФункции
[/code]

Где ещё посмотреть варианты решения?
 
 
   ДенисЧ
 
1 - 23.10.19 - 16:17
На какой строке отладчик останавливал?
   Deon
 
2 - 23.10.19 - 16:20
(0) В какой момент ошибка выпадает?
   Deon
 
3 - 23.10.19 - 16:21
Кстати, предполагаю, что параметр &Период должен быть не в секции ГДЕ, а в параметрах виртуальной таблицы СрезПоследних
   hhhh
 
4 - 23.10.19 - 16:25
(0) да, вот так пробуй

    |ИЗ
    |    РегистрСведений.СведенияОбОтветственныхЛицах.СрезПоследних(&Период, Организация = &Организация) КАК ОтветственныеЛица 

а ГДЕ выкинь. Это оно у тебя от временного помутнения в мозгу влезло.
   GROOVY
 
5 - 23.10.19 - 16:30
Да и "Возврат Неопределено" выкинуть можно.
   Chameleon1980
 
6 - 23.10.19 - 16:32
Автор не дошёл до выбор.следующий
   ivangrant
 
7 - 23.10.19 - 16:32
(1) Вот здесь: Если Выбор.Следующий() Тогда
И потом выборку делал. В условие не заходит. В КонецЕсли та же беда.
   ДенисЧ
 
8 - 23.10.19 - 16:33
(7) А надо смотреть на Возврат;
На крайний случай - смотреть на Выбор.Количество()
   ДенисЧ
 
9 - 23.10.19 - 16:33
А если выборка пустая, то явно параметры не те. Или база не та.
   Chameleon1980
 
10 - 23.10.19 - 16:37
Результат запроса значит пустой
Учти ситуацию и верни пустую структупу
А почему результат пустой это не вопрос про ошибку чтения.
тут ты под условия не попал.
я тебе в (6)написал ответ на 0
   hhhh
 
11 - 23.10.19 - 16:39
(7) на Если Выбор.Следующий() Тогда

на надо останавливаться. Там выдаст ошибку "ошибка чтения значения"

после смотрите.
   ivangrant
 
12 - 23.10.19 - 16:41
ДА! Заработала! Перенес условия в параметры вирт. таблицы.
Я прошу прощения, недавно только запросы освоил))) почему не срабатывало условие в предложении ГДЕ ?
   ivangrant
 
13 - 23.10.19 - 16:41
Благодарю за помощь.
   ДенисЧ
 
14 - 23.10.19 - 16:41
(12) Потому что у тебя виртуальная таблица, а не обычная
   Deon
 
15 - 23.10.19 - 16:41
(0) А покажи полный текст ошибки
   hhhh
 
16 - 23.10.19 - 16:43
(12) потому что период больше твоей даты. А ты написал

|ГДЕ
    |    ОтветственныеЛица.Период <= &Период
   Deon
 
17 - 23.10.19 - 16:43
Мне думается, что ошибка вообще в другой функции живет, которая не ожидает получить Неопределено и пытается через точку из этого Неопределено читать реквизиты
   ivangrant
 
18 - 23.10.19 - 17:51
Ну и в догонку. Почти такой же по структуре запрос. Но с той же ошибкой.
Опять что-то недосмотрел?

[code]
Функция ПолучитьФИО(Физлицо, Период)
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ФИОФизическихЛицСрезПоследних.Фамилия КАК Фамилия,
    |    ФИОФизическихЛицСрезПоследних.Имя КАК Имя,
    |    ФИОФизическихЛицСрезПоследних.Отчество КАК Отчество
    |ИЗ
    |    РегистрСведений.ФИОФизическихЛиц.СрезПоследних(&Период, ФизическоеЛицо = &ФизЛицо) КАК ФИОФизическихЛицСрезПоследних";
    
    Запрос.УстановитьПараметр("Период", Период);
    Запрос.УстановитьПараметр("ФизЛицо", ФизЛицо);
    Выбор = Запрос.Выполнить().Выбрать();
    Если Выбор.Следующий() Тогда
        Возврат Новый Структура("Фамилия, Имя, Отчество", Выбор.Фамилия, Выбор.Имя, Выбор.Отчество);
    КонецЕсли;    
    Возврат Неопределено;
КонецФункции
[/code]
   hhhh
 
19 - 23.10.19 - 17:55
(18) текст ошибки давай. и номер строки там должен быть
   ivangrant
 
20 - 23.10.19 - 18:07
(19) Не правильно сформулировал.
Ошибки нет.Но параметры не передаются, и структура не формируется.
Ловил отладчиком ошибку: "ошибка чтения значения". Смотрел в КонецЕсли.
В консоли тот же запрос формируется без проблем.
Период передаю - Текущую дату.
В Физическое лицо - Сотрудника из справочника Сотрудники.
   ivangrant
 
21 - 23.10.19 - 18:09
Запрос: РегистрСведений.ФИОФизическихЛиц.СрезПоследних (Записей в результате: 1)            

Фамилия    Имя    Отчество    ФизическоеЛицо
Андреев    Андрей    Андреевич    Андреев Андрей Андреевич

Это итог запроса в отладчике.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.