8.х Как правильно использовать намименование номенклатуры?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Bkmz, 28 апр 2017.

  1. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    435
    Симпатии:
    12
    Баллы:
    29
    Получаю в запросе наименование номенклатуры для сообщения. Правильно ли я рассуждаю или нет? Или это бред?

    [​IMG]
  2. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    162
    Баллы:
    104
  3. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    435
    Симпатии:
    12
    Баллы:
    29
    Т.е. первый вариант не правильно а два последних правильные?
    Что ПРЕДСТАВЛЕНИЕ(Материалы.Номенклатура), что Материалы.Номенклатура.Представление ?
    --- Объединение сообщений, 28 апр 2017 ---
    Вообще вот почему возник такой вопрос:
    [​IMG]
  4. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    435
    Симпатии:
    12
    Баллы:
    29
    Этот код 1С:

    Код:
    ВЫБРАТЬ ПЕРВЫЕ 20
        РеализацияТоваровУслугТовары.Ссылка
    ИЗ
        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    Выполняется вот так:

    Код:
    Fields:(
        T1.Ссылка
    )
    Документ.РеализацияТоваровУслуг.Товары (T1) RANGE SCAN USING INDEX ([email protected]) (1 fields)
    
    
    Statistics: RecordsScanned = 20, ParseTime = 0, ExecuteTime = 0, BuffersMemory = 28212, ResultRecords = 20, RecordSize = 18
    
    ---------------------------------------------------------------------------------------------------------------------
    
    SELECT TOP 20
    T1.Ссылка
    FROM Документ.РеализацияТоваровУслуг.Товары T1
    WHERE (T1.ОбластьДанныхОсновныеДанные = 0
    А вот этот:

    Код:
    ВЫБРАТЬ ПЕРВЫЕ 20
        ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Ссылка)
    ИЗ
        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    и этот:

    Код:
    ВЫБРАТЬ ПЕРВЫЕ 20
        РеализацияТоваровУслугТовары.Ссылка.Представление
    ИЗ
        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    выполняется вот так:

    Код:
    Fields:(
        T1.Ссылка,
        T2.Номер,
        T2.Дата,
        T2.ВариантОформленияПродажи
    )
    Документ.РеализацияТоваровУслуг.Товары (T1) RANGE SCAN USING INDEX ([email protected]) (1 fields)
    
    NESTED OUTER LOOP
    Документ.РеализацияТоваровУслуг (T2) RANGE SCAN USING INDEX ([email protected]) (2 fields)
    WHERE
            (T1.Ссылка = T2.Ссылка)
    
    Statistics: RecordsScanned = 40, ParseTime = 0, ExecuteTime = 0, BuffersMemory = 25440, ResultRecords = 20, RecordSize = 73
    
    ---------------------------------------------------------------------------------------------------------------------
    
    SELECT TOP 20
    T1.Ссылка,
    T2.Номер,
    T2.Дата,
    T2.ВариантОформленияПродажи
    FROM Документ.РеализацияТоваровУслуг.Товары T1
    LEFT OUTER JOIN Документ.РеализацияТоваровУслуг T2
    ON (T1.Ссылка = T2.Ссылка) AND (T2.ОбластьДанныхОсновныеДанные = 0)
    WHERE (T1.ОбластьДанныхОсновныеДанные = 0
    Возникает вопрос. Если соединение все равно происходит зачем эти рекомендации по использованию представления?

    Источник: http://its.1c.ru/db/metod8dev#content:2656:hdoc

    Или я что-то не правильно понимаю?
  5. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    162
    Баллы:
    104
    Невнимательно читаешь.
    Чтобы функции Представление() преобразовать ссылочный тип в строку, то "она берёт" необходимые поля для этого! В данном случае, у тебя таблица товаров - "дочерная", ссылается на основную таблицу. Чтобы получить необходимые поля для строкового преобразования ей нужно соединиться с основной, т.к. номера, даты и варианта оформления продажи нету в таблице товаров.
    --- Объединение сообщений, 28 апр 2017 ---
    Здесь говорится о том, что если используешь неявное преобразование ссылки в строку (Функция Сообщить(<Строка>)), то произойдёт неявный запрос к БД, для получения из ссылки номера и даты!
    Проще говоря, нужно тебе представление - возьми его из запроса сразу же! Т.е. нужно избегать большое количество обращений к серверу и брать всё за раз.
    Последнее редактирование: 28 апр 2017
Похожие темы
  1. Trex_alex
    Ответов:
    0
    Просмотров:
    1.521
  2. joyer
    Ответов:
    1
    Просмотров:
    1.604
  3. Aleks
    Ответов:
    3
    Просмотров:
    1.698
  4. Алексей1989
    Ответов:
    1
    Просмотров:
    884
  5. nsk1C
    Ответов:
    0
    Просмотров:
    969
Загрузка...

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