Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 11:34

Условие в запросе

Автор Nosferatu112, 03 июл 2023, 10:31

0 Пользователей и 1 гость просматривают эту тему.

Nosferatu112

Всем доброго времени суток, у меня есть вот такая задача
Screenshot_2.png
Решать я её начал так в процедуре при создании на сервере
Объект.ДанныеПоЗаказам.Очистить();
Статус = Новый СписокЗначений;
Статус.Добавить(Справочники.СтатусыКонтрагентов.НайтиПоНаименованию("Предрасторжение"));
Статус.Добавить(Справочники.СтатусыКонтрагентов.НайтиПоКоду("000000022"));
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.ДатаОтгрузки КАК ДатаОтгрузки,
| РеализацияТоваровУслуг.ДокументОснование КАК ДокументОснование
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыАдресовДоставок.СрезПоследних КАК СтатусыАдресовДоставокСрезПоследних
| ПО РеализацияТоваровУслуг.АдресДоставки = СтатусыАдресовДоставокСрезПоследних.АдресДоставки
|ГДЕ
| РеализацияТоваровУслуг.АдресДоставки.Ссылка = &Ссылка
| И СтатусыАдресовДоставокСрезПоследних.Статус В(&Статус)
| И РеализацияТоваровУслуг.ДатаОтгрузки > СтатусыАдресовДоставокСрезПоследних.Период
|
|УПОРЯДОЧИТЬ ПО
| ДатаОтгрузки";

Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Запрос.УстановитьПараметр("Статус", Статус);

РезультатЗапроса = Запрос.Выполнить();
Дан = Элементы.ДанныеПоЗаказам;
Выб = РезультатЗапроса.Выбрать();
НомерЗ = 0;                                       
Контроль = "Контроль 0";
Пока Выб.Следующий() Цикл

ТЧ = Объект.ДанныеПоЗаказам.Добавить();

НомерЗ = НомерЗ + 1;
ТЧ.Состояние = Контроль + НомерЗ;
ТЧ.ПорядокЗаказа = НомерЗ;
ТЧ.ДатаОтгрузкиЗаказа = Выб.ДатаОтгрузки;
КонецЦикла;

Вопрос как реализовать условие
При смене статусов на сопровождаемый, таблица заполняется до 6 заказа, если статус возращается к статусу "Предрасторжение" и/или "Восстановленный" отчет начинается весьтись с состояния "Контроль 1"
Заранее спасибо

LexaK

Nosferatu112, если вам нужно получить несколько документов, то вам надо убрать это условие
        |ГДЕ
        |//    РеализацияТоваровУслуг.АдресДоставки.Ссылка = &Ссылка
        |    СтатусыАдресовДоставокСрезПоследних.Статус В(&Статус)
        |    И РеализацияТоваровУслуг.ДатаОтгрузки > СтатусыАдресовДоставокСрезПоследних.Период
        |
непонятно странное ограничение 6-ю Заказами!
можно организовать так
Запрос.Текст =
        "ВЫБРАТЬ Первые 6
я бы еще проверку на проведенность документов добавил! так как НеПроведенные или Удаленные документы не должны попадать в результат
Объект.ДанныеПоЗаказам.Очистить();
    Статус = Новый СписокЗначений;
    Статус.Добавить(Справочники.СтатусыКонтрагентов.НайтиПоНаименованию("Предрасторжение"));
    Статус.Добавить(Справочники.СтатусыКонтрагентов.НайтиПоКоду("000000022"));
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ первые 6
        |    РеализацияТоваровУслуг.ДатаОтгрузки КАК ДатаОтгрузки,
        |    РеализацияТоваровУслуг.ДокументОснование КАК ДокументОснование
        |ИЗ
        |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыАдресовДоставок.СрезПоследних КАК СтатусыАдресовДоставокСрезПоследних
        |        ПО РеализацияТоваровУслуг.АдресДоставки = СтатусыАдресовДоставокСрезПоследних.АдресДоставки
        |ГДЕ
        |//    РеализацияТоваровУслуг.АдресДоставки.Ссылка = &Ссылка
        |    РеализацияТоваровУслуг.Проведен
        |    И СтатусыАдресовДоставокСрезПоследних.Статус В(&Статус)
        |    И РеализацияТоваровУслуг.ДатаОтгрузки > СтатусыАдресовДоставокСрезПоследних.Период
        |
        |УПОРЯДОЧИТЬ ПО
        |    ДатаОтгрузки";
   
    Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
    Запрос.УстановитьПараметр("Статус", Статус);
   
    РезультатЗапроса = Запрос.Выполнить();
    Дан = Элементы.ДанныеПоЗаказам;
    Выб = РезультатЗапроса.Выбрать();
    НомерЗ = 0;                                       
    Контроль = "Контроль 0";
    Пока Выб.Следующий() Цикл
       
        ТЧ = Объект.ДанныеПоЗаказам.Добавить();   
       
        НомерЗ = НомерЗ + 1;
        ТЧ.Состояние = Контроль + НомерЗ;
        ТЧ.ПорядокЗаказа = НомерЗ;
        ТЧ.ДатаОтгрузкиЗаказа = Выб.ДатаОтгрузки;
    КонецЦикла;
если помогло нажмите: Спасибо!

Nosferatu112

LexaK, Спасибо попробую сейчас,
А эта строка: РеализацияТоваровУслуг.АдресДоставки.Ссылка = &Ссылка
Для того что бы находились документы реализации для открытого в данный момент Адреса доставки
результат выглядит так:
Screenshot_3.png
 

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск