8.х Срочно!

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем mir-inoy, 2 июл 2007.

  1. TopicStarter Overlay
    mir-inoy
    Offline

    mir-inoy

    Регистрация:
    4 май 2007
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Нужен отчет по недополучению прибыли из-за отстутсвия товара на складе.
    Конфа 8.0 УТ 10.2.11.3, бьюсь уже много времени... Получилось выдернуть нужные сведения только таким запросом:
    Код:
    |ВЫБРАТЬ
    |ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
    |ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
    |ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
    |ТоварыНаСкладахОстаткиИОбороты.Период
    |ИЗ
    |РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , День, , ) КАК ТоварыНаСкладахОстаткиИОбороты
    |ГДЕ
    |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура = &Товар И
    |    ТоварыНаСкладахОстаткиИОбороты.Период МЕЖДУ &ДатаНачала И &ДатаКонца
    
    
    Но самое обидное в том, что для ОДНОГО товара запрос выполняется порядка 20 секунд... А требуется отчет сразу по группам товаров, то бишь по 1,5-2 тысячи наименований... Поставили на выходные, работает, но хотелось бы как-нить его ускорить... Есть альтернативный вариант этому запросу?
  2. 1010011010
    Offline

    1010011010 [1cworld]

    Регистрация:
    1 авг 2006
    Сообщения:
    582
    Симпатии:
    0
    Баллы:
    26
    А товары на складах ты с чем сравниваешь?
    выложи отчет.. внешней обработкой
  3. TopicStarter Overlay
    mir-inoy
    Offline

    mir-inoy

    Регистрация:
    4 май 2007
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    вот она :)
    правда примитивненько... начинающий всё-таки...

    Вложения:

  4. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Дело в том, что данный запрос построен не оптимальным образом.
    Вначале выбираются ВСЕ движения, затем из них выбирается нужный товар, и диапазон дат, это и приводит к диким тормозам.
    Более правильный код таков:

    Код:
    ......
    |ИЗ
    |РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала,&ДатаКонца , День,, Номенклатура = &Товар) КАК ТоварыНаСкладахОстаткиИОбороты
    .......
    
    Конструкция ГДЕ заменена на использование параметров виртуальной таблицы, что во много раз повышает эффективность кода.

    Успехов в работе :)

Поделиться этой страницей