Имя: Пароль:
1C
1С v8
Запросы, поля, таблицы
🠗 (Волшебник 29.07.2015 14:11)
, ,
0 Joystas
 
28.07.15
14:43
Добрый день, не пойму как вытащить из вложенной таблицы, поле составного типа, вот запрос:
ВЫБРАТЬ
    НДСЗаписиКнигиПродаж.Покупатель,
    НДСЗаписиКнигиПродаж.СуммаБезНДС,
    НДСЗаписиКнигиПродаж.СчетФактура
ИЗ
    РегистрНакопления.НДСЗаписиКнигиПродаж КАК НДСЗаписиКнигиПродаж
ГДЕ
    НДСЗаписиКнигиПродаж.Период МЕЖДУ &началоПериода И &КонецПЕриода
    И НДСЗаписиКнигиПродаж.СчетФактура.Товары.СчетУчета = &СчетУчета

вот, ошибка:

{ВнешняяОбработка.ИнструментыРазработчикаКонсольЗапросов.МодульОбъекта(564)}: Ошибка при вызове метода контекста (НайтиПараметры)
    ПарЗап = Запрос.НайтиПараметры();
по причине:
{(9, 4)}: Нельзя обращаться к вложенной таблице через поле составного типа "НДСЗаписиКнигиПродаж.СчетФактура.Товары.СчетУчета"
И <<?>>НДСЗаписиКнигиПродаж.СчетФактура.Товары.СчетУчета = &СчетУчета
1 nikolsmir
 
28.07.15
20:50
в качестве предположения: может быть есть смысл при помощи внутреннего соединения конкретизировать тип параметра и отбор уже на присоединяемую таблицу накладывать?
2 ДенисЧ
 
28.07.15
20:52
А что, в счёт-фактуре уже появились товары? (точнее, снова?)
ВЫРАЗИТЬ для кого придумали?
3 nikolsmir
 
28.07.15
20:55
ага, кстати ВЫРАЗИТЬ, точно
4 Chameleon1980
 
28.07.15
21:16
типа СП в конструкторе запроса смотреть
Выразить (х как у) как й
5 bzs015
 
28.07.15
21:49
Вообще написан бред. В записи одновременно присутствуют 2 счета, которые предлагается свести в один. Сначала разберись с логикой запроса.
6 Defender aka LINN
 
28.07.15
22:15
При чем тут ВЫРАЗИТЬ вообще? Он условие на поле из табличной части вообще наложить хочет. Тут соединение нужно
7 mistеr
 
28.07.15
23:39
(6) Соединение может быть и неявным. Но для того, чтобы платформа могда его сделать, нужно конкретизировать тип поля СчетФактура, с помошью ВЫРАЗИТЬ().
8 Joystas
 
29.07.15
06:31
Я бы и с радостью воспользовался ВЫРАЗИТЬ (), да вот даже во вложенный запрос не удается взять этот счет учета.
9 DCKiller
 
29.07.15
06:39
(0) Ну правильно... сообщение внимательно читаешь? У тебя таблица "Товары" - вложенная. Тебе надо отдельно обратиться к ней через ту СФ, которая у тебя находится в регистре НДСЗаписиКнигиПродаж, отфильтровать по счету, и уж потом с ней делать соединение с таблицей регистра.
10 Joystas
 
29.07.15
06:59
как это в синтаксисе сделать, вот чего я не догоняю, не давно программить начал просто
11 DCKiller
 
29.07.15
07:03
(10) Это зависит от того, какого вида СФ тебя конкретно интересуют.
12 Joystas
 
29.07.15
07:53
что значит какого вида? реализация товаров и услуг
ъ
13 DCKiller
 
29.07.15
08:12
(12) Хм... ну вообще-то у измерения СчетФактура в этом регистре тип не только РеализацияТоваровУслуг...

ВЫБРАТЬ
                      |    НДСЗаписиКнигиПродаж.Покупатель,
                      |    НДСЗаписиКнигиПродаж.СуммаБезНДС,
                      |    ВЫРАЗИТЬ(НДСЗаписиКнигиПродаж.СчетФактура КАК Документ.РеализацияТоваровУслуг) КАК СчетФактура
                      |ПОМЕСТИТЬ ВТ_НДС
                      |ИЗ
                      |    РегистрНакопления.НДСЗаписиКнигиПродаж КАК НДСЗаписиКнигиПродаж
                      |ГДЕ
                      |    НДСЗаписиКнигиПродаж.Период МЕЖДУ &началоПериода И &КонецПЕриода
                      |;
                      |
                      |////////////////////////////////////////////////////////////////////////////////
                      |ВЫБРАТЬ РАЗЛИЧНЫЕ
                      |    РеализацияТоваровУслугТовары.Ссылка КАК Ссылка
                      |ПОМЕСТИТЬ ВТ_СчетаФактуры
                      |ИЗ
                      |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
                      |ГДЕ
                      |    РеализацияТоваровУслугТовары.СчетУчета = &СчетУчета
                      |    И РеализацияТоваровУслугТовары.Ссылка В
                      |            (ВЫБРАТЬ РАЗЛИЧНЫЕ
                      |                ВТ_НДС.СчетФактура
                      |            ИЗ
                      |                ВТ_НДС КАК ВТ_НДС)
                      |
                      |ИНДЕКСИРОВАТЬ ПО
                      |    Ссылка
                      |;
                      |
                      |////////////////////////////////////////////////////////////////////////////////
                      |ВЫБРАТЬ
                      |    ВТ_НДС.Покупатель,
                      |    ВТ_НДС.СуммаБезНДС,
                      |    ВТ_СчетаФактуры.Ссылка
                      |ИЗ
                      |    ВТ_НДС КАК ВТ_НДС
                      |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_СчетаФактуры КАК ВТ_СчетаФактуры
                      |        ПО (ВТ_НДС.СчетФактура = ВТ_СчетаФактуры.Ссылка)

Вот так примерно делай, короче...
14 Joystas
 
29.07.15
09:56
ВЫРАЗИТЬ(НДСЗаписиКнигиПродаж.СчетФактура КАК Документ.РеализацияТоваровУслуг) КАК СчетФактура

че то ошибку выдает
15 DCKiller
 
29.07.15
10:05
(14) Я должен телепатически угадать, что там у тебя за ошибка?
16 Joystas
 
29.07.15
10:10
синтаксическая ошибка "как"
ВЫРАЗИТЬ(НДСЗаписиКнигиПродаж.СчетФактура КАК Документ.РеализацияТоваровУслуг) КАК СчетФактура <<?>>как
17 DCKiller
 
29.07.15
10:12
(16) Ну и?.. Это у тебя проблемы.
18 Defender aka LINN
 
29.07.15
14:10
Рукалицо...
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс