|   |   | 
| 
 | v7: 1С++ прямые | ☑ | ||
|---|---|---|---|---|
| 0
    
        Эльниньо 13.11.14✎ 16:31 | 
        RS.УложитьСписокОбъектов(СпКл, "#Клиенты", "Контрагенты");
 ТекстЗапроса = " |SELECT |Рег.Товар as [Товар $Справочник.Номенклатура], |Рег.Покупатель as [Клиент $Справочник.Контрагенты], |Рег.АдресГр as [ГрузоПол $Справочник.АдресаГрузополучателей], //|Рег.Бонус as Бонус, |Рег.СуммаПродажиОборот СуммаПрод, |Рег.СуммаЗакупкиОборот СуммаЗак, |Рег.СуммаБазНовОборот СуммаБаз, |Рег.КолвоБазОборот Количество, |Рег.Период День |FROM $РегистрОбороты.Продажи(:НачДата,:КонДата, День) as Рег |WHERE |Рег.Покупатель IN (SELECT Val FROM #Клиенты)"; СпКл - СписокЗначений, в нём список групп Спр.Контрагенты Какого рожна в запрос все контрагенты попадают? Что не так в запросе? | |||
| 1
    
        olegves 13.11.14✎ 16:37 | 
        Уложить список разворачивает группы до вложенных элементов     | |||
| 2
    
        Эльниньо 13.11.14✎ 16:39 | 
        Насколько я понимаю - в #Клиенты попадают все элементы из групп в списке. 
 Или при списке групп происходит затык и надо искать другой вариант? | |||
| 3
    
        Chai Nic 13.11.14✎ 16:40 | 
        А попробуй глянуть что там уложилось в SELECT Val FROM #Клиенты     | |||
| 4
    
        Эльниньо 13.11.14✎ 16:49 | 
        (3) Как? Это же ВТ     | |||
| 5
    
        mehfk 13.11.14✎ 16:50 | 
        оставить только SELECT Val FROM #Клиенты и посмотреть полученную тз     | |||
| 6
    
        Эльниньо 13.11.14✎ 16:51 | 
        (5) Спс     | |||
| 7
    
        Эльниньо 13.11.14✎ 17:01 | 
        Нет времени хорошенько прямыми заняться.
 Где бы найти хорошего прямозапросечника | |||
| 8
    
        Эльниньо 14.11.14✎ 09:13 | 
        Вопрос к гуру 1С++:
 Нужен мегаотчёт с кучей группировок, параметров, условий. Средствами 1С запрос написать не проблема. Прямыми пока никак. Не хватает понимания логики построения скулёвых запросов. А вот если скинуть всё (1 - 2 сек) в ИТЗ, а потом крути-верти как хочешь? | |||
| 9
    
        trad 14.11.14✎ 09:22 | 
        (8) "А вот если скинуть всё (1 - 2 сек) в ИТЗ, а потом крути-верти как хочешь?"
 Так и делаю. Только зачем все, только согласно фильтрам заданным в отчете. Потом результат в ИТЗ и группируешь как надо и выводишь. | |||
| 10
    
        Эльниньо 14.11.14✎ 09:34 | 
        (9) Ну судя по сабжу, так и пытаюсь сделать     | |||
| 11
    
        antoneus 14.11.14✎ 09:38 | 
        (4) ВТ, емнип, если их руками не дропать, хранятся до окончания сеанса 1С.     | |||
| 12
    
        dk 14.11.14✎ 09:40 | 
        ну и для скорости желательно фильтровать в параметрах вирт. таблицы оборотов, а не после 
 ---- 
 | |||
