Имя: Пароль:
1C
 
Запрос, ошибка Ожидается имя таблицы
0 Shecurok
 
03.09.19
14:14
Запрос для СКД. Сам запрос достаточно большой. Суть в том, что у СКД 3 набора данных. Потребовалось изменить отчет, чтоб выводил всю номенклатуру, которая есть в базе. Делаю так: в основной запрос делаю запрос на спр Номенклатура Левым соединением с наборами (дальше видно будет). Сам запрос выглядит так:

ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    Сегменты.Номенклатура КАК Номенклатура,
    Сегменты.Характеристика КАК Характеристика,
    ИСТИНА КАК ИспользуетсяОтборПоСегментуНоменклатуры
ПОМЕСТИТЬ ОтборПоСегментуНоменклатуры
ИЗ
    РегистрСведений.НоменклатураСегмента КАК Сегменты
{ГДЕ
    Сегменты.Сегмент.* КАК СегментНоменклатуры,
    Сегменты.Номенклатура.* КАК Номенклатура,
    Сегменты.Характеристика.* КАК Характеристика}

ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Характеристика,
    ИспользуетсяОтборПоСегментуНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Набор.Номенклатура КАК Номенклатура,
    Набор.Характеристика КАК Характеристика,
    Набор.Склад КАК Склад,
    СУММА(Набор.ВНаличии) КАК ВНаличии,
    СУММА(Набор.ВРезервеСоСклада) КАК ВРезервеСоСклада,
    СУММА(Набор.ВРезервеПодЗаказ) КАК ВРезервеПодЗаказ,
    СУММА(Набор.КОтгрузке) КАК КОтгрузке
ПОМЕСТИТЬ ВтСвободныеОстатки
ИЗ
    (ВЫБРАТЬ
        Таблица.Номенклатура КАК Номенклатура,
        Таблица.Характеристика КАК Характеристика,
        Таблица.Склад КАК Склад,
        Таблица.ВНаличииОстаток КАК ВНаличии,
        Таблица.ВРезервеСоСкладаОстаток КАК ВРезервеСоСклада,
        Таблица.ВРезервеПодЗаказОстаток КАК ВРезервеПодЗаказ,
        0 КАК КОтгрузке
    ИЗ
        РегистрНакопления.СвободныеОстатки.Остатки(, {((Номенклатура, Характеристика) В
                    (ВЫБРАТЬ
                        ТаблицаОтбора.Номенклатура КАК Номенклатура,
                        ТаблицаОтбора.Характеристика КАК Характеристика
                    ИЗ
                        ОтборПоСегментуНоменклатуры КАК ТаблицаОтбора
                    ГДЕ
                        ТаблицаОтбора.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)), (Склад).*, (Номенклатура).*, (Характеристика).*}) КАК Таблица
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        Таблица.Номенклатура,
        Таблица.Характеристика,
        Таблица.Склад,
        Таблица.КОтгрузкеОстаток,
        0,
        0,
        Таблица.КОтгрузкеОстаток
    ИЗ
        РегистрНакопления.ТоварыКОтгрузке.Остатки(, {((Номенклатура, Характеристика) В
                    (ВЫБРАТЬ
                        ТаблицаОтбора.Номенклатура КАК Номенклатура,
                        ТаблицаОтбора.Характеристика КАК Характеристика
                    ИЗ
                        ОтборПоСегментуНоменклатуры КАК ТаблицаОтбора
                    ГДЕ
                        ТаблицаОтбора.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)), (Склад).*, (Номенклатура).*, (Характеристика).*}) КАК Таблица) КАК Набор

