Продвинутый курс. Мастер-группа Q&A. Block 1

Мы собрали лучшие вопросы участников предыдущих потоков курсов, которые будут полезны вам при изучении 1-го блока.

1. Использование временных таблиц.
Цитата
«При изучении соответствующей темы задался вопросом, а действительно ли всегда удобно использовать ВТ в запросах и, был неприятно удивлен. Эксперименты показали результаты:
Запрос без ВТ отрабатывает быстрее
Время без ВТ 0,002415
С временной таблицей 0,003377
В чем причина такого поведения?»

2. Оптимизатор запроса.

—В первых уроках главы 9 блока №1 говорится о оптимизаторе запроса. —Что  представляет  физически  из  себя  данный  объект? —Как он реализован  в  файловом режиме?   —Где  хранятся  временные  таблицы в файловом режиме?

3. Проведение документа.

В  уроках  говорится  о  том,  что  в  документах  при проведении  нежелательно    обращаться    к    напрямую  к  реквизиту  документа.
Но при проведении,  либо  при  открытии  документа создается объект и следовательно считываются его реквизиты.
Получается в момент проведения  мы  уже  имеем  в  кэше  данные по объекту и обратившись к реквизиту  вроде  ничего  не  теряем.
Может  я  чего  то  недопонял?

4. Все действия в командной панели.
Пытаюсь перенести в командную панель формы списка (осн реквизит динамический список) стандартные кнопки из меню “все действия”, чтобы пользователь там их не искал.
При этом некоторые кнопки отображаются в ком панели в режиме предприятия , а некоторые нет.
Например, кнопки «провести» и «отмена проведения».
С чем это связано?

5. Коррелированный подзапрос.
Скажу честно – не до конца понимаю запросы RLS. Например, во втором шаблоне есть выражение:       ГДЕ     ТЧТовары.Номенклатура.Группа В(##ЗапрещенныеГруппы)     И ТЧТовары.Ссылка = #Параметр(2).Ссылка       т.е. получается, что  #Параметр(2).Ссылка это ссылка на ОДИН КОНКРЕТНЫЙ документ. Смотрим теперь на ограничение для Поступления:      ДокПоступление ГДЕ НЕ 1 В (#ВДокументеЕстьЗапрещенныеГруппы(«ПоступлениеТоваровИУслуг», «ДокПоступление»))         Из параметров, передаваемых в шаблон, получается что ДокПоступление это и есть этот один конкретный документ. Странно, я думал, что это имя (псевдоним) таблицы… Ведь если бы мы в обычном запросе написали     ВЫБРАТЬ ДокПоступление.Ссылка ИЗ Документ.ПоступлениеТоваровИУслуг КАК ДокПоступление….    то ДокПоступление.Ссылка – это вроде как ВСЕ документы из таблицы (в результате запроса в этой колонке были бы ссылки на ВСЕ документы), а в RLS получается что это только ссылка на ОДИН документ …

5. Конструктор для ссылочных типов.
В синтакс-помощнике в описании конструктора для ПланОбменаСсылка.< Имя плана обмена>(< УникальныйИдентификатор>)  рекомендуется использовать второй вариант оператора Новый.
Судя по найденным примерам – в рекомендуемом варианте всегда указывается тип создаваемого значения.
Хотелось бы узнать об этом подробней, чем такой вариант лучше, почему рекомендуется именно он, поиск по синтакс-помощнику выдаёт 13 результатов – это исчерпывающий перечень случаев применения?

К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь.

Если не активировали токен — посмотрите видео-инструкцию (видео N5)

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

комментариев 8 на “Продвинутый курс. Мастер-группа Q&A. Block 1”

  1. Здравствуйте! Собираюсь делать ДЗ № 6 по первой главе первого блока продвинутого курса. Задание предполагает создание обработки администрирования. Но в первой главе про администрирование ничего не сказано, там про приемы работы в конфигураторе и про связи таблиц “один к одному”, “один ко многим”, “многие ко многим”.
    Вопрос: Намекните пожалуйста какие уроки смотреть про администирование. Может это задание на повторение, а я что то пропустила?

    • Добрый день, Алена!

      В самом тексте задания есть подсказка, куда нужно смотреть :)

  2. Дмитрий Медведев 26.05.2012 в 07:24

    Здравствуйте!
     
    Хочу уточнить ещё один момент по поводу виртуальных таблиц (не важно какого регистра).
    1. Если временные таблицы более эффективны в использовании, чем вложенные запросы, тогда почему при построении виртуальных таблиц выбрана стратегия использования вложенного запроса, а не временной таблицы?
     
    2. А правильно ли я понимаю, что временные таблицы считаются более эффективными, чем вложенные запросы – за счёт того что:

    при их создании подсчитывается количество записей (что гарантирует построение оптимального плана запроса);
    присутствует возможность индексирования полей.

    • Добрый день, Дмитрий!

      1. Хороший вопрос. Могу высказать только свои предположения, точного ответа у меня нет.
      Первый факт. Механизм использования временных таблиц был заложен в версии 8.0. Тогда платформа не умела работать с временными таблицами.
      Второй факт. СУБД вполне нормально может обработать один вложенный запрос, что собственно и делается при обращении к виртуальным таблицам.
      Проблемы могут начаться при использовании нескольких вложенных запросов.

      2. Да, здесь Вы правы.
      Если СУБД знает количество записей в таблице, то она в состоянии выбрать оптимальный план выполнения запроса.

  3. Дмитрий Медведев 10.04.2012 в 11:37

    Здравствуйте!
     
    Пытаюсь решить задачу по запросам. Возникла сложность при построении коррелированного подзапроса. По аналогии с уроком №5 составил запрос следующего вида:
    //******************************************************************************
    ВЫБРАТЬ
        ДАТАВРЕМЯ(2012, 1, 26) КАК ДатаНачала,
        ДАТАВРЕМЯ(2012, 1, 31) КАК ДатаОкончания
    ПОМЕСТИТЬ Интервал
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ГрафикиРаботы.Дата
    ПОМЕСТИТЬ График
    ИЗ
        РегистрСведений.ГрафикиРаботы КАК ГрафикиРаботы
    ГДЕ
        ГрафикиРаботы.Значение = 0
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        График.Дата
    ИЗ
        График КАК График
    ГДЕ
        График.Дата МЕЖДУ Интервал.ДатаНачала И Интервал.ДатаОкончания
    //****************************************************************************
    При попытке выполнить запрос, пишет что поля “Интервал.ДатаНачала” и “Интервал.ДатаОкончания” не найдены. Регистр сведений “графики” берётся из базы на которой выполняются наши ДЗ.
    Подскажите пожалуйста в чём тут ошибка, и как её исправить???

    • Добрый день, Дмитрий!

      Система сообщает об ошибке, поскольку не знает о том, что такое “Интервал” в последнем запросе.
      Можно просто добавить ВТ “Интервал” в список таблиц (через запятую).

      А можно сделать внутреннее соединение таблиц по условию “График.Дата МЕЖДУ Интервал.ДатаНачала И Интервал.ДатаОкончания”.

      • Дмитрий Медведев 12.04.2012 в 13:04

        Кажется понял :)
        Коррелированные запросы применяются только с использованием вложенных запросов. Т.е. внутри вложенного запроса можно обращаться к таблицам внешнего запроса из секции условий, а к виртуальным обращаться нельзя.