| 13
    
        Salimbek 14.11.14✎ 09:58 | 
        (3) Смотреть желательно не ID-шники т.е. SELECT Val [Контр $Справочник.Контрагенты] from #Клиенты
 (10) Для быстрого задания условий - добавляешь в условиях "SELECT ... FROM ... WHERE (1=1) "+Фильтр1; или, для Виртуальных таблиц, "SELECT ... FROM $РегистрОстатки.<ИмяРегистра>(,,,,"(1=1)"+Фильтр2+")"; И дальше в зависимости от заданных тебе параметров формируешь этот Фильтр ФильтрNN = ""; Для ... ФильтрNN = ФильтрNN+" AND "+ПолеФильтра + ВидСравнения + ЗначениеФильтра; КонецЦикла По группировкам - там много всего бывает, да еще и с иерархиями, так что, чаще всего, я тоже закидывал результат в Индексированную таблицу. Отдельно лишь замечу, что если нужно использовать Иерархию, то добавление колонок по последнему абзацу из раздела документации: http://www.1cpp.ru/docum/icpp/html/IndexedTable.html#group очень хорошо влияет на производительность. | |||
| 14
    
        Эльниньо 14.11.14✎ 10:24 | 
        (13) Это давно пользую.
 Там тоже вопрос. Скажем у меня в фильтре были группы 3,4 Группировка раскидает вплоть до самого верхнего уровня - 1,2,3,4 Приходится избавляться от уровней 1,2 ИТЗ | |||
| 15
    
        Salimbek 14.11.14✎ 11:26 | 
        (14) Не понял, если ты хочешь вывести отчет с иерархией, то выводить надо всю иерархию. Если же запрос строится целенаправленно по определенной узкой выборке и выводить надо только эту узкую, то значит и группы надо получать в качестве полей запроса, типа:
 Select группа3.id, группа4.id, Номенклатура.id FROM Справочник.Номенклатура как Группа3 INNER JOIN Справочник.Номенклатура как Группа4 ON Группа3.ID=Группа4.ParentID INNER JOIN Справочник.Номенклатура как Номенклатура ON ... | |||
| 16
    
        КонецЦикла 14.11.14✎ 11:31 | 
        Смотри параметры уложить, там есть насчет иерархии     | |||
| 17
    
        КонецЦикла 14.11.14✎ 11:33 | 
        (7) С какой целью интересуетесь?
 Почта в личке :) | |||
| 18
    
        Skom 14.11.14✎ 11:53 | 
        а укладываешь список контрагентов, ты его откуда берешь?     | |||
| 19
    
        Skom 14.11.14✎ 11:57 | 
        из формы?     | |||
| 20
    
        Salimbek 14.11.14✎ 12:11 | 
        (19) А хоть откуда можно брать этот список, хоть из формы, хоть из какой другой выборки.     | |||
| 21
    
        Эльниньо 14.11.14✎ 12:11 | 
        (17) Мне на постоянку нужно     | |||
| 22
    
        Эльниньо 14.11.14✎ 12:11 | 
        (19) Список на морде     | |||
| 23
    
        Эльниньо 14.11.14✎ 12:31 | 
        Тут мысля пришла.
 ИТЗ.ДобавитьИндекс() занимает время. Если сначала ДобавитьКолонку индекса, добавить индекс, а потом загрузить туда данные. По идее нехилый выигрыш во времени. Ща попробую | |||
| 24
    
        Skom 14.11.14✎ 12:35 | 
        (22) а сам запрос покажи     | |||
| 25
    
        Salimbek 14.11.14✎ 12:36 | 
        (23) Ты глубоко ошибаешься, Добавить индекс куда как быстрее, чем добавлять записи, которые потом должны еще и в индексе перестроиться.     | |||
| 26
    
        Skom 14.11.14✎ 12:39 | 
        (24) ахахаха вот тупанул))) в (0) же есть.
 Вопрос только такой, рабочий запрос как в (0) или с дополнениями? | |||
| 27
    
        Skom 14.11.14✎ 12:45 | 
        А в группах, которые указаны в списке значений, подгруппы есть? или там только элементы?     | |||
| 28
    
        Skom 14.11.14✎ 12:46 | 
        А контрагенты с пустыми оборотами нужны?     | |||
| 29
    
        Skom 14.11.14✎ 12:53 | 
        Скоро раб. день закончится. Уйду ведь))     | |||
| 30
    
        Эльниньо 14.11.14✎ 12:56 | 
        Проблему сабжа уже решил.
 Буду дальше вас терзать по мере появления неясностей. Или не буду, если быстро прямозапросечник с резюме нарисуется | |||
