7.7 запрос по строкам дока

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем fantas, 29 июл 2009.

  1. TopicStarter Overlay
    fantas
    Offline

    fantas Опытный в 1С

    Регистрация:
    12 июл 2006
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    выборка товаров с фильтрами:
    Код:
    ТекстЗапроса = 	
    "//{{ЗАПРОС(Сформировать)
    |Период с дата1  по дата2;
    |Обрабатывать НеПомеченныеНаУдаление;
    |ОбрабатыватьДокументы Проведенные;
    |Фирма = Документ.ПриходнаяНакладная.Фирма;
    |ТМЦ = Документ.ПриходнаяНакладная.ТМЦ;
    |Контрагент = Документ.ПриходнаяНакладная.Контрагент;
    |Склад = Документ.ПриходнаяНакладная.МестоХранения;
    |Док = Документ.ПриходнаяНакладная.текущийДокумент;
    |НомДок = Документ.ПриходнаяНакладная.НомерДок;
    |ДатДок = Документ.ПриходнаяНакладная.ДатаДок;
    |ЦенаСНДС = Документ.ПриходнаяНакладная.ЦенаСНДС;
    |ЦенаБезНДС = Документ.ПриходнаяНакладная.ЦенаБезНДС; 
    //|Валюта = Документ.ПриходнаяНакладная.Валюта.Кратко;
    |Количество = Документ.ПриходнаяНакладная.Кво;
    |Единица = Документ.ПриходнаяНакладная.Ед;
    |НомерПриходной = Документ.ПриходнаяНакладная.НомерПриходнойНакладной;
    |Условие(Контрагент в ВыбКонтра);	
    |Условие(Фирма в ВыбФирма);
    |Условие(Склад  в ВыбСклад);
    |Группировка Фирма упорядочить по Фирма.наименование;		
    |Группировка ТМЦ упорядочить по ТМЦ.наименование;		
    |Группировка Контрагент упорядочить по Контрагент.наименование; 
    |Группировка Док упорядочить по Док.ДатаДок;		
    |Группировка СтрокаДокумента;
    |"//}}ЗАПРОС
    ;
    
    Вопрос в том, что в одном доке есть один и тот же товар с разными ценами. Если брать без груп. строка дока (только груп. по доку):

    Код:
    |Группировка Контрагент упорядочить по Контрагент.наименование; 
    |Группировка Док упорядочить по Док.ДатаДок;		
    
    то в запрос попадет только одна строка дока с этим товаров (первая).

    Если просто взять груп. СтрокаДокумента

    Код:
    |Группировка Контрагент упорядочить по Контрагент.наименование;
    |Группировка СтрокаДокумента;
    
    то выборка неправильно формируется по датах: не все доки (большинство) попадают в нее.
    А если:

    Код:
    |Группировка Контрагент упорядочить по Контрагент.наименование; 
    |Группировка Док упорядочить по Док.ДатаДок;		
    |Группировка СтрокаДокумента;
    |"//}}ЗАПРОС;
    
    1С-ка очень долго думает - я результата так и не дождался за 15-20 мин.

    [warn="Внимание!!!"]Пользуемся тегами!!![/warn]
  2. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    А почему сначала идет группировка ТМЦ а потом по контрам? ИМХО логичнее наоборот, и расчет будет проще.

    А вообще сильно навороченный запрос. Попробуй сделать его проще. Например, выгрузить перебор документов-строк в ТЗ, а потом ее отсортируй и выведи.

    Попробуй представить себе результат запроса (таблицу).... если не сможешь, значит и компу будет это сложно сделать :)))))
  3. TopicStarter Overlay
    fantas
    Offline

    fantas Опытный в 1С

    Регистрация:
    12 июл 2006
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    я то представляю результат запроса (но видно 1С-ка долго думает над этим):
    думаю в группировке Док сделать выборку строк дока и точно будет работать без группировки СтрокаДокумента
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Не совсем уловил суть поставленной задачи, но что мешает сделать так:
    Код:
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ОбрабатыватьДокументы все;
    |Контрагент = Документ.Реализация.Контрагент;
    |Номенклатура = Документ.Реализация.Номенклатура;
    |Цена = Документ.Реализация.Цена;
    |ТекущийДокумент = Документ.Реализация.ТекущийДокумент;
    |ДатаДок = Документ.Реализация.ДатаДок;
    |Группировка ДатаДо;
    |Группировка Контрагентп;
    |Группировка Номенклатура без групп;
    |Группировка Цена без групп;
    
    
    
    и не нужно группировать по строкам (экспериментировал на другом документе но суть не меняется)
  5. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Только нет смысла делать группировку контров внутри группировки доков, с остальным полностью согласен.
  6. X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    439
    Симпатии:
    3
    Баллы:
    29
    А что, не может быть документов с разными контрагентами за одну дату? По-моему,запросто.
  7. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Запросто то запросто :))))
    но один документ с несколькими контрами (а именно это и получится в данном запросе) -- это уж врядли :)))

    Экспериментируй.
  8. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    А где тут по документам группировка? Только по дате документов есть. Так что нормально в одной дате по контрагентам группировку завести.
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    WaRDeR прав. Нужно только группировку контрагент заменить на ТекущийДокумент и все (возможно же в один теднь несколько документов по одному контрагенту. А интересует как я понял разная цена на одну номенклатуру в ОДНОМ документе
  10. TopicStarter Overlay
    fantas
    Offline

    fantas Опытный в 1С

    Регистрация:
    12 июл 2006
    Сообщения:
    104
    Симпатии:
    0
    Баллы:
    26
    Группировать по цене не подходит, может быть один тот же товар в разных доках за день иметь одну цену - тогда ее такую строку надо выводить дважды.
    Я сделал внутри груп. доков цикл по строкам дока с проверкой товар в строке доке = товар из запроса.
  11. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Читайте первый пост... будет видно "от куда ноги растут"...
  12. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Самый правильный вариант.
  13. X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    439
    Симпатии:
    3
    Баллы:
    29
    Ну значит моя Ска по-другому мыслит:)
  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Был в моей молодости, да и сейчас есть С++, а вот в альтернативу ей был проект С--. У тебя наверное второе....
  15. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Правильно она мыслит :))) моя так же.

    Но в первом посте и речи не шло о датах документа, только о самих документах....

    Остальное "прирасло" без участия автора :) (Посмотри по авторам посты)

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