Имя: Пароль:
1C
1С v8
Запрос по нескольким документам
0 prilforreal
 
25.09.18
16:44
Доброго дня, Миста! Столкнулся с такой задачей:
Нужно отобрать последние документы ДилЗаказ и ПечатьЗаказ по каждому контрагенту, проверить их дату и если последний документ старше 3х месяцев выпонить действие, составил 2 запроса, но как теперь проверить оба запроса не могу додуматься, чтобы последний ДилЗаказ И последний ПечатьЗаказ проверялись.

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

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

    РезДЗ = РезультатЗапроса.Выбрать();
    
    Пока РезДЗ.Следующий() Цикл
    Сообщить(РезДЗ.ДатаДЗ);
    Сообщить(РезДЗ.Дилер);
    КонецЦикла;
        
КонецПроцедуры
1 prilforreal
 
25.09.18
16:52
Если детальней описать:
Если ДатаПоследнегоДЗ и ДатаПоследнегоПЗ<ДатаСброса тогда
Контрагент.Ответственный=0;

Не ясно как совместить эти 2 условия
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший