Этот конспект не сохранится

Закроешь вкладку — потеряешь. Зарегистрируйся — и он будет в библиотеке навсегда.

Telegram

Ваш конспект

YouTubeЗапросы в 1С за 20 минут для начинающих

📊 Создание запроса в 1С для получения остатков товаров

Ключевые тезисы:

  • Запрос — это инструкция на специальном языке для получения данных из базы 1С.
  • Разработку удобно вести в Консоли запросов (внешняя обработка).
  • Основные этапы: выбор таблиц, настройка полей, фильтрация, сортировка и соединение таблиц.
  • Результат запроса можно использовать как в консоли, так и в программном коде для заполнения форм или отчётов.

🎯 Что такое запрос и зачем он нужен?

Все данные приложения (товары, клиенты, заказы) хранятся в базе данных в виде таблиц. Запрос — это возможность получить эти данные для отображения в отчётах или дальнейшей обработки. Это инструкция, которая выполняется и возвращает таблицу с результатами.

🛠️ Инструмент: Консоль запросов

  • Внешняя обработка для написания и тестирования запросов без конфигуратора.
  • Открывается в режиме предприятия (Файл → Открыть).
  • Основной интерфейс: поле для текста запроса и кнопка «Выполнить».

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

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

  • Закладка «Таблицы и поля»: слева — все таблицы базы, в центре — выбранные таблицы, справа — выбранные поля.
  • Пример: выбор таблицы Справочник.Партнеры и полей Код, Наименование.

🚀 Практика: Получаем остатки товаров на складе

📝 Шаг 1: Получаем список товаров (номенклатуры)

  1. В конструкторе выбираем таблицу Справочник.Номенклатура.
  2. Выбираем нужные поля: Код, Наименование, ЕдиницаИзмерения, Артикул, СтавкаНДС, ТипНоменклатуры.
  3. В тексте запроса появляются секции:
    • ВЫБРАТЬ — перечисление выбранных полей.
    • ИЗ — указание таблицы-источника.
    • Используются псевдонимы для таблиц (для краткости) и полей (для имён колонок в результате).

🎯 Шаг 2: Фильтрация — убираем группы из результата

В результат попадают не только элементы, но и группы справочника. Чтобы оставить только элементы:

  1. В конструкторе переходим на закладку «Условия».
  2. Выбираем поле ЭтоГруппа.
  3. Устанавливаем условие: ЭтоГруппа = Ложь.
  4. В запросе добавляется секция ГДЕ с указанным условием.

🔄 Шаг 3: Сортировка результата

Для удобства чтения сортируем данные по наименованию:

  1. В конструкторе переходим на закладку «Порядок».
  2. Выбираем поле Наименование и направление сортировки (по возрастанию).
  3. В запросе добавляется секция УПОРЯДОЧИТЬ ПО.

🔗 Шаг 4: Соединение таблиц — добавляем остатки

Данные об остатках хранятся в другой таблице — РегистрНакопления.ТоварыНаСкладах.Остатки.

  1. В конструкторе добавляем эту таблицу к уже выбранной.
  2. Выбираем поле ВНаличииОстаток.
  3. Важно: возникает конфликт имён (поле Номенклатура в обеих таблицах). Меняем псевдоним первой таблицы на СписокНоменклатуры.
  4. Переходим на закладку «Связи» (становится доступной при выборе двух таблиц).
Типы соединения таблиц:
  • 🔥 Левое соединение (ЛЕВОЕ СОЕДИНЕНИЕ): в результат попадают ВСЕ строки из главной (левой) таблицы. Если в правой таблице нет соответствия, в колонке будет NULL. (Используется в нашем случае).
  • Внутреннее соединение (ВНУТРЕННЕЕ СОЕДИНЕНИЕ): в результат попадают только те строки, для которых есть соответствие в ОБЕИХ таблицах.
  1. Настраиваем условие связи: СписокНоменклатуры.Ссылка = ТоварыНаСкладахОстатки.Номенклатура.

⚙️ Шаг 5: Замена NULL на 0

Если остатка нет, в колонке отображается NULL (пусто). Чаще нужен 0.

  1. В конструкторе для поля ВНаличииОстаток открываем «Произвольное выражение».
  2. Используем функцию ЕСТЬNULL(Поле, 0).
  3. Первый параметр — наше поле, второй — значение для замены NULL (0).

💡 Про удобство настройки связей

  • В режиме Тонкого клиента закладка «Связи» может быть неудобна.
  • Для комфортной работы перезапустите сеанс в режиме Толстого клиента (в конфигураторе: Сервис → Параметры → Толстый клиент).

💻 Использование запроса в программном коде

Запросы часто используются не только в консоли, но и в коде обработок/отчётов.

Алгоритм:

  1. В Консоли запросов: Инструменты → Код на встроенном языке.
  2. Копируем сгенерированный фрагмент кода.
  3. В конфигураторе, в обработчике команды на сервере:
    • Создаём объект Запрос.
    • Устанавливаем его текст.
    • Выполняем метод Выполнить().
    • Получаем Результат и обходим его в цикле через Выборку.
    • Данные из выборки переносим в табличную часть формы (предварительно её очистив).

Пример фрагмента кода:

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ..."; // Ваш текст запроса
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
    Объект.Товары.Очистить(); // Очищаем табличную часть
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
        НоваяСтрока = Объект.Товары.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
    КонецЦикла;
КонецЕсли;

🎯 Итоги

За 20 минут мы разобрали базовый цикл разработки запроса в 1С:

  1. ✅ Выбор данных из таблицы через конструктор.
  2. ✅ Фильтрация с помощью секции ГДЕ.
  3. ✅ Сортировка через УПОРЯДОЧИТЬ ПО.
  4. ✅ Соединение таблиц (ЛЕВОЕ или ВНУТРЕННЕЕ соединение) с настройкой условий связи.
  5. ✅ Обработка NULL с помощью функции ЕСТЬNULL.
  6. ✅ Использование запроса в коде для заполнения форм и отчётов.

Этих знаний достаточно для решения первых практических задач по извлечению и комбинированию данных в 1С.

📊 Запрос в 1С: получение остатков товаров — конспект на EchoNote