Ошибки конструктора запроса

19.11.16

Разработка - Запросы

При работе в платформе 8.3 столкнулся со следующей неприятной особенностью конструктора запроса: Конструктор некорректно работает с псевдонимами.

Поясню это на следующем примере:

Исходные данные:

Имеется   справочник Номенклатура (без полей, только стандартные)

регистр накопления - измерение  Номенклатура тип значения справочник.Номенклатура, 

ресурс  - количество

Задача

Необходимо сделать левое соединение справочника номенклатуры и регистра накопления ТоварыНаСкладах 

Пишу текст запроса:

 (1)

Запрос.Текст = 
    "ВЫБРАТЬ
    |Справочник.Номенклатура.Ссылка,
    |РегистрНакопления.ТоварыНаСкладах.Количество
    |ИЗ
    |    Справочник.Номенклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах
    |        ПО Справочник.Номенклатура.Ссылка = РегистрНакопления.ТоварыНаСкладах.Номенклатура";

При переносе этого текста в конструктор запроса он(конструктор запроса) преобразовывает его к виду

    (2)

Запрос.Текст = 
        "ВЫБРАТЬ
        |    Номенклатура.Ссылка,
        |    ТоварыНаСкладах.Количество
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
        |        ПО Номенклатура.Ссылка = ТоварыНаСкладах.Номенклатура";

При работе с таким текстом запроса конструктор выдает ошибку "неоднозначное поле "Номенклатура.Ссылка" и все! Дальше работать нельзя.

Чем коварна такая особеность конструктора запроса? 

При создании запроса методом "перетаскивания" текст запроса формируется именно как (2).

Как быть в такой ситуации

1. Отказаться от конструктора и писать руками, что не всегда удобно.

2. Проводить тщательный анализ имен выбираемых данных и правильно присваивать псевдонимы, что тоже не очень удобно.

в моем случае можно изменить текст на

     (2)

Запрос.Текст = 
        "ВЫБРАТЬ
        |    Номенклатура2.Ссылка,
        |    ТоварыНаСкладах.Количество
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура2
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
        |        ПО Номенклатура2.Ссылка = ТоварыНаСкладах.Номенклатура";

Сообщений об ошибке не возникнет, и станет возможным дальнейшая работа.

Надеюсь, эта публикация окажет вам помощь в практическом программировании.

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    196128    1085    409    

1006

Инструментарий разработчика Запросы Программист 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

QueryConsole1C — расширение, включающее консоль запросов с поддержкой исполняемых представлений — аналогов виртуальных таблиц, основанных на методах программного интерфейса ЗУП. Оно позволяет выполнять запросы с учётом встроенной бизнес-логики, отлаживать алгоритмы получения данных и автоматически генерировать код на встроенном языке 1С.

1 стартмани

16.05.2025    3304    73    zup_dev    15    

57

Инструментарий разработчика Запросы Программист 1С v8.3 Управляемые формы 1С:ERP Управление предприятием 2 Абонемент ($m)

В данной публикации рассказывается о решении, которое позволяет находить сразу все ошибки в тексте запроса за раз, а не только самую первую.

2 стартмани

05.03.2025    2868    10    XilDen    12    

23

Обновление 1С Запросы Программист 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Данный инструмент помогает анализировать доработанную конфигурацию после обновления на новый релиз и находить «битые» тексты запросов, в которых участвуют несуществующие в новом релизе метаданные.

2 стартмани

06.02.2025    2785    22    XilDen    26    

36

Запросы Программист 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

В статье приведена удобная возможность отладки исполняемого запроса динамического списка.

03.12.2024    6855    artemusII    11    

24

Запросы Программист Бесплатно (free)

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    14857    sergey279    18    

68

Запросы Программист 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    9555    XilDen    38    

101

СКД Механизмы типовых конфигураций Запросы Программист 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    3934    PROSTO-1C    0    

26
Отзывы
3. DrAku1a 1765 24.11.16 03:24 Сейчас в теме
Ну, напишите в саппорт 1С, что нужно проверять на неоднозначность перед автоматическим присвоением псевдонимов.
Или - если уж пишите запрос "руками", то дайте псевдонимы на стадии написания текста запроса.
swiss-garant; +1 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. buddha667 23.11.16 11:16 Сейчас в теме
Всегда желательно давать псевдонимы таблицам и т.д. явно.
В исходном запросе надо было сделать так и никаких проблем. И читается легче.
Запрос.Текст = 
    "ВЫБРАТЬ
    |СправочникНоменклатура.Ссылка КАК Номенклатура,
    |РегистрТоварыНаСкладах.Количество
    |ИЗ
    |    Справочник.Номенклатура КАК СправочникНоменклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК РегистрТоварыНаСкладах
    |        ПО СправочникНоменклатура.Ссылка = РегистрТоварыНаСкладах.Номенклатура";

корум; artfa; +2 Ответить
6. aspirator23 340 26.11.16 15:15 Сейчас в теме
(1)Тоже так пишу, правда короче СпрНоменклатура.
Кстати конструктор указывает на такие проблемы.
7. g45eorg 4 04.12.16 22:05 Сейчас в теме
(6) Вы имеете в виду сообщение "неоднозначное поле <имя_поля>"?
2. dmt 69 23.11.16 11:30 Сейчас в теме
Какая-то надуманная проблема.
Mortiferus; +1 Ответить
5. g45eorg 4 24.11.16 20:45 Сейчас в теме
(2) Тогда Вам флаг в руки и попутного ветра!
3. DrAku1a 1765 24.11.16 03:24 Сейчас в теме
Ну, напишите в саппорт 1С, что нужно проверять на неоднозначность перед автоматическим присвоением псевдонимов.
Или - если уж пишите запрос "руками", то дайте псевдонимы на стадии написания текста запроса.
swiss-garant; +1 Ответить
4. g45eorg 4 24.11.16 20:44 Сейчас в теме
(3)А разве 1С не знает о этой проблеме?
Оставьте свое сообщение