Для партнеров фирмы «1С», участвующих в бета-тестировании «1С:Предприятия 8.0» Настоящий документ является рабочим материалом фирмы «1С» и предназначен для ознакомления партнеров фирмы «1С» с техническими и проектными решениями, используемыми при разработке типовых конфигураций для платформы «1С:Предприятие 8.0». Данный документ не является окончательной редакцией и в него могут быть внесены изменения. Публикация, цитирование или иное распространение данного документа или его фрагментов без согласия фирмы «1С» не разрешается. Система стандартов и регламентов разработки конфигураций для платформы «1С:Предприятие 8.0» СТП СРК.03.003.01 Работа с запросами Дата последней модификации: 30 апреля 2003 г. Предмет стандартизации Стандарт регулирует порядок написания текстов запросов в типовых конфигурациях 1С:Предприятия 8.0 Написание текстов запросов Все ключевые слова языка запросов пишутся заглавными буквами. Необязательные конструкции запроса в типовых конфигурациях указывать обязательно. Это повышает наглядность текста. Исключение составляет указание имени таблицы перед именами полей в предложении Выбрать, когда используется только одна таблица. В этом случае имя таблицы можно не указывать. Структура текста запроса должна быть иерархической, т.е. не следует писать запрос в одну строку, даже короткий. Это повышает наглядность текста запроса. В тех случаях, когда текст запроса составляется из нескольких частей в модуле так же рекомендуется придерживаться этого правила. Необходимо использовать синонимы полей запросов, в тех случаях, когда имя поля запроса не следует явно из имени поля таблицы. Другими словами не допускается автоматическая генерация имени поля, кроме явных случаев. Также не допускается автоматическая генерация имени поля типа «Номенклатура1», т.е. когда имя поля запроса не уникально, ему тоже обязательно присвоить синоним. Конструирование запросов Не допускается использования в запросе выборки из нескольких таблиц, разделенных запятыми, кроме случаев, когда другими средствами получить результат не удается. При необходимости соединения двух таблиц слева или справа, в текстах запросов типовых конфигураций необходимо преимущественно использовать ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ. Использование правого соединения допускается только в тех случаях, когда левое соединение использовать невозможно или затруднительно. FAQ Выбрать 1. Вопрос. Стоит ли добавлять в поля запроса представления объектов или достаточно ссылки? Ответ. Ссылки не достаточно. Если объект планируется выводить визуально (в отчетах, в табличных полях и т.п.) то необходимо в запросе получать представление объекта и его показывать. Показывать ссылку получится неэффективно, т.к. в этом случае система все равно по каждой ссылке лезет в базу за ее представлением, что существенно замедляет работу. Из 1. Вопрос. Чем отличается использование внутреннего соединения с условием в операторе По от использования двух таблиц с условием в предложении Где? Ответ. Ничем не отличается. В типовых конфигурациях необходимо использовать внутреннее соединение (см. стандарт). 2. Вопрос. Стоит ли ограничивать выборки из виртуальных таблиц условиями в параметрах таблиц? Ответ. Да, стоит. Виртуальная таблица работает аналогично вложенному запросу, т.е. в результат вложенной таблицы попадут либо все записи, либо уже отобранные по условию в параметре таблицы. Второе оптимальнее. См. также раздел Где. Где 1. Вопрос. Как накладывать условия по полям таблиц регистров, чтобы наилучшим образом использовать индексы? Ответ. Регистры накопления и регистры сведений имеют общий индекс по всем измерениям, в порядке их расположения в метаданных. Условие лучше накладывать так, чтобы оно охватывало любое количество первых измерений регистра без пропусков. В этом случае используется индекс и отбор работает быстро. Либо условие стоит накладывать на одно измерение, имеющее индекс. Сгруппировать Имеющие Объединить 1. Вопрос. Как синхронизируются поля результатов при объединении запросов? Ответ. При объединении различных запросов поля синхронизируются по порядковому номеру поля в результате запроса. Совпадение полей по прикладному смыслу необходимо отслеживать самостоятельно. Дополнить Упорядочить Итоги 1. Вопрос. Как указать итоги и по элементу и по иерархии поля типа ссылка на справочник? Ответ. Итоги по полю и по иерархии надо указывать отдельно. Выражения Условия 1. Вопрос. Как указать спецсимвол в операторе Подобно, которого гарантированно нет в искомом тексте? Ответ. Никак нельзя. Это стандарт SQL.