СГРУППИРОВАТЬ ПО
    Набор.Номенклатура,
    Набор.Характеристика,
    Набор.Склад

ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Характеристика,
    Склад
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Набор.Номенклатура КАК Номенклатура,
    Набор.Характеристика КАК Характеристика,
    Набор.Склад КАК Склад,
    МАКСИМУМ(&ТекстЗапросаВесНоменклатуры) КАК Вес,
    МАКСИМУМ(&ТекстЗапросаОбъемНоменклатуры) КАК Объем,
    МАКСИМУМ(Набор.Номенклатура.ЕдиницаИзмерения) КАК ЕдиницаХранения,
    МАКСИМУМ(Набор.Номенклатура.ЕдиницаДляОтчетов) КАК ЕдиницаДляОтчетов,
    МАКСИМУМ(Набор.Номенклатура.КоэффициентЕдиницыДляОтчетов) КАК КоэффициентЕдиницыДляОтчетов,
    СУММА(Набор.ВНаличии) КАК ВНаличии,
    СУММА(Набор.ПриходОсновной) КАК ПриходОсновной,
    СУММА(Набор.РасходОсновной) КАК РасходОсновной,
    СУММА(Набор.ВРезервеСоСкладаИПодЗаказ) КАК ВРезервеСоСкладаИПодЗаказ,
    СУММА(Набор.ВРезервеСоСкладаИПодЗаказ) + СУММА(Набор.ВРезервеГрафика) КАК ВРезерве,
    СУММА(Набор.КОтгрузке) КАК Котгрузке
ИЗ
    (ВЫБРАТЬ
        Таблица.Номенклатура КАК Номенклатура,
        Таблица.Характеристика КАК Характеристика,
        Таблица.Склад КАК Склад,
        Таблица.ВНаличии КАК ВНаличии,
        0 КАК ПриходОсновной,
        Таблица.ВРезервеПодЗаказ + Таблица.ВРезервеСоСклада + Таблица.КОтгрузке КАК РасходОсновной,
        Таблица.ВРезервеПодЗаказ + Таблица.ВРезервеСоСклада КАК ВРезервеСоСкладаИПодЗаказ,
        0 КАК ВРезервеГрафика,
        Таблица.КОтгрузке КАК КОтгрузке
    ИЗ
        ВтСвободныеОстатки КАК Таблица
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        Таблица.Номенклатура,
        Таблица.Характеристика,
        Таблица.Склад,
        0,
        Таблица.КоличествоИзЗаказовОстаток,
        0,
        0,
        0,
        0
    ИЗ
        РегистрНакопления.ГрафикПоступленияТоваров.Остатки(, {((Номенклатура, Характеристика) В
                    (ВЫБРАТЬ
                        ТаблицаОтбора.Номенклатура КАК Номенклатура,
                        ТаблицаОтбора.Характеристика КАК Характеристика
                    ИЗ
                        ОтборПоСегментуНоменклатуры КАК ТаблицаОтбора
                    ГДЕ
                        ТаблицаОтбора.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)), (Склад).*, (Номенклатура).*, (Характеристика).*}) КАК Таблица
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        Таблица.Номенклатура,
        Таблица.Характеристика,
        Таблица.Склад,
        0,
        0,
        Таблица.КоличествоИзЗаказовОстаток,
        0,
        0,
        0
    ИЗ
        РегистрНакопления.ГрафикОтгрузкиТоваров.Остатки(, {((Номенклатура, Характеристика) В
                    (ВЫБРАТЬ
                        ТаблицаОтбора.Номенклатура КАК Номенклатура,
                        ТаблицаОтбора.Характеристика КАК Характеристика
                    ИЗ
                        ОтборПоСегментуНоменклатуры КАК ТаблицаОтбора
                    ГДЕ
                        ТаблицаОтбора.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)), (Склад).*, (Номенклатура).*, (Характеристика).*}) КАК Таблица
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        Таблица.Номенклатура,
        Таблица.Характеристика,
        Таблица.Склад,
        0,
        0,
        0,
        0,
        -Таблица.Количество,
        0
    ИЗ
        РегистрСведений.ДоступныеОстаткиПланируемыхПоступлений КАК Таблица
    ГДЕ
        Таблица.Количество < 0
        И Таблица.ДатаДоступности = ДАТАВРЕМЯ(1, 1, 1)
    {ГДЕ
        ((Таблица.Номенклатура, Таблица.Характеристика) В
                (ВЫБРАТЬ
                    ТаблицаОтбора.Номенклатура КАК Номенклатура,
                    ТаблицаОтбора.Характеристика КАК Характеристика
                ИЗ
                    ОтборПоСегментуНоменклатуры КАК ТаблицаОтбора
                ГДЕ
                    ТаблицаОтбора.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)),
        Таблица.Склад.* КАК Склад,
        Таблица.Номенклатура.* КАК Номенклатура,
        Таблица.Характеристика.* КАК Характеристика}) КАК Набор

