Версия для печати темы (https://pro1c.org.ua/index.php?showtopic=15218)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Выборка в запросе док-ов с макс-й датой

Автор: bereznoy 31.10.13, 22:53

Задача из регистра накопления выбрать документы с последней датой прихода, вот запрос, выбирает дату не правильно, подскажите быть может что не так делаю

Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ПартииТоваровНаСкладах.Номенклатура КАК Товар,
                   |    ПартииТоваровНаСкладах.Номенклатура.Наименование КАК НоменклатураНаименование,
                   |    МАКСИМУМ(ПартииТоваровНаСкладах.ДокументОприходования) КАК Регистратор
                   |ИЗ
                   |    РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
                   |ГДЕ
                   |    ПартииТоваровНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    ПартииТоваровНаСкладах.Номенклатура,
                   |    ПартииТоваровНаСкладах.Номенклатура.Наименование
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    НоменклатураНаименование
                   |ИТОГИ ПО
                   |    Товар ТОЛЬКО ИЕРАРХИЯ
                   |АВТОУПОРЯДОЧИВАНИЕ";
                  
                  
    Запрос.УстановитьПараметр("ТекДата",КонецДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("Склад",Справочники.Склады.НайтиПоКоду("000000001"));    
    Запрос.УстановитьПараметр("Контрагент",Поставщик);
    Запрос.УстановитьПараметр("Номенклатура",Номенклатура);

Автор: sava1 01.11.13, 7:57

вот Последний документ для Контрагентов

|ВЫБРАТЬ
|      ПоследниеДокументыКонтрагентов.Ссылка,
|      ПоследниеДокументыКонтрагентов.Контрагент
|ИЗ Документ.РеализацияТоваровУслуг КАК ПоследниеДокументыКонтрагентов
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
|      (ВЫБРАТЬ
|            Доки.Контрагент КАК Контрагент,
|            МАКСИМУМ(Доки.Дата) КАК ДатаПоследнегоДокумента
|      ИЗ Документ.РеализацияТоваровУслуг КАК Доки
|СГРУППИРОВАТЬ ПО Доки.Контрагент)
|КАК ДатыПоследнихДокументовКонтрагентов
|ПО ПоследниеДокументыКонтрагентов.Контрагент =
|ДатыПоследнихДокументовКонтрагентов.Контрагент      
|И ПоследниеДокументыКонтрагентов.Дата =
|ДатыПоследнихДокументовКонтрагентов.ДатаПоследнегоДокумента";


для номенклатуры - аналогично

Автор: bereznoy 01.11.13, 21:02

Цитата(sava1 @ 01.11.13, 7:57) *
*****

для номенклатуры - аналогично




Запрос = Новый Запрос;   
Запрос.Текст = "ВЫБРАТЬ
               |    ПоступлениеТоваровУслугТовары.Ссылка КАК Регистратор,
               |    ДатыПоследнихДокументовКонтрагентов.Товар КАК Товар
               |ИЗ
               |    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
               |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               |            МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка.Дата) КАК Дата,
               |            ПоступлениеТоваровУслугТовары.Номенклатура КАК Товар
               |        ИЗ
               |            Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
               |        
               |        СГРУППИРОВАТЬ ПО
               |            ПоступлениеТоваровУслугТовары.Номенклатура) КАК ДатыПоследнихДокументовКонтрагентов
               |        ПО ПоступлениеТоваровУслугТовары.Номенклатура = ДатыПоследнихДокументовКонтрагентов.Товар
               |            И ПоступлениеТоваровУслугТовары.Ссылка.Дата = ДатыПоследнихДокументовКонтрагентов.Дата
               |ГДЕ
               |    ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ИСТИНА" + Условие + "
               |ИТОГИ ПО
               |    Товар ТОЛЬКО ИЕРАРХИЯ";

Автор: reneval 04.11.13, 1:23

                   
|    МАКСИМУМ(ПартииТоваровНаСкладах.ДокументОприходования) КАК Регистратор


Не канает при вводе документов задним числом. Максимум по ссылке будет, т.е. последний введенный.

Можно так (если производительность не важна)
                   
|    МАКСИМУМ(ПартииТоваровНаСкладах.ДокументОприходования.Дата) КАК Дата




Автор: XBrut 04.11.13, 8:40

поясните, если не сложно по-простому, а зачем именно два запроса к одной таблице и их потом соединять? сразу в одном запросе не можна?

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua