• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

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

SeverBap

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

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

есть решение посложней но по скорости быстрей, с запросами свои заморочки ....
 
1С++ и прямые запросы спасут отца русской демократии!
 
поподробней!!! У меня есть компанента FormEX!
 
Спр //1 справочник
Спр1//второй

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

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

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

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

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

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

Вложения

  • _________.JPG
    _________.JPG
    61,1 КБ · Просмотры: 472
vitfil ну показывай как прямые запросы делать!!!
или где можно посмотреть то!!!???
 
vitfil ну показывай как прямые запросы делать!!!
или где можно посмотреть то!!!???
В очередной раз прощу ващу грубость... "У меня большое и доброе сердце. Как у теленка" (с) ну почти дословно "Золотой теленок".
най сайте 1cpp.ru есть и последняя версия компоненты, и подробнейшая документация. Ну а дальше - учебники по СУБД, SQL и вперед!
 
Счас посмотрим!!!! (у меня в моей конфигурке уже несколько компанент!!!!) :(
 
не то, вообщем опять отбор по новой для отчета - усложнение по бюджетам и отбор по дате!!!
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab