Запрос всей номенклатуры с характеристиками

Публикация № 1487823 30.07.21

Приемы и методы разработки - Математика и алгоритмы

Запрос Номенклатура Характеристика Замеры

Сравнение различных вариантов запроса всей номенклатуры с характеристиками (УТ11.4, КА 2.4, ERP 2.4).

Доброго времени суток!

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

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

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

Помним, что наилучшее решение всегда индивидуально и зависит от многих факторов.

Условия:

- Каждый запрос выполняется 1000 раз подряд (в цикле) для определения лучшего, худшего, среднего и общего результата. При длительных запросах по понятным причинам обходился замерами в консоли.

- На каждый запрос  по 3 повтора (итого 3000 запросов) для разброса.

Предлагаю поэтапно составить запрос.

 
 1 этап - вытянуть всю номенклатуру без характеристик
Особенности 
Текст запроса
Время выполнения
Лучшее
Худшее
Среднее
Общее
1

одинарный

отбор

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

00.012,000
00.011,000
00.011,000
00.017,000
00.020,000
00.023,000
00.012,695
00.012,787
00.012,823
12.695,000
12.787,000
12.823,000
2

двойной отбор,

сперва по

использованию

характеристик

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)
    И НЕ Номенклатура.ЭтоГруппа

00.011,000
00.011,000
00.011,000
00.018,000
00.023,000
00.018,000
00.012,937
00.013,345
00.012,892
12.937,000
13.345,000
12.892,000
3

двойной отбор,

сперва по

принадлежности

к группе

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    НЕ Номенклатура.ЭтоГруппа
    И Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

00.011,000
00.012,000
00.012,000
00.024,000
00.020,000
00.022,000
00.013,598
00.013,382
00.013,355
13.598,000
13.382,000
13.355,000

Исходя из таблицы полученных замеров можно сделать следующие выводы:

1 - Чем больше условий отбора в запросе, тем длительнее время выполнения запроса.

2 - Исходя из 2 (второй) строки таблицы можно сделать заключение о том, что при выполнении первого условия косвенно выполняется второе. По сути первое условие уже содержит второе (всегда будет "ИСТИНА", поскольку у группы не может быть признака использования характеристик). Как результат - увеличение времени выполнения запроса.

3 - Порядок условий влияет на результат.

 
 2 этап - вытянуть всю номенклатуру с индивидуальными характеристиками.
Особенности
Текст запроса
Время выполнения
Лучшее
Худшее
Среднее
Общее
1 подход - через владельца номенклатуры
1.1 С оператором "Выразить" ВЫБРАТЬ
    ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура) КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
ГДЕ
    ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура
 00.002,000
 00.003,000
 00.003,000
 00.006,000
 00.006,000
 00.007,000
00.003,372
00.003,411
00.003,381
03.372,000
03.411,000
03.381,000
1.2 Без оператора "Выразить" ВЫБРАТЬ
    ХарактеристикиНоменклатуры.Владелец КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
ГДЕ
    ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура
 00.004,000
 00.004,000
 00.004,000
 00.008,000
 00.009,000
 00.014,000
00.004,924
00.004,948
00.004,989
04.924,000
04.948,000
04.989,000
1.3 Недостоверные данные ВЫБРАТЬ
    ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура) КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
00.002,000
00.002,000
00.002,000
00.004,000
00.005,000
00.006,000
00.003,201
00.003,209
00.003,271
03.201,000
03.209,000
03.271,000
1.4 Недостоверные данные ВЫБРАТЬ
    ХарактеристикиНоменклатуры.Владелец КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
00.004,000
00.003,000
00.003,000
00.007,000
00.006,000
00.007,000
00.004,831
00.004,779
00.004,758
04.831,000
04.779,000
04.758,000
2 подход - через соединение таблиц (справочников)
2.1 - соединение
2.1.1

