Отчет 7.7 Добавить фильтр в работающий отчет

1. akmelek 16.11.17 10:52 Сейчас в теме
Доброго дня! Есть работающий самописный отчет. Нужно добавить дополнительный фильтр "по типу работ". На данный момент отчет формируется по контрагенту, по виду работ, и по объекту строительства. У всех тип справочник. Отчет работает. Поставили задачу добавить фильтр, Данные для фильтра - тип перечисление. Отчет построен на субконто, а не на запросах, Подскажите как это реализовать?
Прикрепленные файлы:
отчет.ert
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
17. ditp 91 16.11.17 16:54 Сейчас в теме +1 $m
Ох.

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

ИТ.ИСпользоватьСубконто(ВидыСубконто.ВидыРабот, сп, 1);
Показать
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user856012 13 16.11.17 11:07 Сейчас в теме
(1) Вроде в прошлой ветке вам объяснили главное: вместо
Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,Видр, 1);

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


Исправленный отчет выложить невозможно - при сохранении без MDшника пропадают типы реквизитов на форме.
+
4. user856012 13 16.11.17 11:14 Сейчас в теме
+(2) Точнее будет так: заменить везде строчку
Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,Видр, 1);

на строки:
Если ПустоеЗначение(Видр)=1
   Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,, 1);
Иначе
   Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,Видр, 2);
КонецЕсли;
+
3. KSy 16.11.17 11:09 Сейчас в теме
Без структуры базы данных не получится подсказать, запросы на бух итогах. Где и в каких счетах есть такое субконто как "тип работ", а если есть субконто, то имеет ли оно тип перечисление, опять же какое именно перечисление?
+
5. akmelek 16.11.17 14:05 Сейчас в теме
Такого субконто не было, я его создал, добавил везде перед
ит.выполнить запрос
, а также добавил его в план счетов, в счет рабочий. Отчет формируется, но не правильно.. В перечислении "ТипРабот" 12 перечислений, при выборе любого результат один и тот же. Подскажите пожалуйста а в 77 пошаговый отладчик есть, наподобие как в 8?
+
6. user705522_constantin_h 35 16.11.17 14:18 Сейчас в теме
(5) В меню запуска выбираете режим запуска Отладчик и ставите точку останова. Ещё можно вызвать из конфигуратора.
Прикрепленные файлы:
+
7. akmelek 16.11.17 14:51 Сейчас в теме
(6)это я знаю, в 8 можно посмотреть как фомируется пошагово документ
+
8. ditp 91 16.11.17 15:08 Сейчас в теме
(5) А шо за
В перечислении "ТипРабот" 12 перечислений

В вашем отчете вижу
Ит1.ИспользоватьСубконто(ВидыСубконто.Итоги,, 1);

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

и далее

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


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

Вы там по запарке с типами не напутали ничего?
+
10. akmelek 16.11.17 15:26 Сейчас в теме
(8)Тут дело в том что я прикрепил исходный отчет без изменений. В файле нет субконто ТипРабот. Есть вид работ. Суть вопроса в целом: Как добавить общий фильтр по данным из перечисления?
+
11. ditp 91 16.11.17 15:37 Сейчас в теме
(10)
Такого субконто не было, я его создал, добавил везде перед

А каким образом добавляли?
Недостаточно описать вид субконто.
Этот вид субконто во-первых, должен быть назначен счету, и во-вторых - по нему должны быть проводки (иначе фильтруй, не фильтруй, все равно получишь фиг).
Если это все проделано, тогда как и остальными видами субконто:
Ит.ИспользоватьСубконто(ВидыСубконто.ВидыТипаПеречисление, ЗначениеПеречисления, 1);
akmelek; +1
9. ditp 91 16.11.17 15:11 Сейчас в теме
Далее.
Я не очень помню нюансы работы ПолучитьСубконто с указанием значения, но не проще ли было сделать обычную выборку, а уже в цикле смотреть, чему равно текущее значение и в зависимости от этого ту или иную ветку отрабатывать?
akmelek; +1
12. ditp 91 16.11.17 15:41 Сейчас в теме
P.S. Я тут немного протелепатировал, и хочу уточнить: а этот ваш ТипРабот случаем не реквизит справочника ВидыРабот, а вовсе не отдельное субконто?

Если так, то вам нужно сначала получить список ВидовРабот с нужным Типом, загнать его в СписокЗначений и это список засунуть в ИспользоватьСубконто.
Условие "через точку" в запросе по БИ не поддерживаются.
Ну или делать запрос по всем, а при выборке результатов ненужные отсеять.
akmelek; +1
14. akmelek 16.11.17 16:29 Сейчас в теме
(12)Да действительно, вы правы, тип работ является реквизитом справочника ВидРабот. Спасибо за подсказку. Я пропустил. Не совсем понимаю. Запутался уже, для новичка тяжеловато разгребать. Скажите в этом случае как поступить тогда мне? Как получить список и загнать его в список значений?
+
13. ditp 91 16.11.17 15:47 Сейчас в теме
P.S. часть 2

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

Там с условиями полехше.
akmelek; +1
15. ditp 91 16.11.17 16:34 Сейчас в теме
Запросом же.
элем=Справочник.ВидыРаботы.ТекущийЭлемент;
Условие(элем.ТипРаботы=НужныйТипРаботы);
группировка элем Без Групп;
Без Итогов;


Ну или элементарным ВыбратьЭлементы по справочнику, если их там не тыщи.
akmelek; +1
16. akmelek 16.11.17 16:48 Сейчас в теме
(15)
ВыбратьЭлементы

Спасибо,буду пробовать!

Еще раз алгоритм, вытащить из справочника запросом ТипРабот, присвоить переменной, далее переменную присвоить в субконто?
+
17. ditp 91 16.11.17 16:54 Сейчас в теме +1 $m
Ох.

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

ИТ.ИСпользоватьСубконто(ВидыСубконто.ВидыРабот, сп, 1);
Показать
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот