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

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

Ошибка чтения значения
Я
   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 или кнопку "Обновить" в браузере.