Внутреннее соединение "В лоб" по владельцу

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец)
00.008,000
00.008,000
00.008,000
00.014,000
00.011,000
00.017,000
00.009,521
00.009,465
00.009,521
09.521,000
09.465,000
09.521,000
2.1.2 Внутреннее соединение по виду номенклатуры и "В лоб" по владельцу

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

00.011,000
00.011,000
00.011,000
00.021,000
00.021,000
00.023,000
00.012,141
00.012,001
00.012,003
12.141,000
12.001,000
12.003,000
2.2 - соединение с последующими отборами
2.2.1

Внутреннее соединение "В лоб" по владельцу, с отбором по признаку использования характеристик

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец)
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
00.015,000
00.014,000
00.015,000
00.026,000
00.034,000
00.066,000
00.016,326
00.016,455
00.016,504
16.326,000
16.455,000
16.504,000

2.2.2

Внутреннее соединение "В лоб" по владельцу, с последующим отбором по признаку использования характеристик и типу ссылки владельца ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец)
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
    и ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура
00.015,000
00.015,000
00.015,000
00.028,000
00.031,000
00.028,000
00.016,418
00.016,367
00.016,449
16.418,000
16.367,000
16.449,000
2.2.3 Внутреннее соединение с выражением  типа владельца, с последующим отбором по признаку использования характеристик ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.Ссылка = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура)))
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
00.015,000
00.015,000
00.015,000
00.035,000
00.024,000
00.025,000
00.017,070
00.016,777
00.016,786
17.070,000
16.777,000
16.786,000
2.2.4 Внутреннее соединение с выражением  типа владельца, с последующим отбором по признаку использования характеристик и типу ссылки владельца ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.Ссылка = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура)))
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
    и ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура
00.015,000
00.016,000
00.015,000
00.034,000
00.031,000
00.032,000
00.016,756
00.016,883
00.016,785
16.756,000
16.883,000
16.785,000
2.3 - соединение с условиями
2.3.1 Внутреннее соединение с условием  использования характеристик и "В лоб" по владельцу ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
                И Номенклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец)
00.014,000
00.014,000
00.014,000
00.030,000
00.036,000
00.034,000
00.015,857
00.015,930
00.015,821
15.857,000
15.930,000
15.821,000
2.3.2 Внутреннее соединение с условием  использования характеристик и выражением владельца ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
                И Номенклатура.Ссылка = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура)))
00.015,000
00.015,000
00.015,000
00.026,000
00.025,000
00.023,000
00.016,844
00.016,762
00.016,687
16.844,000
16.762,000
16.687,000
2.3.3 Внутреннее соединение с условием  использования характеристик, ограничением по типу ссылки и по владельцу ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
                И ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура
                И Номенклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец)
00.015,000
00.014,000
00.014,000
00.026,000
00.039,000
00.037,000
00.015,925
00.016,455
00.016,027
15.925,000
16.455,000
16.027,000
2.3.4 Внутреннее соединение с условием  использования характеристик, ограничением по типу ссылки и выражением владельца ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
                И ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура
                И Номенклатура.Ссылка = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура)))
00.015,000
00.015,000
00.015,000
00.026,000
00.019,000
00.022,000
00.016,851
00.016,745
00.016,782
16.851,000
16.745,000
16.782,000
Замеры, указанные в таблице, предполагают следующие выводы:

1 - Лучший вариант - напрямую обращаться к реквизиту элемента, не делая соединений.

2 - Судя по запросам 1.1 и 1.2 - оператор "Выразить" влияет на результат достаточно серьезно в связке с ограничением типа ссылки.

3 - Внутреннее соединение "В лоб" - быстрее, чем любой дополнительный отбор как во время, так и после соединения таблиц.

4 - Количество отборов "до" или "во время" влияет на результат и при соединении. Стоит придерживаться стратегии наименьшего количества достаточных условий.

5 - Лучше соединение с условиями, чем последующий отбор.

