Доброго дня! Есть работающий самописный отчет. Нужно добавить дополнительный фильтр "по типу работ". На данный момент отчет формируется по контрагенту, по виду работ, и по объекту строительства. У всех тип справочник. Отчет работает. Поставили задачу добавить фильтр, Данные для фильтра - тип перечисление. Отчет построен на субконто, а не на запросах, Подскажите как это реализовать?
сп = СоздатьОбъект("СписокЗначений");
выб = СоздатьОбъект("Справочник.ВидыРабот");
выб.ВыбратьЭлементы();
Пока выб.ПолучитьЭлемент()=1 Цикл
Если выб.ТипРаботы = НужныйТипРаботы Тогда
сп.ДобавитьЗначение(выб.ТекущийЭлемент())
КонецЕсли;
КонецЦикла;
Если сп.РазмерСписка() = 0 Тогда
Сообщить("НЕТ ТАКОГО, ТИПА");
Возврат
КонецЕсли;
ИТ.ИСпользоватьСубконто(ВидыСубконто.ВидыРабот, сп, 1);
Если ПустоеЗначение(Видр)=1
Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,, 1);
Иначе
Ит.ИспользоватьСубконто(ВидыСубконто.ВидыРабот,Видр, 2);
КонецЕсли;
Без структуры базы данных не получится подсказать, запросы на бух итогах. Где и в каких счетах есть такое субконто как "тип работ", а если есть субконто, то имеет ли оно тип перечисление, опять же какое именно перечисление?
Такого субконто не было, я его создал, добавил везде перед
ит.выполнить запрос
, а также добавил его в план счетов, в счет рабочий. Отчет формируется, но не правильно.. В перечислении "ТипРабот" 12 перечислений, при выборе любого результат один и тот же. Подскажите пожалуйста а в 77 пошаговый отладчик есть, наподобие как в 8?
(8)Тут дело в том что я прикрепил исходный отчет без изменений. В файле нет субконто ТипРабот. Есть вид работ. Суть вопроса в целом: Как добавить общий фильтр по данным из перечисления?
Такого субконто не было, я его создал, добавил везде перед
А каким образом добавляли?
Недостаточно описать вид субконто.
Этот вид субконто во-первых, должен быть назначен счету, и во-вторых - по нему должны быть проводки (иначе фильтруй, не фильтруй, все равно получишь фиг).
Если это все проделано, тогда как и остальными видами субконто:
Далее.
Я не очень помню нюансы работы ПолучитьСубконто с указанием значения, но не проще ли было сделать обычную выборку, а уже в цикле смотреть, чему равно текущее значение и в зависимости от этого ту или иную ветку отрабатывать?
P.S. Я тут немного протелепатировал, и хочу уточнить: а этот ваш ТипРабот случаем не реквизит справочника ВидыРабот, а вовсе не отдельное субконто?
Если так, то вам нужно сначала получить список ВидовРабот с нужным Типом, загнать его в СписокЗначений и это список засунуть в ИспользоватьСубконто.
Условие "через точку" в запросе по БИ не поддерживаются.
Ну или делать запрос по всем, а при выборке результатов ненужные отсеять.
(12)Да действительно, вы правы, тип работ является реквизитом справочника ВидРабот. Спасибо за подсказку. Я пропустил. Не совсем понимаю. Запутался уже, для новичка тяжеловато разгребать. Скажите в этом случае как поступить тогда мне? Как получить список и загнать его в список значений?
сп = СоздатьОбъект("СписокЗначений");
выб = СоздатьОбъект("Справочник.ВидыРабот");
выб.ВыбратьЭлементы();
Пока выб.ПолучитьЭлемент()=1 Цикл
Если выб.ТипРаботы = НужныйТипРаботы Тогда
сп.ДобавитьЗначение(выб.ТекущийЭлемент())
КонецЕсли;
КонецЦикла;
Если сп.РазмерСписка() = 0 Тогда
Сообщить("НЕТ ТАКОГО, ТИПА");
Возврат
КонецЕсли;
ИТ.ИСпользоватьСубконто(ВидыСубконто.ВидыРабот, сп, 1);