Имя: Пароль:
1C
1С v8
Проблемка в запросе
0 capllary
 
14.11.14
14:22
Помогите найти в чем косяк, вроде все верно, консоль запросов выдает верный результат, а на печатной форме данные формируются неверно:

//Запрос наименование складов
    ЗапросПоНаименованиюСкладов = Новый Запрос();
    ЗапросПоНаименованиюСкладов.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
    ЗапросПоНаименованиюСкладов.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
                                        |    ЕСТЬNULL(АвансовыйОтчетТовары.Склад, 0) КАК Склад
                                        |ИЗ
                                        |    Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчетТовары
                                        |ГДЕ
                                        |    АвансовыйОтчетТовары.Ссылка.Ссылка = &ТекущийДокумент";
    ЗапросПоНаименованиюСкладов = ЗапросПоНаименованиюСкладов.Выполнить().Выбрать();
    ЗапросПоНаименованиюСкладов.Следующий();
    
    Сообщить(ЗапросПоНаименованиюСкладов.Склад);
1 Looser-1c
 
14.11.14
14:24
ЕСТЬNULL(АвансовыйОтчетТовары.Склад, 0)

Если Склад - это ссылка, то за такое уволить.
2 18_plus
 
14.11.14
14:24
ЕСТЬNULL(АвансовыйОтчетТовары.Склад, 0)

больше ссылок!
АвансовыйОтчетТовары.Ссылка.Ссылка
3 CashtanePC
 
14.11.14
14:25
(0) А ты упорный.
4 18_plus
 
14.11.14
14:25
надо не на null проверять, а сравнивать с пустой ссылкой
5 18_plus
 
14.11.14
14:26
это если незаполненные нужно отсеять
6 capllary
 
14.11.14
14:26
Т.е. в консоле запросов по определенному документу формируется 3 названия складов, это правильно, их там действительно 3.

А на печатной форме почему выходит только один определенный склад, причем не первый.
7 capllary
 
14.11.14
14:27
(5) Там все строчки будут заполненные. Мне из них надо только различные выбрать.
8 18_plus
 
14.11.14
14:27
ПОКА   ЗапросПоНаименованиюСкладов.Следующий() ЦИКЛ
    
    Сообщить(ЗапросПоНаименованиюСкладов.Склад);

КОНЕЦЦИКЛА;
9 piter3
 
14.11.14
14:27
(6) а что в одном документе может быть 3 склада?
10 catena
 
14.11.14
14:27
УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка)
АвансовыйОтчетТовары.Ссылка.Ссылка = &ТекущийДокумент

Levftim? 1c c gthdjuj hfpf yt gjybvftn&
11 Looser-1c
 
14.11.14
14:27
вообще не вижу цикла по результату запроса....
12 catena
 
14.11.14
14:28
Фу!
Думаешь, 1с с первого раза не понимает?
13 capllary
 
14.11.14
14:28
(9) У меня да.
14 CashtanePC
 
14.11.14
14:28
(9) Ну это ТЧ.
15 catena
 
14.11.14
14:28
И да,

ЗапросПоНаименованиюСкладов.Следующий();
    
Сообщить(ЗапросПоНаименованиюСкладов.Склад);

А кто выборку дальше двигать будет?
16 18_plus
 
14.11.14
14:28
(7) у тебя там null быть не может, поэтому эта конструкция ЕСТЬNULL(АвансовыйОтчетТовары.Склад, 0) смысла не имеет
17 capllary
 
14.11.14
14:29
А вот код из консоли:

ВЫБРАТЬ
    ЕСТЬNULL(ВложенныйЗапрос.Склад, 0) КАК Склад
ИЗ
    (ВЫБРАТЬ РАЗЛИЧНЫЕ
        АвансовыйОтчет.Склад КАК Склад
    ИЗ
        Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчет
    ГДЕ
        АвансовыйОтчет.Ссылка = &ТекущийДокумент) КАК ВложенныйЗапрос
18 catena
 
14.11.14
14:29
ЗапросПоНаименованиюСкладов.Следующий();
    
Сообщить(ЗапросПоНаименованиюСкладов.Склад);

А кто выборку дальше двигать будет?
19 catena
 
14.11.14
14:29
Вдруг автор тоже не с первого раза...
20 capllary
 
14.11.14
14:29
(16) Там может быть не заполнена вообще табличная часть
21 capllary
 
14.11.14
14:30
(18) Подскажи как.
22 18_plus
 
14.11.14
14:30
(18) см (8)
23 catena
 
14.11.14
14:30
(21)Пока .Следущий() Цикал...
24 Looser-1c
 
14.11.14
14:30
(21) пока. Цикл такой есть
25 capllary
 
14.11.14
14:31
(22) Спасибо.
26 18_plus
 
14.11.14
14:31
(17) фуфуфу, что это за порно?
оставь только

    ВЫБРАТЬ РАЗЛИЧНЫЕ
        АвансовыйОтчет.Склад КАК Склад
    ИЗ
        Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчет
    ГДЕ
        АвансовыйОтчет.Ссылка = &ТекущийДокумент
27 Timon1405
 
14.11.14
14:33
Автор, в конфигураторе в любом месте(лучше в своей обработке) ткни правой кнопкой мышки=> конструктор запроса с обработкой результата=>на первой вкладке переключатель вывод в табличный документ, на второй вкладке вставь свой запрос, нажми ОК и изучай код, который выдаст система.
28 capllary
 
14.11.14
14:35
(26) А если значение "Склад" в документе вообще не заполнено? Вернется результат Null. Как от него избавиться?
29 catena
 
14.11.14
14:36
(28)Вернется пустой результат запроса, который в цикл "пока следущий" вообще не войдет.
30 18_plus
 
14.11.14
14:36
(28) тогда вернётся пустаяссылка
null ты можешь получить только используя соединения
31 Йохохо
 
14.11.14
14:37
(28) строки не будет выбрано, не вернется ничего
32 18_plus
 
14.11.14
14:37
(31) (29) а если строка в товарах есть, а поле склад не заполнено?
33 catena
 
14.11.14
14:38
(32)Да, прав:) Не правильно вопрос прочитала.
34 13_Mult
 
14.11.14
15:04
(32) Будет пустой результат (АвансовыйОтчет.Склад)
Пустая ссылка вернется если (АвансовыйОтчет.Склад.Ссылка)
35 13_Mult
 
14.11.14
15:12
(34) + "Пустая ссылка" или NULL, не помню точно ))
36 18_plus
 
14.11.14
15:25
(34) а что есть пустой результат?
пустая ссылка возвращается по АвансовыйОтчет.Склад, и вот в этом случае АвансовыйОтчет.Склад.Ссылка вернёт NULL.
37 13_Mult
 
14.11.14
15:41
(36) Ничего )
38 13_Mult
 
14.11.14
15:45
(36) АвансовыйОтчет.Склад через ТЧ не будет пустой ссылки, вообще ни чего не будет (пустой результат)
39 13_Mult
 
14.11.14
15:50
(38) Похоже я переработал )) (36) все верно
40 18_plus
 
14.11.14
15:52
(39) а я тут тебе уже два абзаца гадостей написал - отправить не успел :)
41 hhhh
 
14.11.14
17:07
еще может быть как у тс в другой ветке

ВЫБРАТЬ
        КОЛИЧЕСТВО(АвансовыйОтчет.Склад) КАК Склад
    ИЗ
        Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчет
    ГДЕ
        АвансовыйОтчет.Ссылка = &ТекущийДокумент

тогда вернет NULL если нет документов