1с бизнес процесс точки в запросе

Конструктор запроса 1С — это один из инструментов разработки, который позволяет:

  1. составить текст запроса на языке запросов исключительно визуальными средствами;
  2. отредактировать текст имеющегося запроса.

Программный код обычный конструктор не создает.

Конструктор запроса с обработкой результата — это один из инструментов разработки, который позволяет:

  1. сформировать текст нового запроса;
  2. сформировать программный код, содержащий создание объекта встроенного языка «Запрос», текста запроса, получение и обработку результата выполнения запроса (фрагмент программного кода, который исполняет запрос и выводит его результаты в табличный документ или диаграмму — отсюда);
  3. отредактировать текст имеющегося запроса.

Конструктор запросов может использоваться:

  • разработчиком — в конфигураторе (необходимо знание языка запросов);
  • пользователем — в режиме 1С:Предприятие (как обработка «Консоль запросов»).

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

Бизнес-процессы в 1С:CRM — 21.07.2021

Вызов конструктора текста запроса 1С:

  1. из вкладки «Наборы данных» схемы компоновки данных (кнопка выше поля «Запрос»);
  2. контекстным меню (правой кнопкой мыши) в нужном месте программного кода;
  3. с помощью команды «Конструктор запроса. » меню «Текст».

Рисунки «Вызов конструктора запроса 1С»

Конструктор запросов 1С

Вызов конструктора запроса 1С

С помощью кнопок «Далее» и «Назад» можно перемещаться по закладкам конструктора и указывать, какие данные должны присутствовать в результате запроса, как они связаны, сгруппированы, какие итоги следует рассчитать, работать с временными таблицами, редактировать пакет запросов:

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

Таким образом, разработчик может составить работоспособный запрос, даже не владея синтаксисом языка запросов — необходимые синтаксические конструкции конструктор сгенерирует автоматически. Готовый текст запроса может быть сразу же вставлен в текст модуля или скопирован в буфер обмена.

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

«Новые Системы: Конструктор Бизнес-Процессов», 1С: Предприятие 8.3. Пример настройки.

Текст запроса может содержать описание предопределенных данных конфигурации:

  1. значения системных перечислений (из определенного перечня);
  2. предопределенных данных (справочники, перечисления, планы видов характеристик, планов счетов, планов видов расчета);
  3. пустые ссылки;
  4. значения точек маршрута бизнес процессов.

Вкладки конструктора запроса 1С

Вкладка «Таблицы и поля»

На этой вкладке указывается источник данных и поля, которые необходимо выводить в отчет (по сути описываются конструкции ВЫБРАТЬ … ИЗ).

В качестве источников данных могут служить:

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

В контекстном меню виртуальных таблиц можно задать параметры этих таблиц.

На закладке «Таблицы и поля» конструктора запросов задают:

  1. источники данных запросов, в качестве которых могут выступать реальные и виртуальные таблицы;
  2. набор полей из таблиц — источников данных запроса;
  3. поля в виде произвольного выражения.

Вкладка «Связи»

Закладка «Связи» становится доступна сразу после добавления двух таблиц.

На закладке «Связи» конструктора запросов можно определить соединение таблиц-источников данных и связи между ними.

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

