Как в запросе объединить несколько значений в один столбец отобрав по условию? Бывают ситуации, особенно когда формируешь отчеты по проводкам, где надо вывести отчет по одному типу значений и эти значения могут быть в разных колонках регистра.
В примере ниже, необходимо собрать отчет в разбивке по Номенклатурным группам.
Проводки разные - поэтому Субконто с типом Номенклатурная группа может быть как Дт1 и Дт2 или Дт3
Пример запроса объединяющий несколько значений в один столбец отобрав по условию и собирающий данные по этим условиям:
Код 1C v 8.х Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВЫБОР
| КОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1 ССЫЛКА Справочник.НоменклатурныеГруппы
| ТОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1
| КОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт2 ССЫЛКА Справочник.НоменклатурныеГруппы
| ТОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт2
| КОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт3 ССЫЛКА Справочник.НоменклатурныеГруппы
| ТОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт3
| КОНЕЦ КАК Измерение,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.LOCATION_ACTIVITY,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.REVENUE_COST_CENTER,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Сумма,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.Организация,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.Комментарий,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка КАК Документ
|ПОМЕСТИТЬ втПоИзмерениям
|ИЗ
| Документ.ОтражениеЗарплатыВРеглУчете.ОтражениеВУчете КАК ОтражениеЗарплатыВРеглУчетеОтражениеВУчете
|ГДЕ
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.Проведен
| И ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.ПериодРегистрации МЕЖДУ &НачалоПериода И &ОкончаниеПериода
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втПоИзмерениям.Измерение,
| втПоИзмерениям.LOCATION_ACTIVITY,
| втПоИзмерениям.REVENUE_COST_CENTER,
| втПоИзмерениям.Сумма,
| втПоИзмерениям.Организация,
| втПоИзмерениям.Комментарий,
| втПоИзмерениям.Документ
|ИЗ
| втПоИзмерениям КАК втПоИзмерениям
|ГДЕ
| втПоИзмерениям.Измерение ССЫЛКА Справочник.НоменклатурныеГруппы";
Запрос.УстановитьПараметр("НачалоПериода", Дата("01.09.2014 0:00:00"));
Запрос.УстановитьПараметр("ОкончаниеПериода", Дата("30.09.2014 23:59:59"));
Результат = Запрос.Выполнить();
Выборка = Результат.Выгрузить();
Для каждого СтрокаТЗ Из Выборка Цикл
КонецЦикла;
Категория:
Запросы Как программно прочитать Журнал Регистрации? Код 1C v 8.х ИмяФайла=ПолучитьИмяВременногоФайла("XML");
Результат.Очистить();
Фильтр=Новый Структура;
Фильтр.Вставить("ДатаНачала", НачалоПериода);
Фильтр.Вставить("ДатаОкончания", ОкончаниеПериода);
Фильтр.Вставить("Событие", "_$Data$_.Post");
Состояние("Выгрузка журнала...");
ВыгрузитьЖурналРегистрации(ИмяФайла, Фильтр, "Дата, Метаданные, Данные, ПредставлениеДанных, ИмяПользователя");
Состояние("Обработка журнала...");
ЧтениеXML=Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
ПостроительDOM=Новый ПостроительDOM;
ДокументDOM=ПостроительDOM.Прочитать(ЧтениеXML);
Event=ДокументDOM.ПолучитьЭлементыПоИмени("v8e:Event");
Для й=0 По Event.Количество()-1 Цикл
ДочерниеУзлы=Event[й].ДочерниеУзлы;
Для Каждого Узел Из ДочерниеУзлы Цикл
Если Узел.ИмяУзла="v8e:Date" Тогда
ДатаСобытия=СтрЗаменить(Узел.ТекстовоеСодержимое, "T", "");
ДатаСобытия=СтрЗаменить(ДатаСобытия, ":", "");
ДатаСобытия=Дата(СтрЗаменить(ДатаСобытия, "-", ""));
ИначеЕсли Узел.ИмяУзла="v8e:MetadataName" Тогда
МетаданныеДокумента=СтрЗаменить(Узел.ТекстовоеСодержимое, "Document.", "");
ИначеЕсли Узел.ИмяУзла="v8e:Data" Тогда
УИД=Узел.ТекстовоеСодержимое;
ИначеЕсли Узел.ИмяУзла="v8e:DataPresentation" Тогда
ПредставлениеДанных=Узел.ТекстовоеСодержимое;
ИначеЕсли Узел.ИмяУзла="v8e:UserName" Тогда
Пользователь=Узел.ТекстовоеСодержимое;
КонецЕсли;
КонецЦикла;
Ссылка=Документы[МетаданныеДокумента].ПолучитьСсылку(Новый УникальныйИдентификатор(УИД));
ДатаОбъекта=Ссылка.Дата;
НоваяСтрока=Результат.Добавить();
НоваяСтрока.ДатаСобытия=ДатаСобытия;
НоваяСтрока.ДатаОбъекта=ДатаОбъекта;
НоваяСтрока.ПредставлениеДанных=ПредставлениеДанных;
НоваяСтрока.Пользователь=Пользователь;
НоваяСтрока.РазностьДат=Окр((ДатаСобытия-ДатаОбъекта)/86400);
НоваяСтрока.Ссылка=Ссылка;
КонецЦикла;
Категория:
Администрирование