ВНИМАНИЕ!!! Существенным недостатком 1 подхода считаю недостоверность данных. Конкретно в базе, на которой тестировал, пользователь сперва создал номенклатуру с индивидуальными характеристиками и создал характеристики, а потом поменял у номенклатуры вид на "без характеристик". Получилась ситуация, когда характеристика имеет владельца, но номенклатура-владелец не имеет признака использования характеристик.

 
 3 этап - вытянуть номенклатуру с характеристиками общими по виду номенклатуры или общие с другим видом
Особенности
Текст запроса
Время выполнения
Лучшее
Худшее
Среднее
Общее
1 - соединение по владельцу
1.1 - соединение по владельцу без условий
1.1.1 Внутреннее соединение "В лоб" по владельцу

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

00.002,000
00.002,000
00.002,000
00.004,000
00.005,000
00.011,000
00.003,007
00.003,048
00.003,051
03.007,000
03.048,000
03.051,000
1.1.2 Внутреннее соединение "В лоб" по владельцу с выражением  типа владельца ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ВидНоменклатуры = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.ВидыНоменклатуры)))
00.003,000
00.004,000
00.004,000
00.005,000
00.012,000
00.009,000
00.004,679
00.004,712
00.004,707
04.679,000
04.712,000
04.707,000
1.2 - соединение по владельцу с последующим наложением условий
1.2.1 Внутреннее соединение "В лоб" по владельцу, с последующим отбором по признаку использования характеристик

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

00.002,000
00.002,000
00.002,000
00.011,000
00.010,000
00.010,000
00.003,377
00.003,413
00.003,371
03.377,000
03.413,000
03.371,000
1.2.2 Внутреннее соединение "В лоб" по владельцу, с последующим отбором по признаку использования характеристик и типу ссылки владельца

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

00.002,000
00.003,000
00.002,000
00.010,000
00.010,000
00.009,000
00.003,436
00.003,430
00.003,454
03.436,000
03.430,000
03.454,000
1.2.3 Внутреннее соединение с выражением  типа владельца и последующим отбором по признаку использования характеристик и типу ссылки владельца

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

00.003,000
00.003,000
00.003,000
00.011,000
00.012,000
00.007,000
00.003,996
00.003,945
00.003,777
03.996,000
03.945,000
03.777,000
1.3 - соединение по владельцу с условиями
1.3.1 Внутреннее соединение с условием  использования характеристик и "В лоб" по владельцу ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры))
            И (Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.Владелец)
00.003,000
00.002,000
00.002,000
00.005,000
00.004,000
00.006,000
00.003,332
00.003,333
00.003,331
03.332,000
03.333,000
03.331,000
1.3.2 Внутреннее соединение с условием  использования характеристик и выражением владельца ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры))
            И (Номенклатура.ВидНоменклатуры = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.ВидыНоменклатуры)))
            И (Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.Владелец)
00.003,000
00.003,000
00.003,000
00.005,000
00.010,000
00.005,000
00.003,983
00.004,013
00.003,993
03.983,000
04.013,000
03.993,000
1.3.3 Внутреннее соединение с условием  использования характеристик, ограничением по типу ссылки и по владельцу ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
                И ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.ВидыНоменклатуры
                И Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.Владелец)
00.003,000
00.003,000
00.002,000
00.005,000
00.008,000
00.007,000
00.003,407
00.003,395
00.003,502
03.407,000
03.395,000
03.502,000
1.3.4 Внутреннее соединение с условием  использования характеристик, ограничением по типу ссылки и выражением владельца

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

00.003,000
00.003,000
00.003,000
00.005,000
00.005,000
00.007,000
00.004,059
00.004,057
00.004,053
04.059,000
04.057,000
04.053,000
2 - соединение по виду
2.1 - соединение по виду без условий
2.1.1