Соединение таблиц может быть:

  • безусловным ;
  • условным (или по ключу ), то есть по заданному условию связи:
    1. полным — все записи обеих таблиц; для тех, которым не нашлось соответствия, запрос возвращает NULL;
    2. левым/правым — все записи из соответственно левой/правой таблицы (из противоположной только те, которым есть соответствие), для не найденных запрос возвращает NULL. Примечание : консоль запросов всегда преобразует правое соединение в левое, меняя таблицы местами (в случае, если запрос написать вручную, и потом открыть конструктором);
    3. внутренним — только совпадающие записи обеих таблиц.

    В случае безусловного соединения, в конструкторе запросов достаточно определить выбираемые таблицы, не указывая, по каким полям они будут связаны (то есть не заполняя закладку Связи).

    На практике чаще встречаются задачи соединения по определенному полю двух таблиц.

    В конструкторе запросов тип условного соединения регулируется флажком «Все» — где он стоит, из той таблицы и выбираются все записи.

    Флажок «Все», устанавливаемый у таблицы, выбранной на закладке «Связи» конструктора запросов означает что в результат запроса надо включить все записи этой таблицы.

    Флажок

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

    Вкладка «Группировка»

    Вкладка

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

    При описании группировки в тексте запроса все поля должны делиться:

    • на те, по которым производится группировка;
    • на агрегатные функции (рассчитываемые поля);
    • на поля вложенных таблиц.

    Вложенные таблицы не попадают ни в группируемые, ни в агрегируемые поля.

    Количество записей в результате запроса можно узнать с помощью агрегатной функции КОЛИЧЕСТВО(*).

    Вкладка «Условия»

    Вкладка

    Отвечает за все условия, накладываемые на получаемые данные, т.е. за всё, что идёт в тексте запроса после конструкции ГДЕ.

    Вкладка «Дополнительно»

    Вкладка

    Вкладка «Дополнительно» включает важные параметры.

    Группировка «Выборка записей»:

    • Первые — параметр, возвращающий в запрос только N записей (оператор ПЕРВЫЕ ); позволяет вывести в отчет первые N записей, которые будут отобраны с учетом правил упорядочивания, настроенных в конструкторе запросов;
    • Без повторяющихся — обеспечивает уникальность полученных записей (оператор РАЗЛИЧНЫЕ) и позволяет исключить из результирующей таблицы запроса одинаковые строки (данная операция распространяется только на детальные записи );
    • Разрешенные — позволяет выбирать только те записи, которые позволяет выбрать система с учетом настройки RLS (конструкция РАЗРЕШЕННЫЕ).

    Группировка «Тип запроса»:

    • определяет тип запроса:
      1. Выборка данных;
      2. Создание временной таблицы;
      3. Уничтожение временной таблицы.
      Читайте также:  Рекламный бизнес в интернете что это

      Флаг «Блокировать получаемые данные для последующего изменения»:

      1. позволяет включить возможность установки блокировки данных, которая обеспечивает сохранность данных от момента их чтения до изменения (актуально только для «Автоматического режима блокировок», конструкция ДЛЯ ИЗМЕНЕНИЯ); позволяет заблокировать данные указанных таблиц-источников на чтение (в рамках транзакции).
      2. в режиме автоматических транзакционных блокировок) происходят блокировки:
        • в варианте файл-сервер — на уровне таблиц базы данных;
        • в варианте клиент-сервер — на уровне записей таблиц базы данных.
        • Если список «Таблицы для изменения» — пуст, то будут блокироваться данные всех таблиц, задействованных в запросе, иначе — только таблиц, указанных в списке.

        Вкладка «Объединения/Псевдонимы»

        Вкладка

        Конструктор запросов 1с позволяет создавать объединения запросов. При их помощи можно последовательно выводить в результат данные, полученные из нескольких запросов, не используя при этом связи. Единственной условие для объединения — одинаковый набор полей в каждом отдельном запросе.

        На этой закладке устанавливается возможность объединения разных таблиц и псевдонимы (конструкция КАК).

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

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

        Особенности использования закладки «Объединения/Псевдонимы» конструктора запросов:

        1. На закладке «Объединения/Псевдонимы» конструктора запросов можно:
          • Задать список запросов (в результирующую выборку попадут записи всех указанных запросов).
          • Задать имена полей результирующей таблицы.
          • При создании запросов, участвующих в объединении , с помощью конструктора запросов, он сам добавит в каждый запрос необходимое количество недостающих полей со значением NULL. Настроить соответствие добавленных конструктором полей и полей результата запроса можно на закладке «Объединения/Псевдонимы».
          • Настройки, сделанные в разделе «Объединения/Псевдонимы» конструктора запросов, отразятся на информации, отображаемой в других разделах конструктора, следующим образом:
            • Если заданы псевдонимы полей результирующей таблицы, то новые названия появляются на закладке «Порядок» в списке полей.
            • При объединении запросов на ряде закладок (в том числе «Таблицы и поля») появляется возможность переключения между объединяемыми запросами.
            • При объединении двух запросов на закладке «Объединения/Псевдонимы» конструктора запросов условие связи между запросами задать нельзя: в случае объединения связь всегда безусловна.

            Вкладка «Порядок»

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

            1. на закладке «Порядок»;
            2. на закладке «Объединения/Псевдонимы».

            Таблица, полученная в результате запроса, может быть отсортирована по алфавиту по нужному полю:

            1. по полю, присутствующему в запросе;
            2. по любому полю таблицы-источника (кроме случаев объединенных запросов).

            Помимо указания порядка для конкретного поля, можно воспользоваться опцией «Автоупорядочивание», которая отсортирует список по основному представлению объекта.

            Вкладка

            Указывается порядок сортировки значений (УПОРЯДОЧИТЬ ПО) — по убыванию (УБЫВ) или возрастанию (ВОЗР).

            Флаг «Автоупорядочивание» (в запросе — АВТОУПОРЯДОЧИВАНИЕ):

            • если установлен, то система будет сортировать данные (по умолчанию система 1С 8.3 выводит данные в «хаотичном» порядке).

            Если на закладке «Порядок» конструктора запросов не заданы настройки, то установка флага «Автозаполнение» обусловит следующее:

            1. записи в результирующей таблице запроса будут упорядочены по полям сортировки по умолчанию для таблиц-источников данных;
            2. если заданы настройки на станицах «Группировка» или «Итоги», то порядок записей в результирующей таблице запроса будет определяться этими настройками.

            В случае установки флага «Автоупорядочивание» на закладке «Порядок» конструктора запросов записи в результирующей таблице запроса (если эта таблица уже упорядочена по полю, хранящему ссылку на иерархический справочник) будут упорядочены по значению основного представления для этого поля. Т.е. если справочник отсортирован по ссылке (= наименованию), но основное его представление — код, то после включения автоупорядочивания сортировка изменится на сортировку по коду.

            Вкладка «Итоги»

            В зависимости от иерархии справочника, можно выводить итоги связанных таблиц по иерархии. Для этого предназначена закладка «Итоги» конструктора запросов:

            В ней указывается:

            1. Поле, по которому группируем, и тип его итогов:
              • Элементы — итоги только по конечным элементам;
              • Элементы и иерархия — итоги по папкам и по конечным элементам;
              • Только иерахия — итоги только по папкам.
              • Флаг «Общие итоги» — суммирование всех полученных запросом строк;
              • Итоговое поле — по которому собственно и считаем итоги.

              Таким образом, при использовании секции «ИТОГИ . ПО» количество записей в результате запроса увеличится (по сравнению с их количеством без секции «ИТОГИ . ПО»).

              Результатом запроса с итогами будет дерево значений:

              Вкладка «Пакет запросов»

              Вкладка

              На этой вкладке можно создавать новые пакеты запросов, а также использовать её для навигации.

              В тексте запроса пакеты разделяются символом «;» (точка с запятой).

              Особенности использования конструктора запросов 1С

              1. При сохранении текста запроса, открытого повторно с помощью конструктора запроса, без внесения в этот текст изменений, из первоначального текста будут удалены только комментарии.
              2. Для создания в конструкторе запросов вложенного запроса необходимо:
              1. открыть закладку «Таблицы и поля»;
              2. в командной панели над деревом «Таблицы» нажать кнопку «Добавить» или выбрать одноименный пункт контекстного меню.

              Рисунок «Создание в конструкторе запросов вложенного запроса»

              Создание вложенного запроса 1С

              1. открыть закладку «Таблицы и поля»;
              2. в командной панели над деревом » Поля » нажать кнопку «Добавить» или выбрать одноименный пункт контекстного меню.

              Укажем в конструкторе одно суммируемое поле:По остальным полям будет произведена группировка в тексте запроса: Конструктор запросов 1С

              При использовании в качестве источника данных для запроса внешнего источника (данные которого передаются через параметр) в качестве такого источника может использоваться:

              • таблица значений;
              • табличная часть;
              • результат запроса.
              • в качестве таблицы-источника данных;
              • в качестве операнда операций сравнения «В» или «НЕ В» при задании параметров виртуальной таблицы;
              • в качестве операнда операций сравнения «В» или «НЕ В» при задании конструкции языка запросов «ГДЕ».

              Подробнее об операциях сравнения «В» и «НЕ В»

              Оператор вхождения «В» имеет вид:

              Источник: flagman.top

              Получение полей через «точку» в запросе

              В тестовой конфигурации, в которой будетм реализовывать все примеры в статье, создадим документ «Продажа» и три справочника: «Номенклатура», «ЕдиницыИзмерения» и «БазовыеЕдиницы». Справочник «ЕдиницыИзмерения» подчинен справочнику «Номенклатура». В документе продажи три реквизита: «Номенклатура», «ЕдиницаИзмерения» и «Количество». Первые два ссылаются на элемент соответствующего справочника, «Количество» — числовое поле.

              Читайте также:  Лучший бизнес университет Европы

              Изображение

              Чтобы проанализировать действия платформы напишем два простых запроса. Первый запрос будет производить выборку ссылки, а также поля «Номенклатура» и «ЕдиницаИзмерения» из документа «Продажи»:

              ТекстЗапроса = «ВЫБРАТЬ | Продажа.Ссылка, | Продажа.Номенклатура, | Продажа.ЕдиницаИзмерения |ИЗ | Документ.Продажа КАК Продажа»

              Второй запрос будет использовать возможности платформы для выборки полей через «точку» в запросе. Чтобы усложнить пример, сделаем выборку в несколько уровней. В качестве результатирующих полей выборки сделаем ссылку на документ и следующие поля: «Номенклатура», «ЕдиницаИзмерения», «БазоваяЕдиница», «НаименованиеБазовойЕдиницы», «КодБазовойЕдиницы». Текст запроса будет выглядить слеюущим образом:

              ТекстЗапроса = «ВЫБРАТЬ | Продажа.Ссылка, | Продажа.Номенклатура, | Продажа.ЕдиницаИзмерения, | Продажа.ЕдиницаИзмерения.БазоваяЕдиница КАК БазоваяЕдиница, | Продажа.ЕдиницаИзмерения.БазоваяЕдиница.Код КАК КодБазовойЕдиницы, | Продажа.ЕдиницаИзмерения.БазоваяЕдиница.Наименование КАК ИмяБазовойЕдиницы |ИЗ | Документ.Продажа КАК Продажа»

              Результаты выполнения обоих запросов в соответствии с тестовыми данными выглядят следующим образом:

              Изображение

              Как мы видим, оба запроса отлично работают. Теперь рассмотрим поведение платформы 1С:Предприятие 8.x, а именно формирование SQL-запроса к СУБД при использовании обращения к полям через «точку» в запросе.

              Что делает платформа?

              При выполнении первого запроса, 1С:Предприятие формирует достаточно простой SQL-запрос:

              querySQL = «SELECT | T1._IDRRef, // Ссылка | T1._Fld30RRef, // Номенклатура | T1._Fld31RRef // ЕдиницаИзмерения |FROM | _Document28 T1 WITH(NOLOCK)»

              В запросе все необходимые данные получаются из одного запроса, поэтому нет необходимости формировать выборки из других таблиц. Если же мы взгяленм на сформированный SQL-запрос для второго примера, картина будет совсем иной:

              querySQL = «SELECT | T1._IDRRef, // Ссылка | T1._Fld30RRef, // Номенклатура | T1._Fld31RRef, // Единица измерения | T2._Fld29RRef, // Базовая единица | T3._Code, // Код базовой единицы | T3._Description // Наименование базовой единицы |FROM | _Document28 T1 WITH(NOLOCK) // Таблица документа «Продажа» | LEFT OUTER JOIN | _Reference26 T2 WITH(NOLOCK)ON T1._Fld31RRef = T2._IDRRef // Присоединение спр. «Единицы измерения» для получения базовой единицы | LEFT OUTER JOIN | _Reference27 T3 WITH(NOLOCK)ON T2._Fld29RRef = T3._IDRRef //Присоединение спр. «Базовые единицы» для получения наименования и кода |»

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

              Плюсы и минусы

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

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

              Небольшой итог

              Подведем небольшой итог. Во-первых, использование обращений через «точку» в запросе обрабатываются более оптимально, чем подобные обращения для объектной модели работы с данными. Ранее я писал об этом в одной из статей . Во-вторых, использование подобной возможности значительно ускоряет процесс написания запросов и расширяет возможности настройки отчетов в пользовательском режиме.

              При умелом обращении с данным механизмом отрицательное влияние на производительность будет сводиться к нулю. Поэтому не использовать его будет просто не рациональным шагом.

              По ссылке Вы можете скачать конфигурацию со всеми примерами из статьи.

              Источник: 1clancer.ru

              АйТиБложик

              Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос. Создается этот объект вызовом конструкции Новый Запрос. Запрос удобно использовать, когда требуется получить сложную выборку данных, сгруппированную и отсортированную необходимым образом. Классический пример применения запроса — получение сводки по состоянию регистра накопления на определенный момент времени. Так же, механизм запросов позволяет легко получать информацию в различных временных разрезах.

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

              Язык запросов платформы 1С очень похож на синтаксис других SQL-языков, но имеются отличия. Основными преимуществами встроенного языка запросов являются: разыменование полей, наличие виртуальных таблиц, удобная работа с итогами, нетипизированные поля в запросах.

              • значения перечислений;
              • предопределенные данные:
              • справочников;
              • планов видов характеристик;
              • планов счетов;
              • планов видов расчетов;
              • пустые ссылки;
              • значения точек маршрута бизнес-процессов.

              Пример использования литерала ЗНАЧЕНИЕ:
              —> ГДЕ Город = ЗНАЧЕНИЕ(Справочник.Города.Москва)
              ГДЕ Город = ЗНАЧЕНИЕ(Справочник.Города.ПустаяСсылка)
              ГДЕ ТипТовара = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Услуга)
              ГДЕ ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
              ГДЕ ТочкаМаршрута = ЗНАЧЕНИЕ(БизнесПроцесс.БизнесПроцесс1.ТочкаМаршрута.Действие1

              2) Использование инструкции АВТОУПОРЯДОЧИВАНИЕ в запросе может сильно время выполнения запроса, поэтому, если сортировка не требуется, то лучше вообще ее не использовать. Во большинстве случаях лучше всего применять сортировку с помощью инструкции УПОРЯДОЧИТЬ ПО.


              Автоупорядочивание работает по следующим принципам:

              • Если в запросе было указано предложение УПОРЯДОЧИТЬ ПО, то каждая ссылка на таблицу, находящаяся в этом предложении, будет заменена полями, по которым по умолчанию сортируется таблица (для справочников это код или наименование, для документов – дата документа). Если поле для упорядочивания ссылается на иерархический справочник, то будет применена иерархическая сортировка по этому справочнику.
              • Если в запросе отсутствует предложение УПОРЯДОЧИТЬ ПО, но есть предложение ИТОГИ, тогда результат запроса будет упорядочен по полям, присутствующим в предложении ИТОГИ после ключевого слова ПО, в той же последовательности и, в случае если итоги рассчитывались по полям – ссылкам, то по полям сортировки по умолчанию таблиц, на которые были ссылки.
              • Если в запросе отсутствуют предложения УПОРЯДОЧИТЬ ПО и ИТОГИ, но есть предложение СГРУППИРОВАТЬ ПО, тогда результат запроса будет упорядочен по полям, присутствующим в предложении, в той же последовательности и, в случае если группировка велась по полям – ссылкам, то по полям сортировки по умолчанию таблиц, на которые были ссылки.
              • В случае же, если в запросе отсутствуют предложения и УПОРЯДОЧИТЬ ПО, ИТОГИ и СГРУППИРОВАТЬ ПО, результат будет упорядочен по полям сортировки по умолчанию для таблиц, из которых выбираются данные, в порядке их появления в запросе.
              Читайте также:  Программы сколково для бизнеса

              В случае, если запрос содержит предложение ИТОГИ, каждый уровень итогов упорядочивается отдельно.

              3) Что бы избежать повторного запроса к базе данных при выводе результата запроса пользователю (например, построение запроса или отображение результата запроса с помощью табличного документа) полезно использовать инструкцию ПРЕДСТАВЛЕНИЕССЫЛКИ, которая позволяет получать представление ссылочного значения.

              Пример:
              ВЫБРАТЬ
              ПРЕДСТАВЛЕНИЕССЫЛКИ(РасходнаяНакладнаяСостав.Номенклатура) КАК НоменклатураПредставление

              Так же возможно использование инструкции ПРЕДСТАВЛЕНИЕ — предназначена для получения строкового представления значения произвольного типа. Отличие этих инструкций в том, что в первом случае, если инструкции передать ссылку, результатом будет строка, В остальных случаях результатом будет значение переданного параметра. Во втором случае, результатом инструкции всегда будет строка!

              4) Если в запросе имеется поле с составным типом, то для таких полей возникает необходимость привести значения поля к какому-либо определенному типу с помощью инструкции ВЫРАЗИТЬ, что позволит убрать лишние таблицы из левого соединения с полем составного типа данных и ускорить выполнение запроса.

              Пример:
              Имеется регистра накопления ОстаткиТоваров, у которого поле Регистратор имеет составной тип. В запросе выбираются Дата и Номер документов ПоступлениеТоваров, при этом при обращении к реквизитам документа через поле Регистратор не происходит множество левых соединений таблицы регистра накопления с таблицами документов-регистраторов.

              ВЫБРАТЬ
              ВЫРАЗИТЬ(ОстаткиТоваров.Регистратор КАК Документ.ПоступлениеТоваров).Номер КАК НомерПоступления,
              ВЫРАЗИТЬ(ОстаткиТоваров.Регистратор КАК Документ.ПоступлениеТоваров).Дата КАК ДатаПоступления
              ИЗ
              РегистрНакопления.ОстаткиТоваров КАК ОстаткиТоваров

              Если приведение типа считается не осуществимым, то результатом приведения типа будет значение NULL.

              5) Не стоит забывать про инструкцию РАЗРЕШЕННЫЕ, которая означает, что запрос выберет только те записи, на которые у текущего пользователя есть права. Если данное слово не указать, то в случае, когда запрос выберет записи, на которые у пользователя нет прав, запрос отработает с ошибкой.

              6) В случае, если в запросе используется объединение, и в некоторых частях объединения присутствуют вложенные таблицы (документ с табличной частью), а в некоторых нет, возникает необходимость дополнения списка выборки полями – пустыми вложенными таблицами. Делается это при помощи ключевого слова ПУСТАЯТАБЛИЦА, после которого в скобках указываются псевдонимы полей, из которых будет состоять вложенная таблица.

              Пример:
              // Выбрать поля Номер и Состав
              // из виртуальной таблицы Документ.РасхНакл
              ВЫБРАТЬ Ссылка.Номер, ПУСТАЯТАБЛИЦА.(Ном, Тов, Кол) КАК Состав
              ИЗ Документ.РасхНакл
              ОБЪЕДИНИТЬ ВСЕ
              ВЫБРАТЬ Ссылка.Номер, Состав.(НомерСтроки, Товар, Количество)
              ИЗ Документ.РасхНакл Документ.РасходнаяНакладная.Состав.*

              7) Что бы в результат запроса не попали повторяющиеся строки, следует использовать инструкцию РАЗЛИЧНЫЕ, потому что так нагляднее и понятнее, а инструкция СГРУППИРОВАТЬ ПО применяется для группировки с помощью агрегатных функций. Ксати, при использовании агрегатных функций предложение СГРУППИРОВАТЬ ПО может быть и не указано совсем, при этом все результаты запроса будут сгруппированы в одну единственную строку.

              Пример:
              // Необходимо узнать, каким вообще контрагентам
              // отгружался товар за период.
              Выбрать Различные
              Документ.РасходнаяНакладная.Контрагент

              8) Инструкция СГРУППИРОВАТЬ ПО позволяет обращаться к полям верхнего уровня, без группировки результатов по этим полям, если агрегатные функции применены к полям вложенной таблицы. Хотя в справке 1С написано, при группировке результатов запроса в списке полей выборки обязательно должны быть указаны агрегатные функции, а помимо агрегатных функций в списке полей выборки допускается указывать только поля, по которым осуществляется группировка.

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

              9) Инструкция ЕСТЬNULL предназначена для замены значения NULL на другое значение, но не забываем, что второй параметр будет преобразован к типу первого в случае, если тип первого параметра является строкой или числом.

              10) При обращении к главной таблице можно в условии обратиться к данным подчиненной таблицы. Такая возможность называется разыменование полей подчиненной таблицы.

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

              Пример:
              ВЫБРАТЬ
              _ДемоКонтрагенты.НаименованиеПолное
              ИЗ
              Справочник._ДемоКонтрагенты КАК _ДемоКонтрагенты
              ГДЕ
              _ДемоКонтрагенты.Ссылка = Ссылка2

              15) Условие НЕ В в конструкции ГДЕ увеличивает время исполнения запроса, так как это своего рода НЕ (ИЛИ1 ИЛИ2 . ИЛИn), поэтому для больших таблиц старайтесь использовать ЛЕВОЕ СОЕДИНЕНИЕ с условием ЕСТЬ NULL.

              Пример:
              ВЫБРАТЬ
              _ДемоКонтрагенты.Ссылка
              ИЗ
              Справочник._ДемоКонтрагенты КАК _ДемоКонтрагенты
              ЛЕВОЕ СОЕДИНЕНИЕ Документ._ДемоЗаказПокупателя КАК _ДемоЗаказПокупателя
              ПО _ДемоКонтрагенты.Ссылка = _ДемоЗаказПокупателя.Контрагент
              ГДЕ
              _ДемоЗаказПокупателя.Контрагент ЕСТЬ NULL

              15) При использовании Временных таблиц нужно индексировать поля условий и соединений в этих таблицах, НО, при использовании индексов запрос может выполняться еще медленнее. Поэтому необходимо анализировать каждый запрос с применением индекса и без, замерять скорость выполнения запроса и принимать окончательное решение.
              Если вы помещаете во временную таблицу данные, которые изначально индексированы по некоторым полям, то во временной таблице индекса по этим полям уже не будет.

              16) Если вы не используете Менеджер временных таблиц, то явно удалять временную таблицу не требуется, она будет удалена после завершения выполнения пакетного запроса, иначе следует удалить временную таблицу одним из способов: командой УНИЧТОЖИТЬ в запросе, вызвать метод МенеджерВременныхТаблиц.Закрыть().

              Источник: 1centerprise8.blogspot.com

              Рейтинг
              ( Пока оценок нет )
              Загрузка ...
              Бизнес для женщин