1С 8.3 Запросы - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Запросы

Данные > Примеры кода 1С > 1С 8.3 Запросы
Реклама:
Запрос в 1С 8.3 - это конструкция кода на структурированном языке для получения информации из базы данных. Язык запросов является более простым аналогом языка SQL/T-SQL, но в отличии от своего "родителя", используется только для чтения данных. Для работы с языком запросов 1С 8.3 используется метод Выбрать, а для получения результата - метод Выполнить().

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

   
// Звездочка используется, когда нужно выбрать все столбцы из таблицы
   
Запрос = Новый Запрос("ВЫБРАТЬ
    |  *
    |ИЗ
    |  Справочник.Материалы"
);

   
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
    Пока
Записи.Следующий() Цикл
       
// Обход результата запроса по каждой записи в полученной выборке
   
КонецЦикла;

КонецПроцедуры
Получение запросом всех строк со значениями определенных столбцов в 1С 8.3:
&НаСервере
Процедура ПолучениеЗапросомВсехСтрокСоЗначениямиОпределенныхСтолбцов()

   
// У каждого столбца в таблице есть своё соответствующее имя
   
Запрос = Новый Запрос("ВЫБРАТЬ
    |  Наименование,
    |  Производитель,
    |  СрокИспользования
    |ИЗ
    |  Справочник.Материалы"
);

   
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
    Пока
Записи.Следующий() Цикл
       
// Обход результата запроса по каждой записи в полученной выборке
   
КонецЦикла;

КонецПроцедуры
Использование псевдонимов для столбцов и таблиц в запросах в 1С 8.3:
&НаСервере
Процедура ИспользованиеПсевдонимовДляСтолбцовИТаблицВЗапросах()

   
// Для каждого столбца может быть назначен Псевдоним. Запрос станет более понятным
   
Запрос = Новый Запрос("ВЫБРАТЬ
    |   Запчасти.Наименование КАК НаименованиеМатериала,
    |   Запчасти.СрокИспользования КАК СрокИспМатериала,
    |   Запчасти.Производитель КАК ПроизводительМатериала
    | ИЗ
    |   Справочник.Материалы КАК Запчасти"
);

   
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
    Пока
Записи.Следующий() Цикл
       
// Обход результата запроса по каждой записи в полученной выборке
   
КонецЦикла;

КонецПроцедуры
Удаление дубликатов из результата запроса в 1С 8.3:
&НаСервере
Процедура УдалениеДубликатовИзРезультатаЗапроса()

   
// В справочнике КлассификаторСроковПИ есть элементы-дубли. Строим запрос так,
    // чтобы в результат попали только различные сроки использования
   
Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ
    |  Наименование
    |ИЗ
    |  Справочник.КлассификаторСроковПИ"
);

   
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
    Пока
Записи.Следующий() Цикл
       
// Обход результата запроса по каждой записи в полученной выборке
   
КонецЦикла;

КонецПроцедуры
Ограничение количества строк в результате запроса в 1С 8.3:
&НаСервере
Процедура ОграничениеКоличестваСтрокВРезультатеЗапроса()

   
// Создание выборки первых 30 самых тяжелых материалов
   
Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 30
    |  Наименование,
    |  Вес
    |ИЗ
    |  Справочник.Материалы
    |УПОРЯДОЧИТЬ ПО
    |   Вес УБЫВ"
);

   
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
    Пока
Записи.Следующий() Цикл
       
// Обход результата запроса по каждой записи в полученной выборке
   
КонецЦикла;

КонецПроцедуры
Вставка столбца с определенным значением в результат запроса в 1С 8.3:
&НаСервере
Процедура ВставкаСтолбцаСОпределеннымЗначениемВРезультатЗапроса()

   
// Добавление столбца СтавкаНДС и присвоение значения = 20
   
Запрос = Новый Запрос("ВЫБРАТЬ
    |  Наименование,
    |  20 КАК СтавкаНДС,
    |  Вес
    |ИЗ
    |  Справочник.Материалы"
);

   
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
    Пока
Записи.Следующий() Цикл
       
// Обход результата запроса по каждой записи в полученной выборке
   
КонецЦикла;

КонецПроцедуры
Выборка записей запроса только на которые имеются пользовательские права в 1С 8.3:
&НаСервере
Процедура ВыборкаЗаписейЗапросаТолькоНаКоторыеИмеютсяПользовательскиеПрава()

   
// Необходимо только для баз, в которых ограничение прав доступа работает на уровне записей (RLS)
    // Данная реализация кода дает возможность выполнить запрос без ошибки
    // и выбрать только те данные, на которые у пользователя есть права
   
Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |   Ссылка
    |ИЗ
    |   Документ.ПоступлениеМатериалов"
);

   
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
    Пока
Записи.Следующий() Цикл
       
// Обход результата запроса по каждой записи в полученной выборке
   
КонецЦикла;

КонецПроцедуры
Поиск кода
0
комментарии
____________________
Copyright by 1Cnik.by©, «Программист 1С в г.Минске», 14.06.2020
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Назад к содержимому