СГРУППИРОВАТЬ ПО
    Набор.Номенклатура,
    Набор.Характеристика,
    Набор.Склад
;

////////////////////////////////////////////////////////////////////////////////

//ВОТ ДАЛЬШЕ ИДЁТ ДОБАВОЧНЫЙ ЗАПРОС
ВЫБРАТЬ
    спрНоменклатура.Ссылка КАК Наименование,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0
ИЗ
    Справочник.Номенклатура КАК спрНоменклатура
левое соединение (
   // 1) В наличии
    ВЫБРАТЬ

        Таблица.Номенклатура                          КАК Номенклатура,
        Таблица.Характеристика                        КАК Характеристика,
        Таблица.Склад                                 КАК Склад,

        Таблица.ВНаличии                              КАК ВНаличии,
        0                                             КАК ПриходОсновной,
        Таблица.ВРезервеПодЗаказ
            + Таблица.ВРезервеСоСклада
            + Таблица.КОтгрузке                       КАК РасходОсновной,

        Таблица.ВРезервеПодЗаказ
            + Таблица.ВРезервеСоСклада                КАК ВРезервеСоСкладаИПодЗаказ,

        0                                             КАК ВРезервеГрафика,
        Таблица.КОтгрузке                             КАК КОтгрузке

    ИЗ
        ВтСвободныеОстатки КАК Таблица

    ОБЪЕДИНИТЬ ВСЕ

    // 2) Приход по заказам
    ВЫБРАТЬ
        Таблица.Номенклатура                          КАК Номенклатура,
        Таблица.Характеристика                        КАК Характеристика,
        Таблица.Склад                                 КАК Склад,

        0                                             КАК ВНаличии,
        Таблица.КоличествоИзЗаказовОстаток            КАК ПриходОсновной,
        0                                             КАК РасходОсновной,
        0                                             КАК ВРезервеСоСкладаИПодЗаказ,

        0                                             КАК ВРезервеГрафика,
        0                                             КАК КОтгрузке


    ИЗ
        РегистрНакопления.ГрафикПоступленияТоваров.Остатки(,{
            (Номенклатура, Характеристика) В(
                ВЫБРАТЬ
                    ТаблицаОтбора.Номенклатура    КАК Номенклатура,
                    ТаблицаОтбора.Характеристика  КАК Характеристика
                ИЗ
                    ОтборПоСегментуНоменклатуры КАК ТаблицаОтбора
                ГДЕ
                    ТаблицаОтбора.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)
            } {Склад.*, Номенклатура.*, Характеристика.*}) КАК Таблица

    ОБЪЕДИНИТЬ ВСЕ

    // 3) Расход по заказам
    ВЫБРАТЬ
        Таблица.Номенклатура                          КАК Номенклатура,
        Таблица.Характеристика                        КАК Характеристика,
        Таблица.Склад                                 КАК Склад,

        0                                             КАК ВНаличии,
        0                                             КАК ПриходОсновной,
        Таблица.КоличествоИзЗаказовОстаток            КАК РасходОсновной,
        0                                             КАК ВРезервеСоСкладаИПодЗаказ,

        0                                             КАК ВРезервеГрафика,
        0                                             КАК КОтгрузке

    ИЗ
        РегистрНакопления.ГрафикОтгрузкиТоваров.Остатки(,{
            (Номенклатура, Характеристика) В(
                ВЫБРАТЬ
                    ТаблицаОтбора.Номенклатура    КАК Номенклатура,
                    ТаблицаОтбора.Характеристика  КАК Характеристика
                ИЗ
                    ОтборПоСегментуНоменклатуры КАК ТаблицаОтбора
                ГДЕ
                    ТаблицаОтбора.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)
            } {Склад.*, Номенклатура.*, Характеристика.*}) КАК Таблица

    ОБЪЕДИНИТЬ ВСЕ

    // 4) Резерв графика поставок
    ВЫБРАТЬ
        Таблица.Номенклатура                          КАК Номенклатура,
        Таблица.Характеристика                        КАК Характеристика,
        Таблица.Склад                                 КАК Склад,

        0                                             КАК ВНаличии,

        0                                             КАК ПриходОсновной,

        0                                             КАК РасходОсновной,

        0                                             КАК ВРезервеСоСкладаИПодЗаказ,
        -Таблица.Количество                           КАК ВРезервеГрафика,
        0                                             КАК КОтгрузке

    ИЗ
        РегистрСведений.ДоступныеОстаткиПланируемыхПоступлений КАК Таблица
    {ГДЕ
        (Таблица.Номенклатура, Таблица.Характеристика) В(
            ВЫБРАТЬ
                ТаблицаОтбора.Номенклатура    КАК Номенклатура,
                ТаблицаОтбора.Характеристика  КАК Характеристика
            ИЗ
                ОтборПоСегментуНоменклатуры КАК ТаблицаОтбора
            ГДЕ
                ТаблицаОтбора.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)
        }
    {ГДЕ
        Таблица.Склад.* КАК Склад,
        Таблица.Номенклатура.* КАК Номенклатура,
        Таблица.Характеристика.* КАК Характеристика}

    ГДЕ
        Таблица.Количество < 0
        И Таблица.ДатаДоступности = ДАТАВРЕМЯ(1, 1, 1)) КАК Набор

