Помогите правильно составить запрос

Тема в разделе "1C и всё что с ней связано", создана пользователем -, 8 апр 2009.

  1. Гость

    Доброе время суток.

    Не могу сделать запрос. Заранее спасибо

    В документе есть табличная часть в неё товары которые входят в разные групп.
    Я их все упорядочил определил суммы групп на который взят товар в документе
    пример
    канцелярии - 100р
    Прасходников 1500р

    И все это дело записал в ТЗ

    теперь не могу сообразить как теперь сделать что бы брать наименование группы из ТЗ и подставлять в запрос в часть условия и что бы по регистру(обороты) выдовал сумму.

    вот как делаю

    ТабЗнач.ВыбратьСтроки();
    Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с (НачКвартала(ТекущаяДата()));
    |Наименование = Регистр.рег_групп_тов.группа_товара.Наименование;
    |сумма = Регистр.рег_групп_тов.сумма;
    |Функция суммаСумма = Сумма(сумма);
    |Группировка Наименование без упорядочивания;
    |Условие(Наименование = строка(ТабЗнач.ГруппаТовараДок));
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
     
  2. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    1. Зачем фигачить запросы в цикле?
    2. В ТЗ вставляйте не наименования групп, а сами группы. Потом выгрузите колонку с группами в список значений и условие формируйте по списку значений.
    Код (Text):
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с (НачКвартала(ТекущаяДата()));
    |ГруппаТовара = Регистр.рег_групп_тов.группа_товара;
    |сумма = Регистр.рег_групп_тов.сумма;
    |Функция суммаСумма = Сумма(сумма);
    |Группировка ГруппаТовара упорядочить по ГруппаТовара.Наименование;
    |Условие(ГруппаТовара в СписокГрупп);
    |"//}}ЗАПРОС
     
  3. Гость

    1.у меня в табличной части может несколько товаров из разных групп и мне их надо подсчитать потому что надо контролировать суммы по группам товара
    2. в регистр пишится группа и сумма по группе. А зачем в цикле сначало что бы брал первое наименование группы из ТЗ проверял по условию потом брал второе и тд.

    Большое спасибо твой скриптик очень помог (натолкнул на правильную мысль)
    Во как сделал

    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с (НачКвартала(ТекущаяДата()));
    |Наименование = Регистр.рег_групп_тов.группа_товара;
    |сумма = Регистр.рег_групп_тов.сумма;
    |Функция суммаСумма = Сумма(сумма);
    |Группировка Наименование без упорядочить;
    |Условие(Наименование = ТабЗнач.ГруппаТовараДок);
     
  4. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Мать моя женщина... А если в документе будет 300 товаров? А если еще и пользователей будет по 50 человек. Сервак, спасайся, запросы атакуют!
     
  5. Гость

    ради интереса
    что ты предлогаеш
     
  6. ech

    ech Гость

    Если честно, изначально вопроса твоего не понял...либо я тугой, либо ты объясняешь не совсем понятно.

    Но составленый запрос в цикле ТЗ это конечно круто!
     
  7. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Ради интереса предлагаю тебе почитать теорию баз данных.
     
  8. Гость

    то есть вы предлогаете сделапть все с помошью СЗ
    Думаете будет быстрей работать
     
  9. kaa

    kaa Гость

    в отладчике есть такая штука как замер производительности, сделайте два варианта и проверьте :rolleyes:
     
  10. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Думаю! Уверен! А уверен именно потому, что думаю и знаю! А знаю, потому что читаю!
     
  11. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    А на пракике лично проверяете?
     
  12. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    практика без теории слепа, теория без практики беспредметна (с)
     
  13. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Ну разумеется. Но в данном случае можно и не проверять. Особенно, если знать, что происходит с запросом на сервере, поймете, что выборка данных одним запросом всегда кошерней, нежели кидать в цикле запросы и получать порциями. С одной оговоркой - следует учитывать размер запроса и количество возвращаемых данных.
     
Загрузка...

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