Как проверить результат выполнения запроса во встроенном языке в демо-конфигурации к книге Язык запросов 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При изучении программирования в системе 1С:Предприятие 8 по книге "Язык запросов", многие начинающие разработчики сталкиваются с вопросом: как не просто написать текст запроса, а увидеть результат его выполнения в коде? В отличие от консоли запросов, где данные выводятся в готовую таблицу, работа во встроенном языке требует понимания программных механизмов обхода результатов. В этой статье мы подробно разберем, как использовать демонстрационную обработку РаботаСЗапросами, где искать код примеров и как с помощью инструментов платформы проанализировать полученные данные.

Запуск демонстрационной конфигурации и поиск обработки

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

  1. Нажмем клавишу F5 или кнопку "Начать отладку" в верхней панели Конфигуратора. Это запустит режим 1С:Предприятие.
  2. В открывшемся окне программы нам нужно найти саму обработку. В зависимости от версии интерфейса (Такси или обычный интерфейс), она может находиться в разделе "Сервис", "Дополнительные обработки" или быть доступна через меню "Все функции" (Функции для технического специалиста).
  3. Откроем обработку РаботаСЗапросами. Как правило, она представляет собой форму со списком кнопок или выпадающим списком, где каждый пункт соответствует конкретному листингу (примеру) из книги.

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

Анализ кода во встроенном языке

Проанализируем типичную структуру кода, которую мы видим во второй главе книги. Встроенный язык 1С использует объект Запрос для взаимодействия с базой данных. Разберем пример стандартного фрагмента кода, который вы встретите в обработке:


// Создаем объект Запрос
Запрос = Новый Запрос;

// Указываем текст запроса, который мы составили в конструкторе
Запрос.Текст = 
    "ВЫБРАТЬ
    |   Номенклатура.Наименование КАК Наименование,
    |   Номенклатура.Артикул КАК Артикул
    |ИЗ
    |   Справочник.Номенклатура КАК Номенклатура";

// Выполняем запрос и получаем результат
РезультатЗапроса = Запрос.Выполнить();

// Начинаем выборку данных для обхода
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

// Обходим результат в цикле и выводим в окно сообщений
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Сообщить(ВыборкаДетальныеЗаписи.Наименование + " - " + ВыборкаДетальныеЗаписи.Артикул);
КонецЦикла;

Здесь метод Выполнить() возвращает объект РезультатЗапроса. Чтобы увидеть данные "глазами", программа использует цикл Пока ... Цикл, где метод Следующий() перемещает указатель на новую строку результата. Функция Сообщить() как раз и является тем инструментом, который выводит результат на экран пользователя в режиме 1С:Предприятие.

Использование отладчика для проверки результата

Если вы хотите проверить результат запроса "на лету", не дописывая код вывода в сообщения, нам поможет механизм отладки. Это наиболее профессиональный способ проверки корректности работы программы. Выясним, как это сделать:

  1. Вернемся в Конфигуратор и откроем модуль объекта или модуль формы обработки РаботаСЗапросами.
  2. Найдем строку, где вызывается метод РезультатЗапроса = Запрос.Выполнить();.
  3. Установим точку останова, нажав клавишу F9 на этой строке (появится красный кружок слева).
  4. Запустим режим 1С:Предприятие (F5) и нажмем кнопку соответствующего примера в обработке.
  5. Система автоматически переключит вас в Конфигуратор и подсветит строку стрелкой — выполнение программы приостановлено.
  6. Нажмем F10 (Шагнуть "через"), чтобы строка выполнилась. Теперь переменная РезультатЗапроса заполнена данными.
  7. Нажмем Shift + F9 (Вычислить выражение) и введем имя переменной РезультатЗапроса.

В открывшемся окне вы можете увидеть тип объекта. Чтобы посмотреть сами данные в табличном виде, в окне "Вычислить выражение" напишем:


РезультатЗапроса.Выгрузить()

После нажатия кнопки "Рассчитать" появится кнопка с лупой. Нажав на нее, вы увидите таблицу со всеми данными, которые вернул ваш запрос. Это избавляет от необходимости писать циклы только ради проверки результата.

Почему результат может быть пустым?

Иногда при нажатии кнопки в обработке ничего не происходит и сообщения не выводятся. Рассмотрим наиболее вероятные причины этой ситуации:

  1. Отсутствие данных в базе: Демонстрационная конфигурация может быть пустой. Запросы к таблицам Справочник.Номенклатура или Документ.Продажи не вернут ничего, если вы сами не создали хотя бы одну запись в этих справочниках или документах в режиме предприятия.
  2. Параметры запроса: Проверьте, не используются ли в запросе условия (секция ГДЕ). Если в коде стоит Запрос.УстановитьПараметр("Склад", ВыбранныйСклад), а переменная ВыбранныйСклад пустая, запрос может не найти подходящих записей.
  3. Режим отладки: Убедитесь, что отладка включена. Если вы используете серверный вариант базы, в строке запуска службы сервера должен быть прописан ключ -debug, иначе точки останова не сработают.

Разница между консолью запросов и встроенным языком

Важно различать эти два инструмента. Консоль запросов — это внешняя или встроенная обработка для быстрой отладки текста (SQL-подобного кода). Она сама умеет "рисовать" таблицу. Когда же мы работаем во встроенном языке (в модулях), мы пишем алгоритм обработки данных. Здесь запрос — это лишь источник данных, который передает "эстафету" объектам типа ВыборкаИзРезультатаЗапроса или ТаблицаЗначений. Изучение второй главы книги как раз направлено на то, чтобы вы научились не только получать данные, но и правильно использовать их в программной логике конфигурации.

← На главную