| 31
    
        Skom 14.11.14✎ 12:57 | 
        через ИТЗ? или прямыми?
 Не интересно, как на прямых решить? | |||
| 32
    
        Skom 14.11.14✎ 13:00 | 
        в общем, ждем от тебя новых интересных задач))     | |||
| 33
    
        Эльниньо 14.11.14✎ 13:21 | 
        Нехрена не решил, мля.
 Оставил в списке одну группу. В ней есть подгруппы. Вытаскивает обороты по всем | |||
| 34
    
        DrZombi гуру 14.11.14✎ 13:39 | 
        (33) Дак оно так и работает.
 Если нужно только этот уровень получить по группе, так и пиши соответствующее условие запроса. Если нужно по элементно, так помести в список не группу, а элементы :) | |||
| 35
    
        DrZombi гуру 14.11.14✎ 13:44 | 
        +(33) Когда ты укладываешь командой список, С параметром "Контрагенты".
 RS.УложитьСписокОбъектов(СпКл, "#Клиенты", "Контрагенты"); А в списке есть группа. То он заполнят временную таблицу всеми элементами этой группы. Если нужно заполнить чисто элементами из списка, то не указывай "Контрагенты"" | |||
| 36
    
        Эльниньо 14.11.14✎ 14:01 | 
        Всё норм. Запрос с вхере отработал за секунду.
 Теперь тоскливо жду, когда 165000 строк в печатную форму выведет | |||
| 37
    
        Salimbek 14.11.14✎ 14:02 | 
        +(35) А если нужно заполнить только элементами этой подгруппы, без вложенных, то:
 Номенклатура in (select id from $Справочник.Номенклатура where parentid=:ТвояГруппа) | |||
| 38
    
        Эльниньо 14.11.14✎ 14:46 | 
        Сейчас подобный фильтр по товарам прикручиваю     | |||
| 39
    
        Ёпрст гуру 14.11.14✎ 14:51 | 
        вывод в печ форму тоже можно(и нужно) оптимизировать     | |||
| 40
    
        dk 14.11.14✎ 14:55 | 
        еще 1с++ сильно тупит на 
 as [бла-бла $Справочник.зю-зю] если больше 1000 элементов, то весьма ощутимо поэтому если ссылка не нужна, то лучше descr возвращать вместо ссылки | |||
| 41
    
        Эльниньо 14.11.14✎ 14:58 | 
        Второе условие кушать не хочет:
 ТекстЗапроса = " |SELECT |Рег.Товар as [Товар $Справочник.Номенклатура], |Рег.Покупатель as [Клиент $Справочник.Контрагенты], |Рег.АдресГр as [ГрузоПол $Справочник.АдресаГрузополучателей], |Рег.СуммаПродажиОборот СуммаПрод, |Рег.СуммаЗакупкиОборот СуммаЗак, |Рег.СуммаБазНовОборот СуммаБаз, |Рег.КолвоБазОборот Количество, |Рег.Период День |FROM $РегистрОбороты.Продажи(:НачДата,:КонДата, День) as Рег |WHERE 1=1"; Если СпКл.РазмерСписка() > 0 Тогда RS.УложитьСписокОбъектов(СпКл, "#Клиенты", "Контрагенты"); ТекстЗапроса = ТекстЗапроса + " |Рег.Покупатель IN (SELECT Val FROM #Клиенты)"; КонецЕсли; Если ВыбТовары.РазмерСписка() > 0 Тогда RS.УложитьСписокОбъектов(ВыбТовары, "#Товары", "Номенклатура"); ТекстЗапроса = ТекстЗапроса + " |Рег.Товар IN (SELECT Val FROM #Товары)"; КонецЕсли; Тзап = RS.ВыполнитьИнструкцию(ТекстЗапроса); {\\FILES2\BASES\ERT\ПЛОСКАЯМАТРИЦАПРОДАЖ.ERT(58)}: State 42000, native 102, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'Рег'. | |||
