Как сделать выборку в 1С 8.3
Меню

Как сделать выборку в 1С 8.3

В своем коде разработчикам 1С приходится обращаться к базе данных, получать оттуда информацию и работать с ней. Операцию работы с результатом запроса данных из БД называют «выборкой». Для успешной работы и написания оптимального кода необходимо понимать, как нужно работать с запросом и полученными данными. Также важно запомнить основные инструменты платформы, используемые для выборки.

Синтаксис выборки 1С 8.3 и работа с ее результатом

Чаще всего в конфигурациях 1С можно встретить два варианта получения выборки для работы с ней:

  1. Используя запрос. Программист 1С пишет запрос на языке 1С, выполняет его и получает результат запроса – таблицу с данными. Методом "Выбрать()" выбираются данные из полученного результата;

    
    	ЗапросДанных = Новый Запрос("Выбрать ссылка  Из Справочник.Валюта");
        ВыборкаДанных = ЗапросДанных.Выполнить().Выбрать();
    

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

    
    	 ВыборкаДанных = Справочники.Валюта.Выбрать();
    

В обоих случаях, чтобы получить выборку из документов или справочников, необходимо использовать метод «Выбрать()». В результате в переменную «ВыборкаДанных» помещаются данные типа «ВыборкаИзРезультатаЗапроса». Это таблица, в которой содержаться все поля, перечисленные в запросе, использующая индексы. После этого с ними можно работать, используя различные методы данного типа данных:

Владелец() – возвращает результат запроса, из которого и была сформирована полученная выборка;

Следующий() – позволяет последовательно перебрать все записи выборки, перемещая указатель на следующую строку. Чаще всего используется, так как позволяет выполнять определенные действия со всеми выбранными записями в цикле. Будьте аккуратны и не допускайте выполнения запросов в цикле;


Пока Выборка.Следующий() Цикл
	//действия с 1 записью из выборки
КонецЦикла;

НайтиСледующий(УсловияПоиска) – позволяет отобрать из выборки только те записи,

которые удовлетворяют условию поиска. УсловияПоиска – переменная типа

«Структура», содержащая имена полей и нужные значения;


СтуктураПоиска = Новый Структура("Наименование");
СтуктураПоиска.Наименование = НужноеНаименование;
Пока Выборка.НайтиСледующий(СтуктураПоиска) Цикл
//действия с записью из выборки
КонецЦикла;

СледующийПоЗначениюПоля(ИмяПоля) – позволяет перебирать записи только с уникальными значениями конкретного поля, указанного в параметре;

Сбросить() – позволяет в процессе перебора результата выборки вернуться к верхней записи;

Количество() – метод показывает сколько записей получилось в результате выборки из результата запроса;


КоличествоЗаписей = Выборка.Количество();

Получить(ЧислоИндекса) – команда возвращает запись с заданным индексом в качестве параметра;

Выбрать(ТипОбхода) – применяется в том случае, если в качестве параметра указан обход «По группировкам». Стандартно применяется тип "Прямой", в случае получения результатов запроса с 1 группировкой применяют "ПоГруппировкам". Если же группировок несколько, то выбирайте "ПоГруппировкамСИерархией";


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

Уровень() – показывает в виде числа уровень в иерархии;

ТипЗаписи() – возвращает тип текущей записи;

Группировка() – метод получает имя группировки, если это простая запись – пустую строчку.

Синтаксис-помощник
Синтаксис-помощник

Выборка из результатов запроса применяется в подавляющем большинстве случаев, но иногда удобнее работать с таблицей результатов. Если нужны сразу все данные, лучше использовать не метод «Выбрать()», а «Выгрузить()». В результате в переменной оказываются данные с типом ТаблицаЗначений, где вы сможете найти сразу все данные.


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

Вы сможете сортировать полученную таблицу, сравнивать различные строки, осуществлять поиск одинаковых элементов и многое другое. Также вы можете и выбирать построчно данные из этого типа данных с помощью обхода строк в цикле:


Для каждого строка из ВыборкаДанных цикл
	///операторы работы с 1 строчкой из таблицы значений
КонецЦикла;

В случае пакетного запроса используемые методы немного отличаются. После написания запроса необходимо использовать метод «ВыполнитьПакет()». В результате в переменной будет массив результатов запросов. В дальнейшем с помощью операторов «Выбрать()» или «Выгрузить()» можно получить выборку из результатов запроса. Помните, что индексы массива начинаются с 0.


МассивРезультатовЗапросов = Запрос.ВыполнитьПакет();
ВыборкаДанныхЗапроса1 = МассивРезультатовЗапросов [0].Выбрать();
ВыборкаДанныхЗапроса2 = МассивРезультатовЗапросов [1].Выгрузить();

Запомните суть методов, так как их синтаксис вы всегда сможете найти во встроенном помощнике 1С. Большинство методов применяется в случае сложных запросов с группировками. Чаще всего разработчики 1С 8.3 обходятся простым обходом выборки с помощью метода Следующий(). Но дополнительные возможности платформы необходимо знать и использовать их в нужный момент. Если у вас остались вопросы, обращайтесь к нашим специалистам за консультацией по программам 1С. Мы с радостью вам поможем!


Рассказать друзьям
Предыдущая статья статья
Авизо в 1С 8.3
Следующая статья статья
Основные справочники 1С 8.3: создание и изменение элементов
Комментарии