Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Запрос работает в консоли запросов, но в ФормеЭлемента не определяет тип, в чем причина?

↓ [Фрэнки, 26.06.20 - 13:20]
Запрос работает в консоли запросов, но в ФормеЭлемента не определяет тип, в чем причина?
Я
   Mythe
 
26.06.20 - 10:00
Данный запрос, в консоли запросов работает как часы, но вот при его реализации на практике он не определяет тип строки, почему?

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

При Debug`e Функции "ВыборкаДетальныеЗаписи.Следующий()" пишет Поле Объекта не обнаружено(следующий).
Если же проверять переменную "ВыборкаДетальныеЗаписи" то в поле Номер в значении пишет Ошибка чтения значения.
   Галахад
 
1 - 26.06.20 - 10:03
А это чему равно? "Объект.Наименование"
   Mythe
 
2 - 26.06.20 - 10:04
(1) ФИО
   Mythe
 
3 - 26.06.20 - 10:05
Тип Строка
   Mythe
 
4 - 26.06.20 - 10:06
я через дебаг смотрел, там все нормально отображает, то что нужно
   Timon1405
 
5 - 26.06.20 - 10:06
1. Не добавляйте ВыборкаДетальныеЗаписи.Следующий() в табло отладки и не смотрите на него в отладчике
2. остановитесь на строке Объект.Блокировка = ВыборкаДетальныеЗаписи.Номер; и уже там смотрите переменную "ВыборкаДетальныеЗаписи"
   Mythe
 
6 - 26.06.20 - 10:08
(5) В этом то и проблема, если я ставлю остановку на этой строке, она не срабатывает
   Mythe
 
7 - 26.06.20 - 10:09
Программа дальше работает игнорируя остановку
   Mythe
 
8 - 26.06.20 - 10:10
Если делать выгрузку, то в значении "Номера" пишет Строка.Null
   Василий Алибабаевич
 
9 - 26.06.20 - 10:11
(8) Не находится абонент с ФИО = Объект.Наименование
   Mythe
 
10 - 26.06.20 - 10:12
А почему в консоли запросов тогда все работает? (9)
   Масянька
 
11 - 26.06.20 - 10:12
(2) Сообщить("" + ВыборкаДетальныеЗаписи.Количество()); 
После     ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
что выведет?
   ДенисЧ
 
12 - 26.06.20 - 10:12
тз = РезультатЗапроса.Выгрузить();
тз.ВыбратьСтроку()

что покажет?
   Масянька
 
13 - 26.06.20 - 10:13
(9) Ну, нельзя же так... В лоб... Надо издалека... :)))))
   Масянька
 
14 - 26.06.20 - 10:13
(10) Нужно проверять, что запрос нашел требуемое.
   Mythe
 
15 - 26.06.20 - 10:14
(11) 0
   Масянька
 
16 - 26.06.20 - 10:14
(15) Вот и ответ - по заданному условию запрос ничего не нашел.
   Mythe
 
17 - 26.06.20 - 10:16
(16) Запрос наипростейший, как его ещё изменить чтобы он работал то, ночь не сплю пытаюсь, разные связи пытался сделать  и тд
   Mythe
 
18 - 26.06.20 - 10:19
И тогда в чем разница консоли запросов?
   Mythe
 
19 - 26.06.20 - 10:20
(12)  не соответствует типу(номер)
   vova1122
 
20 - 26.06.20 - 10:36
1. Ты же убедился в (15) что в результате запроса у тебя нет данных
2. Значит ФИО не соответстует искомому наименованию. скорее всего в конце ФИО есть пробелы
   Fedor-1971
 
21 - 26.06.20 - 10:45
(0) Как минимум:
 Запрос.УстановитьПараметр("ФИО", СокрЛП(Объект.Наименование)); 

Ну и проверь в Объект.Наименование всякие Символы.НПП и т.д., часто при копировании прихватывают разные служебные символы.

Чай в консоли вводил руками и красиво
   Mythe
 
22 - 26.06.20 - 10:48
(21) Там нету никаких проблем в этом наименовании, у меня большинство запросов такие же и все нормально работает
   Фрэнки
 
23 - 26.06.20 - 10:50
(22) Ну напиши тогда для отладки просто явным образом

Запрос.УстановитьПараметр("ФИО", "ОченьКрасиваяНужнаяФИО");

И ты увидишь, запрос правильный но ничего не смог найти. И решай проблему дальше.
   Mythe
 
24 - 26.06.20 - 10:50
Только там я параметр ставлю Спр-ки.Спр-к.НайтиПоНаименованию(); потому что значений мало, а тут я не собираюсь каждого абонента перечислять
   Mythe
 
25 - 26.06.20 - 10:52
(23) знать бы куда двигаться, ночь уже сижу, по разному же этот запрос пытался перефразировать
   Mythe
 
26 - 26.06.20 - 10:53
Если я вот так указываю Наименование, то все работает Запрос.УстановитьПараметр("ФИО",Справочники.Абоненты.НайтиПоНаименованию("Гоголь Брик Федорович"));
   Mythe
 
27 - 26.06.20 - 10:54
Но При Сообщить(Объект.Наименование) одно и тоже выдает, в чем проблема то тогда заключается?
   Фрэнки
 
Модератор
28 - 26.06.20 - 10:55
(24) так тут тебя никто и не заставляет что-то перечислять

Но оскорблять присутствующих тупостью своих постов у тебя не выйдет.

(25) Там нет проблемы в запросе - не хер его переписывать. У тебя в значении Объект.Наименование
нет строки "Гоголь Брик Федорович" вот оно и не находит его тебе.

Что тут не понятного?
   Mythe
 
29 - 26.06.20 - 10:56
(28) В каком месте я оскроблял?
   Fedor-1971
 
30 - 26.06.20 - 10:56
(26) Справочники.Абоненты.НайтиПоНаименованию("Гоголь Брик Федорович") - возвращает ССЫЛКУ, а не строку

ФИО - типа ссылка на пользователя или кого-то там?
 
 Рекламное место пустует
   Mythe
 
31 - 26.06.20 - 10:58
(30) А как ещё можно получить ссылку, не указывая конкретное значение?
   Фрэнки
 
Модератор
32 - 26.06.20 - 10:58
(27) Сообщить производит преобразования типа значение в Строку при выводе.

вот эта строка Справочники.Абоненты.НайтиПоНаименованию("Гоголь Брик Федорович") - возвращает Ссылку. Тип значения СправочникСсылка

и в запросе  |    Таксофоны.Абоненты.ФИО = &ФИО"
скорей всего, что Абоненты.ФИО - по ошибке ФИО - это тоже ссылка на справочник, а не строка.
Какой там текст запроса в консоле - его тут я в ветке не вижу.
   Mythe
 
33 - 26.06.20 - 10:59
Потому что в некоторых запросах я ставил Объект. и все работало
   Фрэнки
 
Модератор
34 - 26.06.20 - 11:00
какой тип значения показывает окно Отладчика для вот этого

Объект.Наименование

что это? Он же пишет не только значение, но и тип - какой?
   Mythe
 
35 - 26.06.20 - 11:00
(34) Щас посмотрю
   Mythe
 
36 - 26.06.20 - 11:01
Строку возвращает
   Fedor-1971
 
37 - 26.06.20 - 11:03
(31) как вариант, передать её параметром в функцию
Если хочешь вывести список телефонов, вызови ПолучитьСписокТелефонов(Объект.ССылка)

(36) теперь в конфигураторе посмотри что есть  Таксофоны.Абоненты.ФИО, какого типа
   Mythe
 
38 - 26.06.20 - 11:04
(37) Там ссылка
   Фрэнки
 
39 - 26.06.20 - 11:04
(36) Угу. А еще посмотри, что когда в Консоли запросов свой текст мучаешь, то там в Параметры запроса небось ручками заносишь конкретное нужное значение там тоже у тебя Строка?

теперь в конфигураторе посмотри что есть  Таксофоны.Абоненты.ФИО, какого типа
   Mythe
 
40 - 26.06.20 - 11:04
По этому и не находит
   Фрэнки
 
41 - 26.06.20 - 11:05
эврика
   Mythe
 
42 - 26.06.20 - 11:06
(39) Я уже глянул где я писал Объект.что-то в других запросах и там ссылка, я уже понял что я так не смогу этот запрос сделать. Потому что в справочнике Абоненты Я создаю абонента как строку и уже везде на эту строку ссылаюсь
   Fedor-1971
 
43 - 26.06.20 - 11:10
(42) ты список телефонов пытаешься вытащить из формы абонента?
   vova1122
 
44 - 26.06.20 - 11:10
(42) Тогда так и пиши, НайтиПоНаимеванию
   Фрэнки
 
45 - 26.06.20 - 11:10
Эту всю кухню кроме тебя никто не видит, а так как у тебя нет опыта, то также как и ты, и по такой как у тебя логике, никто делать не станет.
Ищи готовые примеры и учись на них писать не допуская путаницы в типах.
   Фрэнки
 
46 - 26.06.20 - 11:12
Если это переделка из какой=то типовой, то скажи всем, какая это типовая, чтоб советовали из нужной кухни.

А если это самописка, то ее вообще никто никогда не видел и не угадает взамен тебя, что там и откуда и как правильно.
   craxx
 
47 - 26.06.20 - 11:14
(0) конфликт имен. Проверяй реквизиты формы.
   Mythe
 
48 - 26.06.20 - 11:16
Уже все исправил, переделал ссылку на строку
   Mythe
 
49 - 26.06.20 - 11:16
Спасибо всем))
   Mythe
 
50 - 26.06.20 - 11:16
Все работает


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