|   |   | 
| 
 | Как убыстрить данный запрос? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Маленький Вопросик 16.04.14✎ 22:40 | 
        предлагаю "кусок" функции, как ее убыстрить?
 Остатки1 = Новый Запрос("ВЫБРАТЬ | ХозрасчетныйОстатки.СуммаОстаток КАК СуммаНоменклатуры, | ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоНоменклатуры |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки( | &Дата, | Счет = &Счет, | , | Субконто1 = &Номенклатура | И Субконто2 = &Склад | И Организация = &Организация) КАК ХозрасчетныйОстатки"); ОстаткиВмагазине.УстановитьПараметр("Номенклатура", Номенклатура); ОстаткиВмагазине.УстановитьПараметр("Склад", Склад); ОстаткиВмагазине.УстановитьПараметр("Организация", Организация); ОстаткиВмагазине.УстановитьПараметр("Дата", КонецДня(Дата)); ОстаткиВмагазине.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.11")); ОстаткиПоНоменклатуре = ОстаткиВмагазине.Выполнить().Выгрузить(); Если ОстаткиПоНоменклатуре.Количество()=0 Тогда Возврат 0; Иначе Возврат Номенклатура; КонецЕсли; | |||
| 1
    
        ДенисЧ 16.04.14✎ 22:41 | 
        Как минимум - субконты выразить     | |||
| 2
    
        Маленький Вопросик 16.04.14✎ 22:43 | 
        (1) а как максимум?
 как ВЫРАЗИТЬ??? | |||
| 3
    
        ДенисЧ 16.04.14✎ 22:45 | 
        (2) как максимум - заявление написать :-)
 А ВЫРАЗИТЬ - точно так, как описано в документации | |||
| 4
    
        Маленький Вопросик 16.04.14✎ 22:47 | 
        непонятно что во что нужно выражать     | |||
| 5
    
        vi0 16.04.14✎ 22:51 | 
        (4) с субконто вроде все ок
 сколько времени запрос выполняется? | |||
| 6
    
        Маленький Вопросик 16.04.14✎ 22:54 | 
        идея такая - есть документ реализации (100 строк) - на период создания документа нужно определить остаток позиции по каждой строке....     | |||
| 7
    
        ramir 16.04.14✎ 22:55 | 
        И что, на каждую строку по запросу?) Выгружай тч во временную таблицу и через join делай запрос. Так будет точно быстрее)     | |||
| 8
    
        Маленький Вопросик 16.04.14✎ 23:08 | 
        (7) через join - приведи примерчик     | |||
| 9
    
        Dionis Sergeevich 16.04.14✎ 23:15 | 
        (8) select * from Table1 as a
 inner join table2 as b on a.id = b.id вот тебе примерчик | |||
| 10
    
        ramir 16.04.14✎ 23:17 | 
        СОЕДИНЕНИЕ - это JOIN, про это-то уж знаешь?     | |||
| 11
    
        dimaldinho 16.04.14✎ 23:21 | 
        ВЫБРАТЬ РАЗЛИЧНЫЕ
 РеализацияТоваровУслугТовары.Номенклатура ПОМЕСТИТЬ ВТНоменклатура ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Ссылка = &Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ХозрасчетныйОстатки.СуммаОстаток ИЗ РегистрБухгалтерии.Хозрасчетный.Остатки( &Дата, Счет = &Счет, , Организация = &Организация И Субконто1 В (ВЫБРАТЬ ВТНоменклатура.Номенклатура ИЗ ВТНоменклатура КАК ВТНоменклатура) И Субконто2 = &Субконто2 И Субконто3 = &Субконто3) КАК ХозрасчетныйОстатки | |||
| 12
    
        Dionis Sergeevich 16.04.14✎ 23:22 | 
        (11) зачем тут вт? в подзапрос запрос по тч сунуть и все     | |||
| 13
    
        ramir 16.04.14✎ 23:25 | 
        (12) Видимо не знаешь, что из параметра можно выбирать только во временную таблицу.     | |||
| 14
    
        Hans 16.04.14✎ 23:25 | 
        (12) так отладить проще.     | |||
| 15
    
        ramir 16.04.14✎ 23:25 | 
        (12) Или это уже отменили?)     | |||
| 16
    
        Dionis Sergeevich 16.04.14✎ 23:28 | 
        (15) нет разницы, все отработает     | |||
| 17
    
        ramir 16.04.14✎ 23:31 | 
        В ~8.2.8 точно не работало.     | |||