Данные По Данные.Номенклатура = спрНоменклатура.Ссылка


Но выдает ошибку Ожидается имя таблицы. Что делаю не так?
1 ДенисЧ
 
03.09.19
14:16
5000 рублей и я стану угадывать, на какую строчку оно ругается
2 lubitelxml
 
03.09.19
14:18
Возможно запятая пропущена где-то при описании полей
3 1Сергей
 
03.09.19
14:23
Вот тут ошибка:   Данные По Данные.Номенклатура = спрНоменклатура.Ссылка
4 NikP123
 
03.09.19
14:23
Самая последняя строчка
5 NikP123
 
03.09.19
14:26
это как минимум
6 Shecurok
 
03.09.19
14:27
(5) Если оставлять По Данные.Номенклатура = спрНоменклатура.Ссылка будет говорить, что поле Данные.Номенклатура не найдено
7 piter3
 
03.09.19
14:28
(6) А что есть вт Данные?
8 Shecurok
 
03.09.19
14:29
(7) нет
9 hhhh
 
03.09.19
14:32
(8) а конструктор на каой строке выдает ошибку?
10 Shecurok
 
03.09.19
14:35
(9) на последней как раз
11 hhhh
 
03.09.19
14:38
(10) ну, ребята правильно говорят, у вас нет таблицы Данные.
12 Shecurok
 
03.09.19
14:41
(11) логично,согласен. А как изменить запрос? Случайно не

(...)
И Таблица.ДатаДоступности = ДАТАВРЕМЯ(1, 1, 1)) КАК Набор

ПОМЕСТИТЬ в Данные

Данные По Данные.Номенклатура = спрНоменклатура.Ссылка
13 Shecurok
 
03.09.19
14:42
Хотя теперь такая же ошибка на строчку поместить Данные
14 1Сергей
 
03.09.19
16:08
(13) Слушай, что ты там делаешь? пригласи специалиста
15 runoff_runoff
 
03.09.19
17:51
левое соединение забыто..