| 42
    
        trad 14.11.14✎ 15:00 | 
        and забыл     | |||
| 43
    
        Ёпрст гуру 14.11.14✎ 15:01 | 
        (41) ну ясен пень.. надо либо
 and Рег.Покупатель .. and Рег.Товар ... делать, либо в тексте запроса СтрЗаменить(ТекстЗапроса,"1=1","Рег in ...,блаблабла"); СтрЗаменить(ТекстЗапроса,"2=2","Рег in ...,блаблабла"); | |||
| 44
    
        trad 14.11.14✎ 15:03 | 
        (43) оригинальный подход     | |||
| 45
    
        Ёпрст гуру 14.11.14✎ 15:07 | 
        (44) :)
 с тобой на бентли не заработаешь.. ЗЫ: на счет стрЗаменить - иногда удобно, если необходимо в разных местах воткнуть одинаковое условие, например, в юнионе, или еще где, где просто динамическое собирание..проблематично | |||
| 46
    
        Эльниньо 14.11.14✎ 15:10 | 
        (45) Спс, сенсэй. Сработало.
 Я так понимаю "1=1 И 2=2" не катит Прокатило 1=1 аnd 2=2 | |||
| 47
    
        Ёпрст гуру 14.11.14✎ 15:11 | 
        Это, такие конструкции в снеговике в полный рост использовались раньше в универсальном отчете, там правда через комменты в тексте запроса было оформлено всё..
 и потом замена на условия, поля запроса, группировки и т.д | |||
| 48
    
        Эльниньо 14.11.14✎ 15:11 | 
        Самое лёгкое разрулил. Дальше ямы поглубже будут     | |||
| 49
    
        КонецЦикла 14.11.14✎ 15:12 | 
        Я всегда пишу (1 = 1)
 Далее, динамически формируя условия - просто and ... | |||
| 50
    
        trad 14.11.14✎ 15:18 | 
        (45) я не про стрЗаменить, сам делаю через замену (не люблю склеивать запрос из кусочков).
 я про 1=1 and 2=2 and 3=3 | |||
| 51
    
        Ёпрст гуру 14.11.14✎ 16:17 | 
        (50) ну.. по всякому же можно :)     | |||
| 52
    
        Эльниньо 14.11.14✎ 16:18 | 
        Кстати отдельные простые и гениальные решения вызывают поначалу отторжение даже у опытных прогов.
 Например: Флаг = 1 - Флаг или Замена Если на Пока в алгоритме удаления "лишних" строк в ТЗ | |||
| 53
    
        Chai Nic 14.11.14✎ 16:29 | 
        (52) Нафиг нафиг эти ваши гениальные решения.. не надо из кода делать ребус.     | |||
| 54
    
        МаякНаКазачке 14.11.14✎ 16:38 | 
        а вот и я
 (43) подстрока рулит давайте ещё | |||
| 55
    
        Эльниньо 14.11.14✎ 16:40 | 
        (53) Ну можно и так:
 Флаг = 1 - Флаг // не пугайся. Вот смотри: Флаг=1. 1 - 1 скока буит? Теперь Флаг=0. 1-0 скока буит? Вот то-то же | |||
| 56
    
        МаякНаКазачке 14.11.14✎ 16:40 | 
        (49) ай как некрасиво,
 http://umk.portal.kemsu.ru/uch-mathematics/papers/posobie/r3-3.htm | |||
| 57
    
        МаякНаКазачке 14.11.14✎ 16:47 | 
        (49) православный восьмёроШник не похвалит и напишет Истина = &ПараметрИстина     | |||
| 58
    
        Целина 14.11.14✎ 16:52 | 
        (52)особенно помогает в отладке конструкция типа на восьмерке
 Выполнить(Подсказка) кулаки аж трещат. | |||
| 59
    
        Целина 14.11.14✎ 16:55 | 
        вообще 1С так работает что любая нетривиальность в условиях без скобок сглючивает, просто с разной частотой     | |||
| 60
    
        Эльниньо 14.11.14✎ 17:43 | 
        (59) Спс. Учту     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |