8.х вопрос про запрос

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Muggsy, 17 дек 2009.

  1. TopicStarter Overlay
    Muggsy
    Offline

    Muggsy одно ЭС

    Регистрация:
    10 сен 2008
    Сообщения:
    243
    Симпатии:
    0
    Баллы:
    26
    есть запрос, берущий 20 самых продаваемых товаров
    по ним надо вывести контрагентов, поставивших(!) этот товар
    запрос:
    Код:
    ВЫБРАТЬ ПЕРВЫЕ 20
    ТоварыНаскладахОбороты.Номенклатура КАК Номенклатура,
    СУММА(ТоварыНаскладахОбороты.КоличествоРасход) КАК КоличествоРасход,
    СУММА(ТоварыНаскладахОбороты.СуммаРасход) КАК СуммаРасход,
    ТоварыНаскладахОбороты1.Регистратор.Контрагент
    ИЗ
    РегистрНакопления.ТоварыНаскладах.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ТоварыНаскладахОбороты
    Левое СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаскладах.Обороты(, , Регистратор, ) КАК ТоварыНаскладахОбороты1
    ПО ТоварыНаскладахОбороты.Номенклатура = ТоварыНаскладахОбороты1.Номенклатура
    ГДЕ
    ТоварыНаскладахОбороты.Организация = &орг
    И ТоварыНаскладахОбороты1.Организация = &орг
    И ТоварыНаскладахОбороты1.Регистратор = тип Документссылка.ПриходнаяНакладная
    
    СГРУППИРОВАТЬ ПО
    ТоварыНаскладахОбороты.Номенклатура,
    ТоварыНаскладахОбороты1.Регистратор.Контрагент
    
    УПОРЯДОЧИТЬ ПО
    КоличествоРасход УБЫВ
    ИТОГИ
    СУММА(КоличествоРасход),
    СУММА(СуммаРасход)
    ПО
    Номенклатура
    
    
    
    я решила вытягивать контрагентов из второй таблицы взяв ограничение по регистратору, он дожен быть типа приходная накладная. а вот как написать это корректно не знаю.
    помогите, подскажите :unsure:
  2. Абырвалг
    Offline

    Абырвалг Опытный в 1С

    Регистрация:
    8 дек 2009
    Сообщения:
    112
    Симпатии:
    1
    Баллы:
    29
    Код:
    И ТоварыНаскладахОбороты1.Регистратор = тип Документссылка.ПриходнаяНакладная
    
    В запросе пишется так:
    Код:
    И ТоварыНаскладахОбороты1.Регистратор Ссылка Документ.ПриходнаяНакладная
    
    Вот это соединение нафига делаешь:
    Код:
    	РегистрНакопления.ТоварыНаскладах.Обороты(&;НачалоПериода, &;КонецПериода, Регистратор, ) КАК ТоварыНаскладахОбороты
    Левое СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаскладах.Обороты(, , Регистратор, ) КАК ТоварыНаскладахОбороты1
    
    ?
  3. Абырвалг
    Offline

    Абырвалг Опытный в 1С

    Регистрация:
    8 дек 2009
    Сообщения:
    112
    Симпатии:
    1
    Баллы:
    29
    А, понял зачем. ну да, как вариант...
  4. TopicStarter Overlay
    Muggsy
    Offline

    Muggsy одно ЭС

    Регистрация:
    10 сен 2008
    Сообщения:
    243
    Симпатии:
    0
    Баллы:
    26
    спасибо огромное! напомнили :)
    хотя я еще способ придумала:)
    это вместо того проблемного условия
    Код:
    И ТоварыНаскладахОбороты1.КоличествоПриход > 0
    
    
    но он какой-то топорный :)
  5. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Что это у Вас за конфигурация, где в регистре "ТоварыНаСкладах" сумма есть? И метод поиска поставщика у Вас неверный. Таким образом (еще и далеко не всегда) Вы найдете контрагента, который поставлял такой товар. Но совсем не обязатаельно, что именно проданный товар. Для решения Вашей задачи, Вам нужны партии.
  6. Абырвалг
    Offline

    Абырвалг Опытный в 1С

    Регистрация:
    8 дек 2009
    Сообщения:
    112
    Симпатии:
    1
    Баллы:
    29
    ну самописная по всей видимости. Не понимаю что плохого в наличии ресурса "Сумма" в регистре накопления "ТоварыНаСкладах"
    Как-то очень категорично, вполне приемлимый метод поиска. Если рег накопления "ТоварыНаСкладах" в + двигает только док-т "Документы.ПриходнаяНакладная", то найдет то что надо, причем, думаю, всегда.
    Ну а какая разница между веником, который привезли 10.10.09 и веником, который привезли 11.12.09? Их всё равно привезли, свалили в кучу и совсем не важно какой партии товар, им просто нужны поставщики, которые поставляют веники, а не именно тот веник, который продали вчера. По-моему, партии могут помочь, если есть смысл партионного учета, но если это один тот же товар просто от разных поставщиков, то зачем вводить партии?
  7. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Интересно стало - вот и спросил. Причем не Вас.
    Вы хоть представляете, что данный запрос вернет?
    Разница в том, что если некто Абырвалг поставил Muggsy 10.10.09 один веник, и он был продан 11.10.09, а некто ASh поставил 11.12.09 1000 веников, которые были успешно проданы в декабре, то, наверно, Muggsy заинтересует ASh как поставщик, а не Абырвалг, который вылезет первой строчкой в отчете за декабрь. И это даже без стоимости поставки.
  8. Абырвалг
    Offline

    Абырвалг Опытный в 1С

    Регистрация:
    8 дек 2009
    Сообщения:
    112
    Симпатии:
    1
    Баллы:
    29
    Представляем, но наверное не то что вы :)
    Если веники абсолютно одинаковые, сделанные в корее, а Абырвалг продаёт веники по 56р, а ASh по 154р, уж поверьте Muggsy заинтересует ASh как поставщик намного меньше, чем Абырвалг :). И, кстати, первой строчкой со своими вениками по 156р вылезет именно ASh ;)
  9. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Они и видно, что что-то не то Вы представляете

    Несмотря на то, что Вы даже в собственносочиненных ценах путаетесь и не имеете понятия о том, что будет в выборке первым, предоставьте уж Muggsy выбирать, что ее заинтересует больше - Текущий поставщик или воспоминания о прошлой дешивизне.
  10. Абырвалг
    Offline

    Абырвалг Опытный в 1С

    Регистрация:
    8 дек 2009
    Сообщения:
    112
    Симпатии:
    1
    Баллы:
    29
    ASh
    а что надо представлять? :)
    Когда спор проигран остаётся только цепляться за мелочи, чтобы надавить на несущественную часть спора и показаться умнее :)
    Ну то есть, вы согласны, что если веники одинаковые, то важны другие аспекты выбора поставщика, такие как цена, скорость поставок, предоставление отсрочки оплаты итд итп, но партии нах не нужны в данной ситуации и ваше предложение обязательно вводить партии ошибочно? :)



    а да :)
    Я знаю, что будет в выборке первым :)
  11. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Нужно хотябы понимать, что данный запрос будет возвращать по каждой позиции номенклатуры ВСЕХ поставщиков, которые когда-либо ее поставляли. Таким образом в результате может быть не 20 позиций номенклатуры, как нужно автору, а одна и 20 поставщиков. Также было бы неплохо понимать, что ворочать тысячами строк, ради получения доп информации о 20 позициях не есть нормальный метод построения запроса.

    Я с Вами не спорил, ибо не о чем спорить с человеком непонимающим предмет разговора. А лишь хотел указать Muggsy на ее нерациональное решение задачи.

    Я вообще ничего не говорил ни про какие аспекты выбора поставщика. А партии привел в пример лишь как одно из правильных решений задачи.
    Первой в выборку попадет приходная накладная, которая была заведена раньше, т.е. из предыдущего примера именно с контрагентом Абырвалг. Только ненадо тут сейчас придумывать, что тот документ могли занести позже декабрьских и по текущему индексу документ будет находиться в выборке ниже.
  12. Абырвалг
    Offline

    Абырвалг Опытный в 1С

    Регистрация:
    8 дек 2009
    Сообщения:
    112
    Симпатии:
    1
    Баллы:
    29
    Да есть такое, согласен :)
    Я всё равно не понимаю зачем нужны партии, если товар одинаковый :)
    Ну, конечно, не говорил:
    1.
    2.
    Но, как поможет в этой ситуации:
    ===
    Хм, я думаю, что попадет первым, тот поставщик, который был первым создан, ну да наверное ошибаюсь, но ничего, переживу :)
  13. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Я, надеюсь последний раз, еще раз пишу, что партии были предложены как удачный вариант решения задачи. Автор нигде не писала, что у нее нетиповая без партий конфигурация. Вчитайтесь в условие задачи:
    есть запрос, берущий 20 самых продаваемых товаров
    по ним надо вывести контрагентов, поставивших(!) этот товар
  14. Абырвалг
    Offline

    Абырвалг Опытный в 1С

    Регистрация:
    8 дек 2009
    Сообщения:
    112
    Симпатии:
    1
    Баллы:
    29
    Я это видел, да, согласен, что есть ошибка в запросе с выбором первых 20 строк, что выберет она не первые 20 номенклатур, а первые 20 строк.
    та не считаю я партии хорошим вариантом решения задачи, ради одного отчета вести партионный учет, хотя при построении отчета вполне можно обойтись и без партий, я даже считаю плохо вести партионный учет, если можно обойтись без него.

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