Разработка и оптимизация запросов в 1С:Предприятие 8.3. Модуль 4. Использование нескольких таблиц в запросе: вложенные запросы, соединение, объединение

На данной странице задавайте вопросы по материалам и практическому заданию четвертого модуля курса «Разработка и оптимизация запросов в 1С:Предприятие 8.3».

Практические задания

К сожалению, у Вас недостаточно прав для дальнейшего просмотра.

Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.

Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.

Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.

Комментарии / обсуждение (382):

  1. ja_ver

    Добрый день!
    Для понимания работы с операцией «В» пытаюсь решить следующую задачу:

    Есть Справочник1 и Справочник2,оба с реквизитами Реквизит1,Реквизит2,Реквизит3.
    Нужно запросом выбрать из Справочник1
    только те значения реквизитов , которых нет в Справочник2.

    ВЫБРАТЬ
        Справочник1.Реквизит1,
        Справочник1.Реквизит2,
        Справочник1.Реквизит3
    ИЗ
        Справочник.Справочник1 КАК Справочник1
    ГДЕ
        НЕ (Справочник1.Реквизит1, Справочник1.Реквизит2, Справочник1.Реквизит3) В
                (ВЫБРАТЬ
                    Справочник2.Реквизит1,
                    Справочник2.Реквизит2,
                    Справочник2.Реквизит3
                ИЗ
                    Справочник.Справочник2 КАК Справочник2)

    Запрос выбирает ВСЕ реквизиты всех элементов Справочник1,хотя должен исключить дублирующиеся
    из Справочник2 значения реквизитов. Подскажите — в чем ошибка…

    %D0%97%D0%B0%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2%20%D0%B8%20%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0.jpg

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  2. evsob

    >>Добрый день! В архиве на сайте ИТС есть две обработки — Консоль запросов для управляемого приложения.epf и ИнструментыРазработчикаКонсольЗапросов83.epf. В первой из них используется новый управляемый конструктор запроса. И в нем действительно при редактировании произвольного выражения нет возможности открыть вложенный конструктор. А вот если воспользоваться обработкой ИнструментыРазработчикаКонсольЗапросов83.epf, то мы увидим обычный классический конструктор запроса, где эта полезная возможность присутствует. Источник: ©Курсы-по-1С.рф

    К сожалению на сегодня в обработке ИнструментыРазработчикаКонсольЗапросов83.epf эта возможность утрачена.
    У меня с диска ИТС в папке \1CIts\EXE\EXTREPS\UNIREPS83\RequestConsoleManaged\ есть на сегодня три обработки ИнструментыРазработчикаКонсольЗапросов.epf от 01/06/2016, ИнструментыРазработчикаКонсольЗапросов83.epf от 19/09/2015 и Консоль запросов для управляемого приложения.epf от 19/02/2015 и везде эта возможность отсутствует, и операторы на закладке Условия не выбираются(как в вашей обработке и в Конфигураторе). На сайте ИТС по адресу http://its.1c.ru/db/metod8dev#content:4500:hdoc в текущий момент доступна только обработка ИнструментыРазработчикаКонсольЗапросов.epf запакованная в архив requestconsolemanaged.zip.
    Укажите версию обработки ИнструментыРазработчикаКонсольЗапросов83.epf с этой возможностью, чтобы можно было на дисках ИТС поискать.
    Нашел на диске ИТС за январь 2015 ИнструментыРазработчикаКонсольЗапросов83.epf от 03/04/2014 с указанными возможностями, но работающую под толстым клиентом.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  3. derek

    Добрый день. Создаю в конфигураторе УПП 1.3 Новый отчет. Задача вроде бы не сложная. Взять из регистра остатки товаров в разрезе складов и присоединить данные из регистра ЗакупкиОбороты. То есть в отчет должны выводиться остатки и Средняя цена материалов. Открыв ОСКД обнаружил, что закладки ИТОГИ нет. А общие итоги просто необходимы…. Что делать?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  4. Vladislav222

    Здравствуйте, в задании №20, мы в условии используем вложенный запрос. А как можно открыть конструктор именно вложенного запроса, если напрм. понадобиться его еще раз отредактировать?
    спасибо за ответ.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  5. Polina.Z

    Добрый день!
    Уточните, пожалуйста, как в конструкторе запроса можно определить ключевое слово ПУСТАЯТАБЛИЦА? Если создать отдельное поле и написать туда ПУСТАЯТАБЛИЦА.(Товар, Количество), то система ругается.
    В лекциях говорится, что количество полей в объединенных запросах обязательно должно совпадать, но я попробовала объединить два запроса с разным количеством полей, на вкладке Объединения/Псевдонимы для этих полей было установлено значение «Отсутствует». В консоли запрос выполнился успешно. Тогда получается, что количество полей не обязательно должно быть одинаковым для объединенных запросов?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  6. Raeva

    В 20-м задании есть принципиальная разница, куда поставить «НЕ»: в начале выражения условия или перед оператором «В»? Если это как-то влияет на скорость выполнения запроса, то почему?

    %D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%E2%84%9620.png

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  7. KripWorland

    Добрый день. Помогите решить такую задачу:
    Есть две таблицы с одинаковыми полями A, B и C
    Нужно запросом выбрать из первой таблицы только те записи, которых нет во второй таблице.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  8. S2015

    В видео уроке «Особенность левого соединения» столкнулся с проблемой работы консоли запросов, размещенной на сайте ИТС. В данной версии консоли невозможно добавить второе соединение так как это показано в видео уроке. Есть и другие отличия.
    Где можно скачать ту версию консоли, которая использовалась при создании курса?

    %D0%A1%D0%B2%D1%8F%D0%B7%D0%B8.jpg

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  9. Кирилл Абрашин

    Василий, здравствуйте!

    Читаю сборник вопросов для подготовки к экзамену «Профессионал» по платформе, и вопрос по соединению таблиц своей «лаконичностью» ставит меня в лёгкий ступор :)

    «7.11 Создание соединения таблиц-источников данных в конструкторе запросов допускает:
    1. Соединение только двух таблиц-источников данных
    2. Соединение необходимого количества таблиц-источников данных
    3. Соединение только двух таблиц-источников данных, причем флажок «Все» обязательно должен быть проставлен хотя бы у одной из таблиц
    4. Соединение необходимого количества таблиц-источников данных, причем флажок «Все» обязательно должен быть проставлен хотя бы у одной из таблиц».

    Не могу понять, как его трактовать, как «сколько таблиц в запросе вообще можно связать (с помощью соединений)» или «сколько таблиц можно связать одним соединением»? 3 и 4 варианты ответа, понятно, что даже не рассматриваем. Как Вы думаете, что имеется в виду?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  10. Дмитрий Агаев

    Добрый день, Василий.
    Вопрос по уроку №14 «Особенность левого соединения».
    В уроке Вы связываете результат выполнения запроса с особенностью сравнения произвольных значений со значением NULL. Я не смог понять эту связь. Возможно ли объяснить результат выполнения запроса в котором есть левое соединение с одновременным наложением условия по правой таблице только порядком выполнения секций запроса? Т.е. сначала выполняется левое соединение (секция ИЗ), а следующим этапом отбор по условию (секция ГДЕ). В одном из своих ответов на вопросы по модулю 4 Вы так и писали:»Вообще секции обрабатываются в таком порядке: 1. ИЗ 2. ГДЕ 3. СГРУППИРОВАТЬ ПО 4. ИМЕЮЩИЕ 5. ВЫБРАТЬ 6. УПОРЯДОЧИТЬ ПО».

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  11. zaharova

    Большое спасибо! Очень наглядно и интересно!

  12. zaharova

    Здравствуйте! Помогите мне пожалуйста составить запрос по след. условию:
    Обрабатывается табличная часть Поступление товаров и формируется выборка след. образом Товар, Датадокумента , цена товара, и далее дата следующего документа Поступление товара на этот же товар, и цена его в этом следующем документе. т.е цена товара по текущему и следующему документу.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  13. Lucia_

    Добрый день!
    Вопрос не совсем по теме, но я не понимаю, как так) Может вы спасете меня от разрыва мозга)
    В связи с тем, что в консоли запроса для управляемого приложения невозможно вставить подзапрос, я из последних сил пытаюсь открыть ИнструментыРазработчикаКонсольЗапросов83.epf, но вываливаются ошибки на функции СтрНайти, СтрШаблон и т.д.

    {Форма.Форма.Форма(1561,8)}: Процедура или функция с указанным именем не определена (СтрНайти)

    Почитала, это нововведение платформы 8.3.6.1977. У меня стоит 8.3.6.2041. убрала в обучательной конфигурации совместимость с 8.3.5, поставила «не использовать», ошибки в конфигураторе теперь нет. Но в приложении все то же! Как так???

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • Lucia_

        Спасибо!
        Все получилось.
        Делала все то же самое, и сохраняла. Но на свежую голову все закрыла, открыла заново и все заработало) Без лишних движений с моей стороны.

  14. AxiLLes

    Утро доброе)

    Конструктор запроса автоматически преобразует Правое Соединение в Левое.
    Это связано с каким-то «недоверием» к Правому соединению? Т.е. есть ли вариант, что принудительное указание Правого соединения в тексте запроса приведет к ошибке?
    Заметил что если явно указывать Правое соединение, то на стороне СУБД и выполняется Right Outer Join.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  15. Панфилов Александр

    Автоматическая подстановка соединения в конструкторе запроса

    Соединение таблиц вида:

    Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары

    является более осмысленным, так как у документа может быть 0 записей в табличной части и левое соединение позволяет «не потерять» такие документы,
    а обратная ситуация, когда ссылка в табличной части есть, а в основной таблице отсутствует возможна только при нарушении ссылочной целостности базы.
    Поэтому постоянно приходится исправлять подстановку конструктора. Куда смотрят разработчики!?!?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  16. Igor

    В практическом задании №20 во вложенном запросе использую РАЗЛИЧНЫЕ для уменьшения полученного списка. Насколько это правильно и почему не меняется план выполнения запроса с использованием «РАЗЛИЧНЫЕ» и без?
    Спасибо.
    ВЫБРАТЬ
    Склады.Наименование
    ИЗ
    Справочник.Склады КАК Склады
    ГДЕ
    НЕ Склады.Ссылка В
    (ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПоступлениеТоваров.Склад
    ИЗ
    Документ.ПоступлениеТоваров КАК ПоступлениеТоваров)

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • Igor

        Спасибо. Я немного неточно сформулировал. В любом случае, если указывать или не указывать в 1с-запросе РАЗЛИЧНЫЕ, sql-запрос не меняется, будет без указания «различные». А вот план выполнения запроса в любом случае (у меня) получается с WITHOUT DUPLICATES. Выходит что разницы нет, указывать в 1с РАЗЛИЧНЫЕ или не указывать — субд сама разберется.

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  17. galich2

    Возможно ли
    ВЫБРАТЬ
    Справочник.Номенклатура.Наименование КАК Наименование,
    Справочник.Номенклатура.Артикул КАК Артикул,
    а третье поле, которого нет в реквизитах, должно быть Наименование + Артикул
    ИЗ …, т.е. как вычисляемое поле?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • galich2

        Спасибо, получилось.
        Но вот такая задача: Есть поле ДатаНачала (только время, например, 10-00), второе поле ДатаОкончания (только время, например, 19-00). Т.е. у документа есть два реквизита и заполняется только время. А в третье (вычисляемое поле) должно быть 10-19, как простой текст. Но конструкция
        ВЫБРАТЬ
        КакойТоДокумент.ДатаНачала,
        КакойТоДокумент.ДатаОкончания,
        КакойТоДокумент.ДатаНачала — КакойТоДокумент.ДатаОкончания КАК ТекстовоеПоле

        не работает, да и не будет, т.к. даты. А как получить результат типа строка вида 10-19.
        Спасибо.

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  18. galich2

    Доброго времени.
    Если на форму добавить реквизит, то как его потом в запросе использовать, этот реквизит же будет невиден в конструкторе запросов?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  19. Игорь

    Добрый день. В типовых решениях старого поколения для хранения дополнительных реквизитов используются два ПВХ и регистр сведений «ЗначенияСвойствОбъектов «. Как методически правильно получить запросом значение определенного дополнительного реквизита

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  20. Andrefan

    Добрый день.
    Если есть необходимость не выводить дубли, что будет эффективнее с точки зрения производительности:
    1)ОБЪЕДИНИТЬ
    или
    2)ОБЪЕДИНИТЬ ВСЕ с последующим помещением во временную таблицу и группировкой по всем полям?
    И еще: как часто Вы на практике прибегали к ОБЪЕДИНИТЬ?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  21. enmelnik

    Скачал сегодня с ИТС обработку «Консоль запросов», так в ней при редактировании произвольного условия нельзя открыть конструктор запроса для вложенного запроса(((

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  22. m-jedi

    И еще один вопрос, если можно:)
    Столкнулся с проблемой получения данных по количеству имеющихся в базе документов, в разрезе их типов,
    т.е. стоит задача определить, сколько в базе документов «Авансовый отчет», «Реализация…»….
    Конечно, можно перебрать в цикле каждый тип документов из метаданных, а… можно ли одним запросом получить выборку из двух колонок, где в первой будет тип документа, а во второй — количество?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  23. m-jedi

    Добрый день, Василий!
    Вопрос про связи двух таблиц (типовая розница 2.1).
    Есть таблица продаж, в которой есть номенклатура, количество, сумма.
    Есть таблица поступлений в которой есть регистратор, номенклатура. У регистратора надо взять контрагента (приход регистрируется только «Поступлением товаров»).
    При попытке соединить две таблицы по номенклатуре имеем декартово произведение всевозможных сочетаний «номеклатура — контрагент» и, как следствие, неверные цифры. Можно ли как-то вытащить одного контрагента, если их больше одного и подставить в качестве единственного.

    Вот запрос:

    ВЫБРАТЬ
        ПродажиОбороты.Магазин КАК Магазин,
        ПродажиОбороты.Номенклатура КАК Номенклатура,
        ПродажиОбороты.Характеристика,
        СУММА(ПродажиОбороты.КоличествоОборот) КАК Количество,
        СУММА(ПродажиОбороты.СтоимостьБезСкидокОборот) КАК ВсегоПродажа,
        СУММА(ПродажиОбороты.СтоимостьБезСкидокОборот - ПродажиОбороты.СтоимостьОборот) КАК Скидка
    ПОМЕСТИТЬ ВТ_Продажи
    ИЗ
        РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ПродажиОбороты

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

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ТоварыНаСкладах.Номенклатура,
        ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.ПоступлениеТоваров) КАК Поступление,
        ТоварыНаСкладах.Характеристика
    ПОМЕСТИТЬ ВТ_Поступления
    ИЗ
        РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
    ГДЕ
        ТИПЗНАЧЕНИЯ(ТоварыНаСкладах.Регистратор) = ТИП(Документ.ПоступлениеТоваров)

    СГРУППИРОВАТЬ ПО
        ТоварыНаСкладах.Номенклатура,
        ТоварыНаСкладах.Характеристика,
        ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.ПоступлениеТоваров)
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВТ_Продажи.Магазин КАК Магазин,
        ВТ_Поступления.Поступление.Контрагент.Наименование КАК Контрагент,
        ВТ_Продажи.Номенклатура КАК Номенклатура,
        ВТ_Продажи.Количество КАК Количество,
        ВТ_Продажи.ВсегоПродажа КАК ВсегоПродажа,
        ВТ_Продажи.Скидка КАК Скидка
    ИЗ
        ВТ_Продажи КАК ВТ_Продажи
            ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Поступления КАК ВТ_Поступления
            ПО ВТ_Продажи.Номенклатура = ВТ_Поступления.Номенклатура
                И ВТ_Продажи.Характеристика = ВТ_Поступления.Характеристика

    СГРУППИРОВАТЬ ПО
        ВТ_Продажи.Номенклатура,
        ВТ_Продажи.Магазин,
        ВТ_Продажи.Количество,
        ВТ_Продажи.ВсегоПродажа,
        ВТ_Продажи.Скидка,
        ВТ_Поступления.Поступление.Контрагент.Наименование

    УПОРЯДОЧИТЬ ПО
        Контрагент
    ИТОГИ
        СУММА(Количество),
        СУММА(ВсегоПродажа),
        СУММА(Скидка)
    ПО
        ОБЩИЕ,
        Магазин,
        Контрагент,
        Номенклатура
    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • m-jedi

        Огромнейшее спасибо! Именно и нужен был любой контрагент.

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  24. hjkl

    Добрый день.
    Видел в запросах(и в типовых) примерно такую вещь — выбираются данные из трех таблиц 1 основная к ней левым соединением цепляется 2, а 3 левым(или внутренним) соединением подцепляется ко 2-й таблице.
    (Ахтунг вас из дас?! так наверно думает оптимизатор запроса :), но я точно так думаю).

    Всегда стремился избегать такие ситуации — использовал временные таблицы, а почитав материалы 8 курса, такая связь таблиц не очень оптимальна. Я прав? Но это побочный вопрос, а вот основной:

    Скажите пожалуйста какова последовательность соединений сперва 2 и 3, а потом это все к 1 или как?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  25. Templ

    Здравствуйте

    Мне нужно получить данные справончика физические лица для вывода на печать. Реквизиты и две табличные части. Нужны данные только по одному человеку. Как лучше сделать?
    1. В одном запросе получить реквизиты и две вложенные таблицы.
    2. В первом пакетном запросе получить одну таблицу и реквизиты через ссылку. Во втором пакетном запросе получить второую таблицу.

    В макете две табличные части.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  26. soulseller76

    Василий, добрый день. Никак не могу загрузить базу из модуля №2. Появляется ошибка «неверный формат файла для загрузки информационной базы». Скажите, для какой платформы эта база?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  27. Сергей Беляков

    Добрый день! С праздником Вас и всех благ Вам и всем обучающимся! Видеоурок оператор В. Вы дали образец запроса
    ВЫБРАТЬ
    Товары.Наименование
    ИЗ
    Справочник.Товары КАК Товары
    ГДЕ
    Товары.Наименование В (&Список)

    Выбираем тип параметра «Список» как список значений. Выбираем значение Список значений-добавить, выбираем товар –Валенки, нажимаем ОК и……. в графе значение ничего не проставляется. А Видеоуроке значение параметра не заполнялось, перейдя на новую тему. Я что-то не так делаю или не понял???

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  28. shevelyov

    Ещё вопрос: как в демонстрационной конфигурации «Управляемое приложение» переключить интерфейс с «Такси» на обычный?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

          • shevelyov

            Спасибо, в конфигураторе было только «Такси», исправил.

  29. shevelyov

    Добрый день!
    Урок 19 «Объединить все» и «Объединить»: сделали упорядочивание по полю Товар. Однако в результате товары отсортированы не по алфавиту.
    Кроссовки
    Пинетки
    Молоко…

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  30. DasTPID

    В чём заключается принципиальная разница между конструкциями
    ВЫБРАТЬ * ИЗ А,Б ПО А.А = Б.Б и ВЫБРАТЬ * ИЗ А,Б ГДЕ А.А = Б.Б ?

    И там и там задаётся условие, если оно выполняется то строка в результат запроса попадёт.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • DasTPID

        Добрый день!
        Неудачно сформулировал вопрос, имелось в виду полное соединение конечно же. Допустим есть две таблицы А и Б, их полное соединение (декартово произведение) это таблица, содержащая все возможные комбинации строк из А и Б. Если мы зададим в полном соединении какое-либо условие, например ПО А.А = Б.Б, то из всех возможных комбинаций строк останутся только те, где условие выполняется. Ровно то же самое произойдёт, если мы в полном соединении не будем задавать условие соединения, а просто наложим фильтр на результат ГДЕ А.А = Б.Б. Вот собсно я и спрашиваю: а есть ли разница между этими двумя конструкциями?

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

          • Templ

            А во втором варианте декартово соединение будет?

            • Василий Ханевич


              (текст комментария доступен только участникам Мастер-группы)

  31. shevelyov

    Добрый день!
    В условии соединения мы всегда использовали, естественно равенство, например:
    ВЫБРАТЬ
    Организации.Ссылка,
    РасчетныеСчета.Владелец
    ИЗ
    Справочник.РасчетныеСчета КАК РасчетныеСчета
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
    ПО РасчетныеСчета.Владелец = Организации.Ссылка
    А есть ли какой-нибудь смысл в данном запросе, если «=» заменить на «» или «>», или эти виды сравнения используются только для полей типа «Число»?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  32. handsome

    Возможно ли построить план-фактный отчет с помощью присоединения таблиц, а не объединения?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  33. SergeyD

    Здравствуйте.
    К видео «12. Отличие Неопределено и Null» хочу отметить одно сходство между этими значениями: результат функции ТипЗначения в запросе равен Null. При этом, если в конфигураторе сравнить типы этих значений, то они уже не будут равны.

    %D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%D0%A2%D0%B8%D0%BF%D0%BE%D0%B2%D0%92%D0%9A%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B5.png

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • SergeyD

        Получается это не особенность, а не до конца исправленная ошибка платформы. Т.к. значение составного типа Реквизит1, которое при проверке Значения в процедуре ВывестиДеталиБезИерархии равно Неопределено, в тоже время не эквивалентно жестко прописанному НЕОПРЕДЕЛЕНО.

        %D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0.PNG

        • SergeyD

          Еще обратил внимание, что результат для ТипЗнч(НЕОПРЕДЕЛЕНО) в конфигураторе выдает значение «Не определено»(через пробел). А для Реквизита1, которое при проверке равно Неопределено, в колонке «Значение» вообще пусто, зато в колонке Тип уже написано «Неопределено»(уже без пробела).

          Спасибо, что указали на зарегистрированную ошибку, а то бы думал, что это закономерность.

          %D0%9D%D0%B5%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BE.PNG

          • Василий Ханевич


            (текст комментария доступен только участникам Мастер-группы)

            • Василий Ханевич


              (текст комментария доступен только участникам Мастер-группы)

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  34. dron

    Возник еще вопрос.
    1)Пример: Есть таблица контрагентов, есть таблица с контактной информацией контрагентов. У одного контрагента может быть два телефона(разными строчками) в таблице контактной информации, тип строка.
    Существует ли возможность каким-либо образом СОЕДЕНИТЬ или ОБЪЕДЕНИТЬ две таблицы что-бы получились такая таблица:

    Контрагент1 | Телефон1,Телефон2

    Т.е. склеить объеденением две строчки(тип строка),или каким-либо образом их соеденить

    2)Существует ли возможность добавления вложенного запроса в поля выборки?
    Т.е: Выбрать Т1.Поле1 КАК Поле1,
    (Выбрать Т2.Пол2 ИЗ Т2) КАК Поле2
    ИЗ Т1

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • dron

        А не подскажете где указывать данную функцию в СКД?

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  35. dron

    Добрый день, в теоретическом материале демонстрировался пример с битой ссылкой.
    Существует ли возможность сравнения с битыми ссылками? Например отбора в запросе по битым ссылкам или замены битых ссылок в выводимых полях на какое либо значение по аналогии с ЕСТЬNULL(поле1,0) .

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  36. venvlad

    Добрый день. Подскажите пожалуйста. У меня в запросе в выборку попадают документы выбранной категории, как сделать чтобы в выборку попадали все документы за выбранный период?

    Запрос:
    ВЫБРАТЬ
    ПлатежноеПоручение.Ссылка,
    ВЫБОР
    КОГДА КатегорияОбъектов.Категория ISNULL
    ТОГДА Ложь
    ИНАЧЕ Истина
    КОНЕЦ КАК Пометка
    ИЗ
    Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручение
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектов
    ПО ПлатежноеПоручение.Ссылка = КатегорииОбъектов.Объект
    ГДЕ
    ПлатежноеПоручение.Дата Между &ДатаС &ДатаПо
    И КатегорияОбъектов.Категория = &Категория

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • MMariya

        «Особенность левого соединение» имеет еще другое (второе) решение: например, в этом примере в секцию ГДЕ добавить «ИЛИ КатегорияОбъектов.Категория есть NULL». Полный код секции ГДЕ:
        «ГДЕ
        ПлатежноеПоручение.Дата Между &ДатаС &ДатаПо
        И ( КатегорияОбъектов.Категория = &Категория ИЛИ КатегорияОбъектов.Категория есть NULL)».

        Но в запросе СКД оба эти решения нельзя использовать. Как же решить проблему превращения ЛЕВОГО соединения во ВНУТРЕННЕЕ в запросе СКД?

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

          • MMariya

            Пример, ЛЕВОЕ соединение Справочника (например, Регионы) с временной таблицей с данными (ВТПраваяТаблица — слияние продаж, покупок и т.д.). В конструкторе запросов в СКД закладку «Условия» заполняем на закладке «Компоновка данных». (так рекомендуется). В результате секция ГДЕ в тексте запроса получается в фигурных скобках:

            {ГДЕ РегионПравойТаблицы.Ссылка.*}

            Как здесь перенести условие ГДЕ в фигурных скобках в секцию ПО?

            • Василий Ханевич


              (текст комментария доступен только участникам Мастер-группы)

  37. MMariya

    Добрый день,
    Переделала примеры из главы «Одновременное использование ОБЪЕДИНИТЬ ВСЕ и ОБЪЕДИНИТЬ». Получается, что оператор ОБЪЕДИНИТЬ удаляет дубликаты у ВСЕХ наборов выше. А я раньше всегда наивно полагала, что записи ДОБАВЛЯЮТCЯ без дубликатов. Почему такое странный результат? Почему ниже находящийся набор данных влияет на все вы находящиеся?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  38. MMariya

    В главе «Виды соединения таблиц» написано: «Соединяемые источники не равнозначны между собой, и в некоторых случаях результат зависит от того, какая таблица указана первой, до ключевого слова СОЕДИНЕНИЕ (слева от него), а какая – второй (справа).» Мне не понятно. Можно поподробнее, и например, в каких случаях?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  39. venvlad

    Добрый день. Почему-то в произвольном выражении не доступен конструктор запроса. Все делаю как положено: пробел, выделяю, нажимаю правую кнопку мыши. Платформа 8.3.5.1248, толстый клиент.
    Фотку приложил.

    f3ccdd27d2000e3f9255a7e3e2c48800.jpg

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  40. jannetka

    Добрый день!
    Что-то не совпадают объекты в конфигурации для изучения и в разборках примеров. Документы могу по смыслу подобрать, а вот, например, справочника «Регионы» нет. Замысел обучения в некоторой доработке конфы? Тогда, нельзя ли сразу про все доработки где-то узнать? Сегодня еще разок скачала, регионы отсутствуют.

    3a3fd1e6360c0f9d7b42ee7276e7f1ce.jpg

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  41. jannetka

    В практическом задании использовала «НЕ В», результат получен, но какие подводные камни?

    ef07ce8b736b13ac9f7c75f7098ed21d.jpg

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  42. Максим

    Если мы выбираем несколько таблиц (больше 2х), и на закладке соединения настраиваем различные соединения для всех таблиц, в какой последовательности это всё будет соединяться? Есть ли какой-то приоритет?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  43. Максим

    Добрый день!
    Подскажите, пожалуйста, порядок следования операций соединения и отбора «где». Сначала выполняется отбор, потом соединение или наоборот?
    И в последнем видео уроке использовался вложенный запрос. С появлением временных таблиц вложенные запросы имеют право на существование, или лучше переписывать запрос с использованием ВТ?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • Максим

        А что раньше выполняется, группировка или соединение?

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

          • Максим

            А какой приоритет для этой схемы будет у объединения?

            • Василий Ханевич


              (текст комментария доступен только участникам Мастер-группы)

      • man_14

        Проблемой является соединение с вложенным запросом (в том, числе и с виртуальной таблицей…

        Но ведь в конфигурациях часто используется соединения, например, с РегистромСведенийСрезПоследних (а ведь это виртуальная таблица)

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  44. serk@rarus.ru

    Здравствуйте,

    У меня вопрос касается запроса в условии, через «В».

    Если написать следующий текст:
    «Склады.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПоступлениеТоваров.Склад КАК Подразделение
    ИЗ Документ.ПоступлениеТоваров КАК ПоступлениеТоваров)»

    То запрос отработает так как надо, даже если во вложенном запросе поле имеет совершенно другое наименование. А вот если используется список полей, важно соблюдать наименование полей вложенных таблиц или важна последовательность этих полей?

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  45. marivgo

    Спасибо большое за курс! Прошла четыре модуля и уже в восторге. Очень нравится манера изложения. Глубина подачи материала охватывает все необходимые ситуации, но в то же время не затянуто, как раз то, что надо, все ключевые моменты. Надеюсь, что дальше будет еще интереснее:))
    У меня вопрос, есть ли существенная разница в производительности между предложенным в решении способом и следующим:
    ВЫБРАТЬ
    Склады.Наименование
    ИЗ
    Справочник.Склады КАК Склады
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
    ПО (ПоступлениеТоваров.Склад = Склады.Ссылка)
    ГДЕ
    ПоступлениеТоваров.Ссылка ЕСТЬ NULL

    На небольших таблицах с данными получается практически одно и то же по замеру производительности. При первом запуске чуть быстрее предложенный в курсе вариант решения, при повторных запусках того же запроса чуть быстрее указанный выше вариант. Но возможно, на этих запусках статистика не показательная.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  46. Stanislavna

    Добрый день! Нестыковка в названии видеоурока. стр.116.»Видеоурок. Отладка запросов при помощи выгрузки в таблицу значений.
    Данный урок записан в видеоформате. Обратитесь к файлу Query-4-2-Join-9″
    Обращаюсь, файл Query-4-2-Join-9: «Отличие Неопределено и Null.»

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

      • vip_kst

        Похоже не исправилось… Проверьте пожалуйста еще раз!

        • Василий Ханевич


          (текст комментария доступен только участникам Мастер-группы)

  47. rut-marina

    Здравствуйте!
    Не совсем понятен результат запроса
    ВЫБРАТЬ 1 КАК Поле1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 1

    По логике д.б. 2 строки с единичками, раз мы объединяем первую 1 полностью с остальными данными??

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  48. s.trukhachev

    Если не ориентироваться на уровень слушателей курса, то, на мой взгляд, следует упомянуть о следующем: если работаем напрямую с документами — необходимо учитывать признак «Проведен» в запросах.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

  49. viaton

    Здравствуйте!

    Практическое задание №20. Какой запрос оптимальнее с точки зрения производительности, если документов большое количество:
    Вариант 1. Запрос, показанный в решении практического задания.
    Вариант 2. Во вложенном запросе дополнительно использовать ключевое слово РАЗЛИЧНЫЕ. С одной стороны, тратится время на отбор уникальных складов, с другой стороны, «на входе» оператора В может остаться таблица из пары строчек, вместо нескольких тысяч, как в варианте 1.

    • Василий Ханевич


      (текст комментария доступен только участникам Мастер-группы)

Комментарии закрыты