Внутреннее соединение "В лоб" по владельцу характеристик номенклатуры, не подходит для соединения по виду

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ВладелецХарактеристик= ХарактеристикиНоменклатуры.ВидНоменклатуры)
00.002,000
00.002,000
00.002,000
00.004,000
00.004,000
00.005,000
00.003,156
00.003,159
00.003,177
03.156,000
03.159,000
03.177,000
2.2 - соединение по виду с отборами
2.2.1 Внутреннее соединение "В лоб" по виду номенклатуры, с последующим отбором по признаку использования характеристик ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.ВидНоменклатуры)
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
00.003,000
00.002,000
00.002,000
00.004,000
00.006,000
00.004,000
00.003,441
00.003,456
00.003,441
03.441,000
03.456,000
03.441,000
2.3 - соединение по виду с условиями
2.3.1 Внутреннее соединение с условием  использования характеристик ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
        И Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.ВидНоменклатуры)
00.003,000
00.002,000
00.002,000
00.005,000
00.005,000
00.005,000
00.003,476
00.003,431
00.003,458
03.476,000
03.431,000
03.458,000

К сожалению, рабочей базы с подходящей номенклатурой под рукой нет, замеры проводил на демо.

Различных вариантов получилось много.

Как и в предыдущих замерах соединение с последующим отбором занимает больше времени, чем отбор во время соединения. Так же многие условия косвенно уже выполняются (1.2.1 например, если владелец вид номенклатуры - то это общие характеристики, проверять после этого номенклатуру не имеет особого смысла).

Лучший вариант по замерам: просто соединить по реквизиту номенклатуры.



 

 
4 Этап - объединение запросов
Особенности
Текст запроса
Время выполнения
Лучшее
Худшее
Среднее
Общее
4 подзапроса

Объединение из самых быстрых

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

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

ВЫБРАТЬ
    ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура),
    ХарактеристикиНоменклатуры.Ссылка
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
ГДЕ
    ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура

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

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

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

ВЫБРАТЬ
    Номенклатура.Ссылка,
    ХарактеристикиНоменклатуры.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО Номенклатура.ВладелецХарактеристик = ХарактеристикиНоменклатуры.ВидНоменклатуры

00.017,000
00.016,000
00.017,000
00.039,000
00.032,000
00.026,000
00.017,999
00.018,012
00.017,944
17.999,000
18.012,000
17.944,000
3 подзапроса
запрос явно не оптимальный, хотя и сокращает количество подзапросов

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

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

ВЫБРАТЬ
    ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура),
    ХарактеристикиНоменклатуры.Ссылка
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
ГДЕ
    ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура

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

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

03.068,000 08.579,000 03.829,317 1:03:49.317,000
Изменил на соединение по виду номенклатуры. Чуть быстрее, но все равно не оптимально.

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

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

ВЫБРАТЬ
    ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура),
    ХарактеристикиНоменклатуры.Ссылка
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
ГДЕ
    ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура

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

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

03.001,000 - - -
2 подзапроса
явно не оптимально

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

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

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

03.514,000      
явно не оптимально

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

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

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

03.701,000      
1 подзапрос
долго, нудно... но одним подзапросом ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЕСТЬNULL(ХарактеристикиНоменклатуры.Ссылка, ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (ВЫБОР
                КОГДА Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
                        И ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура
                    ТОГДА Номенклатура.Ссылка = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура))
                КОГДА Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
                    ТОГДА Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.ВидНоменклатуры
                КОГДА Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
                    ТОГДА Номенклатура.ВладелецХарактеристик = ХарактеристикиНоменклатуры.ВидНоменклатуры
            КОНЕЦ)
ГДЕ
    НЕ Номенклатура.ЭтоГруппа
    И ВЫБОР
            КОГДА не Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)
                    И ХарактеристикиНоменклатуры.Ссылка ЕСТЬ NULL
                ТОГДА ЛОЖЬ
            ИНАЧЕ ИСТИНА
        КОНЕЦ
03.951,000      

Заключаем, что "Выбор" при соединении замедляет скорость запроса.

Для того, чтобы все собрать в один подзапрос пришлось делать "Левое" соединение.

