8.х Вопрос по СКД

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем X-Man, 25 июн 2016.

  1. TopicStarter Overlay
    X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    433
    Симпатии:
    3
    Баллы:
    29
    Здравствуйте. Прошу подсказки у знающих СКД людей. В конструкторе запроса набора данных для виртуальных таблиц можно задать их параметры в двух местах:

    1.В списке таблиц запроса (как в обычном конструкторе запроса)
    2.На закладке "Компоновка данных"

    Вопрос: в чем разница, и где лучше задавать параметры виртуальных таблиц?
  2. bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    328
    Симпатии:
    22
    Баллы:
    29
    ИМХО,
    1-й вариант накладывает условие на результаты самого запроса в виртуальной таблице регистра.
    2-й вариант делает условие компоновщика (в запросе выглядит как {ГДЕ ...}
    Если не задавать условия в 1-м запросе то можно получать избыточные данные, которые потом компоновщик будет по 2-му условию еще "фильтровать", а если не задавать во 2-м то не используется на самом деле замечательный вшитый механизм (надо будет тогда руками в каждом отчёте добивать код)
    Может есть и более глубокие отличия, но на практике с ними не сталкивался...
    alexburn нравится это.
  3. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    НУ не совсем так.
    В первом варианте это обязательное условие т.е. оно будет выполняться всегда.
    Во втором варианте это необязательное условие оно и оформляется фигурными скобками

    В первом варианте вот так у Вас и если вы не укажите праметр Склад то будет ошибка
    Код:
    ВЫБРАТЬ
        ТоварыНаСкладахОстатки.Склад,
        ТоварыНаСкладахОстатки.Номенклатура,
        ТоварыНаСкладахОстатки.КоличествоОстаток
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    ГДЕ
        ТоварыНаСкладахОстатки.Склад = &Склад
    Второй вариант это
    Код:
    ВЫБРАТЬ
        ТоварыНаСкладахОстатки.Склад,
        ТоварыНаСкладахОстатки.Номенклатура,
        ТоварыНаСкладахОстатки.КоличествоОстаток
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    {ГДЕ
        ТоварыНаСкладахОстатки.Склад = &Склад}
    и если Вы не укажите парметр склад то ошибки не будет по всем складам выдаст

Поделиться этой страницей