Практическое использование запросов в 1С 8

13.10.11

Разработка - Запросы

Представляю серию уроков по практическому использованию запросов для начинающих программистов 1С 8

Урок 1 - Роль и место запросов в системе 1С Предприятие

В системе 1С Предприятие 8 существует две модели представления данных: объектная и табличная. Типичный метод использования объектной модели выглядит примерно так:

//Развёрнутый вариант
ОтборПоВалюте = Новый Структура("Валюта", Валюта);
Результат = РегистрыСведений.Валюты.ПолучитьПоследнееЩатаКурса, ОтборПоВалюте); Курс = Результат.Курс;
//Краткий вариант
Курс = РегистрыСведений.Валюты.ПолучитьПоследнееЩатаКурса, Новый Структура("Валюта", Валюта)).Курс;

То же действие, но с обращением к табличной модели:

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Курсы. Курс
|ИЗ
| РегистрСведений.Валюты.СрезПоследних(&ДатаКурса, Валюта = &Валюта) КАК Курсы";

Запрос.УстановитьПараметр("ДатаКурса", ДатаКурса);
Запрос.УстановитьПараметр("Валюта", Валюта);

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

Если Выборка.Следующий() Тогда
Курс = Выборка.Курс;
Иначе
Курс = 0;
КонецЕсли;

Таким образом, у обеих моделей есть свои достоинства и свои недостатки. Объектная модель хороша, прежде всего, тем, что она чрезвычайно лаконична: если поступиться «читабельностью», простейшие выборки можно получать всего одной строкой кода! Табличная модель значительно уступает по данному критерию объектной, зато имеет ряд неоспоримых преимуществ.

Табличная модель обеспечивает:

  • Гибкость: получение сложно-организованных выборок, использование сложных условий, управление блокировками;
  • Использование конструктора: повышение скорости написания запроса, уменьшение вероятности появления синтаксических и логических ошибок.

Урок 1 - Конструктор запросов 1C

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

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

Изучать устройство конструктора мы будем на примере универсальной обработки Консоль запросов. Эта обработка входит в состав типовых конфигураций 1С, поэтому её так же вполне можно назвать типовым инструментом.

Урок 3 - Источники данных 1С

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

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

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

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

12000 руб.

02.09.2020    169311    937    403    

905

Запросы Программист Бесплатно (free)

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    11396    sergey279    18    

65

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

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    6341    XilDen    36    

83

Запросы Программист Запросы Бесплатно (free)

Отлаживая взаимодействие с базой данных, мы регулярно сталкиваемся с зависающими или подозрительно долго выполняющимися обращениями, негативно влияющими на производительность. О том, как в PostgreSQL выявить подозрительные запросы, основываясь на доступной о них информации, расскажем в статье.

16.08.2024    9071    user1840182    5    

28

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

Рассмотрим быстрый алгоритм поиска дублей с использованием hash функции по набору полей шапки и табличных частей.

08.07.2024    2727    ivanov660    9    

22

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    10221    implecs_team    6    

48

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

Часто поступают задачи по произвольному распределению общих сумм. После распределения иногда пропадают копейки. Суть решения добавить АвтоНомерЗаписи() в ВТ распределения, и далее используя функции МАКСИМУМ или МИНИМУМ можем положить разницу копеек в первую или последнюю строку знаменателя распределения.

11.04.2024    3625    andrey_sag    10    

38
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Djonny 15.10.11 19:24 Сейчас в теме
2. anig99 2852 15.10.11 22:02 Сейчас в теме
Лучше почитайте "Практическое пособие разработчика". Там ПРАВИЛЬНО написано зачем и как использовать запросы.
3. anig99 2852 15.10.11 22:04 Сейчас в теме
Даже рекламу по-человечески не получилось сделать. На сайте лучше, чем здесь, но всё равно есть спорные моменты.
4. KliMich 15.10.11 22:28 Сейчас в теме
У Павла Чистова http://chistov.spb.ru/publ/free_webinar/6 есть несколько видео по запросам.
Рекомендую сначала их посмотреть, а потом идти по ссылке на рекомендуемый сайт (ИМХО так легче понять будет...)
5. Поручик 4661 15.10.11 22:33 Сейчас в теме
(0) Это вообще что?
Курс = РегистрыСведений.Валюты.ПолучитьПоследнееЩатаКурса, Новый Структура("Валюта", Валюта)).Курс;
11. user1600929 19.05.21 17:19 Сейчас в теме
(5)ПолучитьПоследнее(ДатаКурса, Новый Структура("Валюта", Валюта)).Курс;
6. fomix 33 18.10.11 10:09 Сейчас в теме
Данная статья - просто реклама. Основное на сайте, указанном внизу статьи. Автору "+" за труд!
7. tango 546 18.10.11 10:14 Сейчас в теме
-: попытка - это хорошо, но для такой темы надо быть на очень хорошем уровне
8. galyausik1 4 19.10.11 11:18 Сейчас в теме
Интересная - полезная ссылка.
На досуге почитаю.
9. NikZagVit 62 03.04.12 15:35 Сейчас в теме
10. husky 6 20.09.13 09:19 Сейчас в теме
Оставьте свое сообщение