Как лучше сделать?

  • Автор темы SeverBap
  • Дата начала
S

SeverBap

Вообщем ситуация такая: имеется два справочника, первый двух уровневый, второй подчинен первому;
понадобилось нарисовать один отчет, суть которого в следующем: пользователь открывает отчет (по умолчанию там ставится дата отчета как рабочаяДата - эта дата условная, представлена как месяц год тоесть: Август 2008г.), исходя из этой даты (кторая может интерактивно менятся прямо в отчете) происходит выборка данных из этих двух справочников, - тоесть ДатаГод() возращает код группы в первом справочнике, датаМесяц() во втором ... как сделать правильно и разумную выборку которая довала нормальный результат за короткое время ....
я уже начал мыслить на эту тему пока к чему-то путному не дошел: делаем обход по всем элементам справочника второго и смотрим чтобы:
ТекущийЭлемент().Владелец.Родитель.Код=Число(ДатаГод(РодительОтбора)) И (ТекущийЭлемент().Код=Число(ДатаМесяц(РодительОтбора))) ....

это хорошо когда все хорошо всмысле их мало элементов в справочнике втором!!!

есть решение посложней но по скорости быстрей, с запросами свои заморочки ....
 
V

vitfil

1С++ и прямые запросы спасут отца русской демократии!
 
S

SeverBap

поподробней!!! У меня есть компанента FormEX!
 
K

kaa

Спр //1 справочник
Спр1//второй

Спр.НайтиПоКоду(ДатаГод(РодительОтбора));
ТекРод = Спр.ТекущийЭлемент();
Спр.ИспользоватьРодителя(ТекРод.ТекущийЭлемент());
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл

Спр1.ИспользоватьВладельца(Спр.ТекущийЭлемент());//это если коды уникальны
Спр1.НайтиПоКоду(ДатаМесяц(РодительОтбора));

//если нет
ТекВладелец = Спр.ТекущийЭлемент();
ТекКод = ДатаМесяц(РодительОтбора);
ТекстЗапроса =
|Нужный = Справоник.ххх.ТекущийЭлемент;
|Владелец = Справочник.ххх.Владелец;
|Код = Справоник.ххх.код;
|Условие (Владелец в ТекВладелец);
|Условие (Код = ТекКод);

//и т.д.
КонецЦикла;

где-то так я ТАК думаю :unsure:
 
V

vitfil

kaa
и сколько это будет работать?
 
S

SeverBap

Я думаю будет работать очень долго!
Я пока в шоке и пользуюсь вот этим:
Код:
.........
ВиртуальныйСправочникОтчетныхПериодов=СоздатьОбъект("Справочник.ОтчетныйПериод");
Если ПустоеЗначение(РодительОтбора)=0 Тогда
ВиртуальныйСправочникОтчетныхПериодов.ИспользоватьДату(ТекущаяДата());
ВиртуальныйСправочникОтчетныхПериодов.ВыбратьЭлементы(0);
Пока ВиртуальныйСправочникОтчетныхПериодов.ПолучитьЭлемент()=1 Цикл
Если (Число(ВиртуальныйСправочникОтчетныхПериодов.Владелец.Родитель.Код)=Число(ДатаГод(РодительОтбора))) И (Число(ВиртуальныйСправочникОтчетныхПериодов.Код)=Число(ДатаМесяц(РодительОтбора))) Тогда
..........
КонецЕсли;
КонецЦикла;
КонецЕсли;
скорей всего я с ним и останусь ... нда ... теперь сижу ковыряюсь внутренним кодом убираю все циклы и пишу без циклов и запросов ...
:blink:
 
K

kaa

и сколько это будет работать?
Я думаю если малость подправить код то будет работать нормально, кончно зависит от размера справочников.
Но при описаной необходимости нужно было справочники построить по дургому и пользоваться отбором по реквизиту
 
S

SeverBap

нужно было справочники построить по дургому и пользоваться отбором по реквизиту
как надо было построить справочники??? (я недавно спрашивал как лучше построить структуру никто не ответил!)
 
K

kaa

Делать (подчиненный справочник) не подчиненым и добавить реквизит допустим Хозяин с типом первого справочника,с сортировкой и отбором тогда можно было бы воспользоваться ВыбратьЭлементыПоРеквизиту, а остальное надо смотреть по конкретной задаче
 
S

SeverBap

Нее такое тоже рассматривал, неподошло! Причин было куча сам не помню ... да и по логике должно быть!! Впринципе все реал могу наклипать и такое за пол часа и сравнить!!! И вывесить результат .... так же могу показать схемотично что у меня заложено может кто-то и даст совет по написанию!! :blink:

Структура схематично:
 

Вложения

  • _________.JPG
    _________.JPG
    61,1 КБ · Просмотры: 443
S

SeverBap

vitfil ну показывай как прямые запросы делать!!!
или где можно посмотреть то!!!???
 
V

vitfil

vitfil ну показывай как прямые запросы делать!!!
или где можно посмотреть то!!!???
В очередной раз прощу ващу грубость... "У меня большое и доброе сердце. Как у теленка" (с) ну почти дословно "Золотой теленок".
най сайте 1cpp.ru есть и последняя версия компоненты, и подробнейшая документация. Ну а дальше - учебники по СУБД, SQL и вперед!
 
S

SeverBap

Счас посмотрим!!!! (у меня в моей конфигурке уже несколько компанент!!!!) :(
 
S

SeverBap

не то, вообщем опять отбор по новой для отчета - усложнение по бюджетам и отбор по дате!!!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!