Доброго дня! Есть работающий самописный отчет. Нужно добавить дополнительный фильтр "по типу работ". На данный момент отчет формируется по контрагенту, по виду работ, и по объекту строительства. У всех тип справочник. Отчет работает. Поставили задачу добавить фильтр, Данные для фильтра - тип перечисление. Отчет построен на субконто, а не на запросах, Подскажите как это реализовать?
---
Ох.

```1c
    сп = СоздатьОбъект("СписокЗначений");
    выб = СоздатьОбъект("Справочник.ВидыРабот");
    выб.ВыбратьЭлементы();
    Пока выб.ПолучитьЭлемент()=1 Цикл
    Если выб.ТипРаботы = НужныйТипРаботы Тогда
    сп.ДобавитьЗначение(выб.ТекущийЭлемент())
    КонецЕсли;
    КонецЦикла;
    Если сп.РазмерСписка() = 0 Тогда
    Сообщить("НЕТ ТАКОГО, ТИПА");
    Возврат
    КонецЕсли;

    ИТ.ИСпользоватьСубконто(ВидыСубконто.ВидыРабот, сп, 1);
```
---
Вроде в прошлой ветке вам объяснили главное: вместо

```1c
    Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,Видр, 1);
```

должно быть:

```1c
    Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,Видр,2);
```

Исправленный отчет выложить невозможно - при сохранении без MDшника пропадают типы реквизитов на форме.
---
+(2) Точнее будет так: заменить везде строчку

```1c
    Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,Видр, 1);
```

на строки:

```1c
    Если ПустоеЗначение(Видр)=1
    Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,, 1);
    Иначе
    Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,Видр, 2);
    КонецЕсли;
```
---
Без структуры базы данных не получится подсказать, запросы на бух итогах. Где и в каких счетах есть такое субконто как "тип работ", а если есть субконто, то имеет ли оно тип перечисление, опять же какое именно перечисление?
---
Такого субконто не было, я его создал, добавил везде перед
```1c
    ит.выполнить запрос
```
, а также добавил его в план счетов, в счет рабочий. Отчет формируется, но не правильно.. В перечислении "ТипРабот" 12 перечислений, при выборе любого результат один и тот же. Подскажите пожалуйста а в 77 пошаговый отладчик есть, наподобие как в 8?
---
В меню запуска выбираете режим запуска Отладчик и ставите точку останова. Ещё можно вызвать из конфигуратора.
---
это я знаю, в 8 можно посмотреть как фомируется пошагово документ
---
А шо за В перечислении "ТипРабот" 12 перечислений
В вашем отчете вижу

```1c
    Ит1.ИспользоватьСубконто(ВидыСубконто.Итоги,, 1);
```

ВидыСубконто.Итоги ?

и далее

```1c
    Если Ит1.ПолучитьСубконто(1,,Перечисление.Показатели.ФотМех) = 1 тогда
```

Перечисление.Показатели ?

Вы там по запарке с типами не напутали ничего?
---
Тут дело в том что я прикрепил исходный отчет без изменений. В файле нет субконто ТипРабот. Есть вид работ. Суть вопроса в целом: Как добавить общий фильтр по данным из перечисления?
---
Такого субконто не было, я его создал, добавил везде перед
А каким образом добавляли?
Недостаточно описать вид субконто.
Этот вид субконто во-первых, должен быть назначен счету, и во-вторых - по нему должны быть проводки (иначе фильтруй, не фильтруй, все равно получишь фиг).
Если это все проделано, тогда как и остальными видами субконто:

```1c
    Ит.ИспользоватьСубконто(ВидыСубконто.ВидыТипаПеречисление, ЗначениеПеречисления, 1);
```
---
Далее.
Я не очень помню нюансы работы ПолучитьСубконто с указанием значения, но не проще ли было сделать обычную выборку, а уже в цикле смотреть, чему равно текущее значение и в зависимости от этого ту или иную ветку отрабатывать?
---
P.S. Я тут немного протелепатировал, и хочу уточнить: а этот ваш ТипРабот случаем не реквизит справочника ВидыРабот, а вовсе не отдельное субконто?

Если так, то вам нужно сначала получить список ВидовРабот с нужным Типом, загнать его в СписокЗначений и это список засунуть в ИспользоватьСубконто.
Условие "через точку" в запросе по БИ не поддерживаются.
Ну или делать запрос по всем, а при выборке результатов ненужные отсеять.
---
Да действительно, вы правы, тип работ является реквизитом справочника ВидРабот. Спасибо за подсказку. Я пропустил. Не совсем понимаю. Запутался уже, для новичка тяжеловато разгребать. Скажите в этом случае как поступить тогда мне? Как получить список и загнать его в список значений?
---
P.S. часть 2

Можно попробовать еще черные запросы использовать, как в https://forum.infostart.ru/forum9/topic59215/ (см. 4)

Там с условиями полехше.
---
Запросом же.

```1c
    элем=Справочник.ВидыРаботы.ТекущийЭлемент;
    Условие(элем.ТипРаботы=НужныйТипРаботы);
    группировка элем Без Групп;
    Без Итогов;
```

Ну или элементарным ВыбратьЭлементы по справочнику, если их там не тыщи.
---
ВыбратьЭлементы
Спасибо,буду пробовать!

Еще раз алгоритм, вытащить из справочника запросом ТипРабот, присвоить переменной, далее переменную присвоить в субконто?
---
Ох.

```1c
    сп = СоздатьОбъект("СписокЗначений");
    выб = СоздатьОбъект("Справочник.ВидыРабот");
    выб.ВыбратьЭлементы();
    Пока выб.ПолучитьЭлемент()=1 Цикл
    Если выб.ТипРаботы = НужныйТипРаботы Тогда
    сп.ДобавитьЗначение(выб.ТекущийЭлемент())
    КонецЕсли;
    КонецЦикла;
    Если сп.РазмерСписка() = 0 Тогда
    Сообщить("НЕТ ТАКОГО, ТИПА");
    Возврат
    КонецЕсли;

    ИТ.ИСпользоватьСубконто(ВидыСубконто.ВидыРабот, сп, 1);
```