Без проверки на NULL запрос вытаскивал номенклатуру с отсутствующим списком характеристик (номенклатуру создали, характеристики к ней еще нет).

 
 Итоговые запросы

 Запрос для быстрого вывода всей номенклатуры со всеми характеристиками, состоит из 4 подзапросов

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

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

ВЫБРАТЬ
    ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура),
    ХарактеристикиНоменклатуры.Ссылка
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
ГДЕ
    ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура

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

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

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

ВЫБРАТЬ
    Номенклатура.Ссылка,
    ХарактеристикиНоменклатуры.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО Номенклатура.ВладелецХарактеристик = ХарактеристикиНоменклатуры.ВидНоменклатуры

Запрос вывода всей номенклатуры в одном подзапросе

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

 

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

Тестирование проводилось на УТ 11.4.13.155.

Прикладываю файл запросов, открывать Универсальные инструменты 1С

Скачать файлы

Наименование Файл Версия Размер
Оптимальный запрос номенклатуры с характеристиками :

.q9 127,96Kb
1
.q9 127,96Kb 1 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. capitan 2284 30.07.21 21:57 Сейчас в теме
Ставьте лайк кто на логотипе увидел полную ...
А по запросу - если все равно тащится вся таблица, так может и не надо ничего соединять?
Выбрать ВСЕхарактеристики и из них получить владельца + ВСЮ номенклатуру без характеристик ?
И ОБЪЕДИНИТЬ ?
2. Daemonold 14 30.07.21 22:22 Сейчас в теме
(1) что и сделано в итоговом запросе с 3 объединениями. Вопрос скорее о том в каком виде это отработает быстрее.
Недавно напоролся на типовой запрос в сегментах - таки там в схеме запрос по замерам будет гораздо дольше выполняться (4 сек против 30 мс).
3. triviumfan 37 04.08.21 18:42 Сейчас в теме
Статья новичка только начавшего познавать запросы.
ЗЫ: Ещё неверно понимаешь что есть "подзапрос".
Оставьте свое сообщение

См. также

Как работает серверный вызов в 1С Промо

Математика и алгоритмы Управляемые формы Управляемые формы Бесплатно (free) Бесплатно (free)

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    81188    pahich    86    

Тестирование средств 1С для решения СЛАУ

Механизмы платформы 1С Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Россия Россия Бесплатно (free) Бесплатно (free)

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

23.11.2022    1015    gzharkoj    11    

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    2816    fishca    12    

Установка отбора по списку значений при открытии формы выбора справочника из реквизита обработки

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Бесплатно (free) Бесплатно (free)

Описан алгоритм установки отбора по списку значений при открытии формы выбора справочника. Параметром отбора является список значений передаваемый из одной формы обработки в другую форму этой же обработки. Тестировано под платформу 8.3.18

11.12.2021    4506    prog1c_vl    4    

Минимализмы 3 Промо

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    53330    ildarovich    47    

Практическое применение операции копирования массива

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Решение задачи https://projecteuler.net/problem=250 из Project Euler средствами 1C.

02.08.2021    1808    scientes    2    

Будни автоматизации или "мне нужна программка для 3D упаковки" Промо

Математика и алгоритмы Оптовая торговля Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Управленческий учет Управленческий учет Бесплатно (free) Бесплатно (free)

Автоматизация отечественных предприятий, которой приходиться заниматься, это нужная и высокооплачиваемая, но довольно нервная работа. Выручает юмор. Например, при общении с требовательным клиентом можно вспомнить анекдот: "Держась руками за стену, на ногах еле стоит мужик. К нему пристает ребенок: "Ну, папа, пожалуйста, сделай мне кораблик!", папа отвечает: "Ага! - Сейчас все брошу и пойду делать тебе кораблик!". Про один такой сделанный для клиента "кораблик" и хочется рассказать. Надеюсь, совместное погружение в теплое ламповое (то есть клиентоориентированное) программирование доставит Вам положительные эмоции, да и задача попалась интересная. Поплыли?

24.03.2014    48774    ildarovich    121    