| 18
    
        Ненавижу 1С гуру 16.04.14✎ 23:33 | 
        указать явно виды субконто в соответствующем параметре     | |||
| 19
    
        Dionis Sergeevich 16.04.14✎ 23:33 | 
        (17) ты имеешь ввиду что в параметрах виртуальной таблици нельзя использовать подзапросы? Проверю завтра - интересно стало     | |||
| 20
    
        sanja26 16.04.14✎ 23:55 | 
        ОстаткиПоНоменклатуре = ОстаткиВмагазине.Выполнить().Выгрузить();
 Если ОстаткиПоНоменклатуре.Количество()=0 Тогда В типовые не заглядывал? Сделай проверку на результат запроса, а потом уже выгрузку, если строк много. | |||
| 21
    
        sanja26 16.04.14✎ 23:57 | 
        (17) может не умеешь конструктор открывать в параметрах?)     | |||
| 22
    
        sanja26 16.04.14✎ 23:59 | 
        (5) с чего это ок?
 по релевантности сначали надо организацию, потом склад, потом номенклатуру | |||
| 23
    
        ramir 17.04.14✎ 00:12 | 
        (19) Из таблицы-параметра можно выбирать только во временную таблицу.     | |||
| 24
    
        Dionis Sergeevich 17.04.14✎ 00:19 | 
        (23) ты про передачу таблицы значений в параметр запроса? Так в (11) нет такого     | |||
| 25
    
        sanja26 17.04.14✎ 00:19 | 
        (23) Зачем свою таблицу подсовывать, если можно ее получить запросом, поместить в ВТ, а потом уже из нее выбирать в параметре     | |||
| 26
    
        Dionis Sergeevich 17.04.14✎ 00:21 | 
        я имею ввиду что так будет быстрее
 ВЫБРАТЬ ХозрасчетныйОстатки.СуммаОстаток ИЗ РегистрБухгалтерии.Хозрасчетный.Остатки( &Дата, Счет = &Счет, , Организация = &Организация И Субконто1 В (ВЫБРАТЬ РеализацияТоваровУслугТовары.Номенклатура ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Ссылка = &Ссылка) И Субконто2 = &Субконто2 И Субконто3 = &Субконто3) КАК ХозрасчетныйОстатки | |||
| 27
    
        ramir 17.04.14✎ 00:31 | 
        (25) По-хорошему нужно перед записью проверять.     | |||
| 28
    
        sanja26 17.04.14✎ 00:37 | 
        (26) это уже как религия. Я вот вложенных запросов избегаю вообще и разгребать их не нравится.     | |||
| 29
    
        Tobi906 17.04.14✎ 00:39 | 
        кто кто-то помогите и мне у меня тоже проблемы с запросом!!!
 v8: Помогите сделать Автозаполнение ТЧ при выборе значение из справочника! за раннее благодарю! | |||
| 30
    
        Dionis Sergeevich 17.04.14✎ 00:44 | 
        (28)вложенный запрос можно выполнить отдельно в консоли - там даже есть такое как выполнение только выделенного фрагмента - легко потдается анализу и отлаке. А куча временных таблиц в километровых запросах... одно мучение разбирать. КОгда создаются ВТ с выборкой из других ВТ. Ну просто геморой разобрать такое. Написать то много ума не надо. Дело вкуса конечно) Или действительно религии     | |||
| 31
    
        cons74 17.04.14✎ 08:20 | 
        (0) а еще можно посмотреть типовой механизм вывода остатка в форме подбора номенклатуры     | |||
| 32
    
        Drac0 17.04.14✎ 08:26 | 
        (25) во-первых, проверка обычно перед записью. Во-вторых, зачем делать лишнее обращение к БД, если нужные данные уже есть?     | |||
| 33
    
        Drac0 17.04.14✎ 08:28 | 
        (30) Запросы с ВТ просто стабильнее работают. Вложенные запросы могут так озадачить оптимизатор, что он выдаст абсолютно неадекватный план выполнения.     | |||
| 34
    
        ptiz 17.04.14✎ 08:46 | 
        Ввести новый РН по остаткам, заполнять его в подписке ПриЗаписи бух.регистра.
 Чуть замедлится запись, зато получение остатков будет летать! | |||
| 35
    
        AlexITGround 17.04.14✎ 08:52 | 
        (23) верно, только во временную, без к-л джоинов, а потом уже в след запросе пакеты делай, что нужно     | |||
| 36
    
        AlexITGround 17.04.14✎ 08:52 | 
        + 35 правда тут не тот случай :)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |