ПРОДАЖА И ВНЕДРЕНИЕ 1С

по всей России

+7 (495) 223-32-11

Заказать обратный звонок

8 (800) 775-90-01

Бесплатно по России

Получить

Скорую 1С помощь

Получить

Проконсультироваться
со специалистом 1С

Консультироваться

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

Рассмотрим пример. Пусть нам необходимо получить кросс-отчет по остаткам номенклатуры на различных складах. Номенклатуру необходимо вывести в строках, склады - в колонках.
Запрос для получения остатков будет выглядеть так:
Код 1C v 8.х
 ВЫБРАТЬ
      
УчетНоменклатурыОстатки.Номенклатура КАК Номенклатура,
УчетНоменклатурыОстатки.Номенклатура.Представление,
УчетНоменклатурыОстатки.Склад КАК Склад,
УчетНоменклатурыОстатки.Склад.Представление,
УчетНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ
РегистрНакопления.УчетНоменклатуры.Остатки КАК УчетНоменклатурыОстатки
ИТОГИ СУММА(КоличествоОстаток) ПО
ОБЩИЕ,
Номенклатура,
Склад


Для обхода номенклатуры воспользуемся выборкой из результата запроса:
Код 1C v 8.х
 ВыборкаНоменклатура = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Номенклатура");
      
Пока ВыборкаНоменклатура.Следующий() Цикл
ОбластьНоменклатура.Параметры.Заполнить(ВыборкаНоменклатура);
ТабДок.Вывести(ОбластьНоменклатура);


Для обхода внутри номенклатуры всех складов, присутствующих в результате запроса, получим вложенную выборку от выборки номенклатуры, с указанием третьего параметра "ВСЕ":
Код 1C v 8.х
 ВыборкаСклад = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Склад", "ВСЕ");
      
Пока ВыборкаСклад.Следующий() Цикл
ОбластьСклад.Параметры.Заполнить(ВыборкаСклад);
ТабДок.Присоединить(ОбластьСклад);
КонецЦикла;


В случае если необходимо построить несколько отдельных кросс-таблиц для каждого значения некой группировки, необходимо в качестве третьего параметра выборки указать имя группировки, внутри которой необходимо получить все значения, вошедшие в запрос.
Пример:
Код 1C v 8.х
 ВыборкаСклад = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Склад", "Организация"); 

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


Заказать обратный звонок

Позвонить
Отправлено! В самое ближайшее время наш менеджер свяжется с Вами.