Распределенные алгоритмы РИБ 1С

Математика и алгоритмы Обмен между базами 1C Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Небольшое исследование на тему применимости классических распределённых алгоритмов репликации и синхронизации данных между узлами обмена РИБ 1С.

02.07.2021    1933    zhichkin    1    

Параллельная обработка очереди сообщений

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Описание алгоритма обработки очереди последовательных сообщений регистрации изменений записей регистра сведений. Алгоритм может быть применим к любым объектам метаданных. Алгоритм основан на обработке объектов по их ключам.

15.06.2021    3855    zhichkin    11    

Чем воспользоваться для распознавания котиков в 1С?

Математика и алгоритмы Языки и среды Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

На митапе по инструментам для расширения возможностей 1С выступил Олег Филиппов. Он сравнил подходы Native API, COM, Docker и Serverless, и рассказал, как упростить использование в 1С алгоритмов, реализованных на других языках, с помощью облачной технологии «Функция как сервис».

12.04.2021    4519    comol    10    

Минимализмы 2 Промо

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Следующая серия "минимализмов" [http://infostart.ru/public/306536/]. Также, как и в предыдущей статье, здесь приведена подборка коротких оригинальных решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

23.02.2016    54446    ildarovich    84    

Эффективные приемы разработки

Математика и алгоритмы Рефакторинг и качество кода СКД Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

На Infostart Meetup Ekaterinburg.Online выступил Сергей Наумов – руководитель центра аналитики и консалтинга WiseAdvice. Сергей поделился с коллегами приемами разработки, которые помогут избежать потенциальных проблем при реализации сложных проектов.

07.04.2021    4869    SergeyN    13    

Рекурсия для начинающих

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Рассмотрен подход к пониманию рекурсий. Приведены примеры из реальной практики.

10.02.2021    9280    szv    5    

Минимализмы Промо

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

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

08.10.2014    99191    ildarovich    85    

Самый быстрый FizzBuzz на 1С

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Давайте попробуем найти самое быстрое решение задачи "BuzzFizz" на 1С.

03.02.2021    1801    Donrad    23    

Программное создание корректировочного счета-фактуры выданного в УПП 1.3

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

Данный функционал можно использовать, например, в процессе оформления возвратов от поставщика (корректировка реализации по согласованию сторон) при автоматическом создании корректировок реализации по документам поставщика, он позволяет массово создать корректировочные счета-фактуры в УПП 1.3. При создании документа из первичного счета-фактуры выданного в новый корректировочный счет-фактуру выданный копируются значения свойств.

17.12.2020    1099    ksnik    0    

Параллельные вычисления расчета факториала числа N

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Распараллеливание алгоритма с помощью фоновых заданий (асинхронные вычисления)

29.06.2020    5216    RustIG    18    

Приемы обработки больших данных в 1С Промо

Универсальные обработки Математика и алгоритмы Обмен между базами 1C Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    74662    tormozit    29    

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Предлагается ознакомиться с редким способом графического представления иерархических данных. Приводится алгоритм формирования и пример реализации.

18.02.2020    8101    randomus    20    

Сравнение адресов: случай из практики

Математика и алгоритмы Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Россия Россия Бесплатно (free) Бесплатно (free)

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

04.01.2020    5026    AnatolPopov    7    

Решение транспортной задачи запросом Промо

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Списание по двум последовательностям партий запросом (без программной обработки)

1 стартмани

30.04.2014    36979    bforce    22    

[После]Новогодние задачи

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Совсем немного времени осталось до того момента, когда отзвучат куранты, шампанское будет выпито, мандарины съедены, и даже оливье закончится. Возникнет вопрос: чем бы занять неожиданно появившееся свободное время?

30.12.2019    3927    Alxby    23    

30 задач. Странных и не очень

Математика и алгоритмы Механизмы платформы 1С Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    36588    Infostart    63    

Иерархия без "В ИЕРАРХИИ"

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    18577    ildarovich    24    

Парсер запросов 1С. Часть 1: Введение, разбор математических выражений Промо

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Рано или поздно становится скучно решать типичные задачи, для которых придумана 1С. Голова пухнет от бухгалтерских терминов и очередных "хотелок" пользователей. Именно в такие моменты хочется гордо поднять голову, воскликнуть "Но я же программист!" и заняться чем-то интересным. В цикле статей я постараюсь доступно описать, как устроены парсеры в целом и на примере парсера языка запросов 1С. Требования к навыкам читающего: основы языка 1С, основы алгоритмизации.

1 стартмани

04.12.2013    31893    juntatalor    49    

Побитовые операции "на пальцах"

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Простой пример для понимания того, как это работает.

02.08.2019    4967    nbeliaev    16    

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    179009    AlbinaAAA    50    

FizzBuzz на 1С. Чем короче, тем веселее. Варианты принимаются...

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Мне было скучно, я не мог себя заставить написать ничего полезного. И читал статью на Хабре. Потом я читал комментарии, а потом... нет я не ушел смотреть котиков на ютюбе. Я решил сделать несколько решений задачки FizzBuzz на 1С, с целью "чем короче, тем лучше". Прошу сильно не пинать, это просто развлечение для вечера.

24.07.2019    6568    vandalsvq    19    

Сервис для изучения методов платформы 1С:Предприятие 8. Бесплатно! Промо

Подготовка к аттестации Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Бесплатный ON-Line сервис изучения методов платформы 1С:Предприятие 8. Подготовка к аттестации 1С:Специалист on-line! Тестовые задания по различным видам учета! Подсказки для оптимального решения!

27.06.2013    52626    bpc222    54    

Что делает "В ИЕРАРХИИ" в запросе?

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    68327    Infostart    34    

Создание отчетов с помощью СКД - основные понятия и элементы

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Система компоновки данных Система компоновки данных Бесплатно (free) Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    96452    ids79    32    

Реализуем Стек, Очередь и Приоритетную очередь в 1С

Математика и алгоритмы Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Бесплатно (free) Бесплатно (free)

В статье рассматриваются способы реализации таких абстрактных структур данных, как стек, очередь и приоритетная очередь, используя готовые типы данных 1С. Выявляются "узкие" места, сложные моменты в реализации и сравнивается скорость работы.

24.06.2019    18857    RonX01    69    

v8: Концепция минимального изменения конфигурации для легкого обновления Промо

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

"Лучше день потерять потом за пять минут долететь" ((с) "Крылья, ноги и хвосты") или как сделать так чтобы обновление конфигурации проходило с минимальными трудозатратами.

28.01.2013    39281    MarSeN    57    

Организация хранения промежуточных данных

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Организация хранения промежуточных данных в процедуре сверки.

29.05.2019    4978    scientes    1    

Вычисление 200 тысяч знаков числа pi

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Россия Россия Бесплатно (free) Бесплатно (free)

В статье рассматриваются возможности платформы выполнять сверхточные вычисления без использования сложных алгоритмов и внешних компонент на примере вычисления числа pi.

28.05.2019    10803    Oleg_nsk    97    

Парсер таблиц по шаблону. Автоматическая корректировка парсера. Представление таблиц в виде графа.

Математика и алгоритмы Работа с интерфейсом Универсальные функции Корректировка данных Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Бесплатно (free) Бесплатно (free)

Возникла такая задача: нужно нарисовать в макете шаблон таблицы, где расписано какая ячейка за что отвечает, загрузить таблицу из html и сравнить, подходит ли она под шаблон. Если да, то загрузить информацию по правилу из шаблона. Проблема в том, что в html таблица может приходить с ошибками, то есть какие то ячейки совмещены, хотя не должны. Поэтому нужно сделать так, что бы программа понимала, что таблицы похожи и где конкретно ошибки. Соответсвенно, поделил задачу на 3 этапа. 1 - это представление таблицы в виде графа, 2 - сравнение графов, 3 - забор информации. В данной статье пойдет описание пункта 1.

25.04.2019    4578    trim89    5    

Пример выбора несколько обработчиков событий записи объекта для решения одной задачи Промо

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Данная публикация предназначена для начинающих разработчиков и является продолжением статьи "Обработчики событий при записи объектов. Зачем и что за чем?" (ссылка далее). Содержит пример использования несколько обработчиков событий для решения одной задачи и объясняется почему выбраны именно они.

27.09.2012    198776    AlbinaAAA    65    

Нечёткий поиск. Bitap алгоритм, модификация от Wu-Manber

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Россия Россия Бесплатно (free) Бесплатно (free)

Временами нужен нечёткий поиск в тексте, но не всегда можно использовать внешние компоненты. Данный алгоритм прост, достаточно быстр.

01.04.2019    5711    trim89    10    

Решение системы линейных уравнений

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Пример использования объекта Расчет систем линейных уравнений.

25.03.2019    10719    scientes    9    

Обсуждение двух задач на пересечение отрезков

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Ищем общее в частностях, или задача о пересечении отрезков.

15.03.2019    7435    scientes    16    

Альтернативные способы работы с XML. Часть 2: Введение в xPath или запросы к XML Промо

Математика и алгоритмы Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

В предыдущей статье "Введение в DOM или объектная модель документа" было описано понятие объектной модели документа (DOM), раскрыты плюсы и минусы использования модели при разборе файлов XML, приведено сравнение с построчным последовательным разбором. Были представлены варианты выборки данных с помощью объекта 1С ДокументDOM. Теперь настало время познакомить читателей с самым, на мой взгляд, интересным способом извлечения данных из XML - при помощи языка запросов xPath.

09.08.2012    44280    1cspecialist    13    

Многопоточное восстановление последовательностей

HighLoad оптимизация Математика и алгоритмы Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    16907    _ASZ_    33    

Возврат (loop) в Алгоритмах визирования. Бит Финанс

Бюджетирование и планирование Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Финансовые услуги, инвестиции Финансовые услуги, инвестиции Россия Россия Бюджетный учет Бюджетный учет Бесплатно (free) Бесплатно (free)

В статье рассматривается минимальная доработка конфигурации БИТ Финанс, с сохранением поддержки, для расширения функционала Визирования: Возрат к предидущим точкам алгоритмов. Полезно будет для программистов и специалистов, занимающихся внедрением БИТ Финанс.

07.08.2018    8463    gladky    2    

Извлечение текстов модулей из внешней обработки 1С

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Россия Россия Бесплатно (free) Бесплатно (free)

Лень в очередной раз сподвигла меня на доработку существующего инструментария. В публикации опишу свой опыт парсинга бинарного файла с данными обычной формы (выгруженного с помощью функционала платформы 1С "Выгрузить в файлы").

28.04.2018    16969    zenechka    6    

От Hello world - к защите конфигураций за 1 минуту Промо

Защита ПО и шифрование Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Вы всегда хотели но боялись создать COM объект? Тогда мы идем к вам! С обычным блокнотом, где будем программировать на c#, и таймером ...

19.05.2012    36365    O-Planet    130    

Преобразование запросов

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Бесплатно (free) Бесплатно (free)

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

15.03.2018    12899    vasilev2015    24    

"Взлом" теста "1С:Профессионал" методом машинного обучения

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

Нейронные сети – не единственная модель, реализующая принципы машинного обучения. Есть еще байесовская модель, которая математически строже и определеннее, поскольку построена на надежном фундаменте теории вероятностей. Применению байесовского вывода к решению интересной теоретической задачи и посвящена данная статья. Слово "взлом" в заголовке использовано для привлечения внимания. Речь идет исключительно о математическом методе, показанном на примере знакомой всем задачи. 

12.03.2018    22455    ildarovich    19    

Очистка текста - в помощь копирайтеру

Математика и алгоритмы Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Бесплатно (free) Бесплатно (free)

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

13.02.2018    8541    user748289    0