Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
01 фев 2023, 20:00

Исключить из выборки запроса по тексту

Автор Andra, 18 окт 2022, 09:44

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

Andra

Здравствуйте, подскажите пожалуйста. Есть внешняя обработка для создания Заказа покупателя на основе нескольких заказов. При создании нового документа в комментарий записывается текст "Сводный заказ" для исключения из поиска, в документах из которых берется номенклатура после создания Сводного заказа в комментарий также пишется текст вида "Документ основание для + Номер + Дата нового документа". Как в запросе можно исключить из поиска старые документы, использованные для создания сводного заказа именно по части текста в комментарии?
ВЫБРАТЬ
ЗаказПокупателя.Ссылка КАК Документ,
ИСТИНА КАК ФлагОтбора,
ЗаказПокупателя.СуммаДокумента КАК СуммаДокумента,
ЗаказПокупателя.Номер КАК Номер
ИЗ
Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
ЗаказПокупателя.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
И ЗаказПокупателя.Проведен = &Проведен
И ЗаказПокупателя.Контрагент = &Контрагент
И ЗаказПокупателя.Организация = &Организация
И (НЕ ЗаказПокупателя.Комментарий ПОДОБНО &КомментарийЗаказаОснования1
ИЛИ НЕ ЗаказПокупателя.Комментарий ПОДОБНО &КомментарийЗаказаОснования2)

antoneus

В чем проблема? Строка для подобно нужна?

НЕ ЗаказПокупателя.Комментарий ПОДОБНО "%Документ основание для%"
так пойдет?

Andra

antoneus, так пробовал, конфигуратор ругается, не распознает как часть запроса

LexaK

а зачем так сложно?
1. у вас есть куча мелких заказиков (проведены)
2. собираем их в один общий, тоже проводим
3. соответственно заказы из п.1 распроводим (иначе будут задвоения!)

вот в запросе и берите только проведенные заказы, за исключением общего(общих) примерно так

ВЫБРАТЬ
    ЗаказПокупателя.Ссылка КАК Документ,
    ИСТИНА КАК ФлагОтбора,
    ЗаказПокупателя.СуммаДокумента КАК СуммаДокумента,
    ЗаказПокупателя.Номер КАК Номер
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
    ЗаказПокупателя.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    И ЗаказПокупателя.Проведен = Истина //&Проведен - всегда только проведенные
    И ЗаказПокупателя.Контрагент = &Контрагент
    И ЗаказПокупателя.Организация = &Организация
    И НЕ ЗаказПокупателя.Комментарий ПОДОБНО "%Сводный заказ%" //убираем общие
     

я бы еще в запросе и товарную часть получил, и "свернул/сложил" бы ее, но это уже вопрос опримизации
если помогло нажмите: Спасибо!

Andra

LexaK, по задаче старые не нужно распроводить, а просто их "пометить", что они использованы для другого сводного заказа, я при создании им в комментарий прописываю то, что указал выше, но т.к. номера и даты различаются, то по тексту "Документ основание для" запрос не срабатывает как я понимаю, нужно именно полный комментарий? А сам сводный заказ исключается как раз по условию примерно как вы и указали, потому что текст всегда одинаковый.

antoneus

Код, на котором ошибка выскакивает можно посмотреть?

LexaK

Andra,
Цитироватьа просто их "пометить",
что за "пометка" ?
тогда по ней отбирайте нужные (т.е. в запросе выбирайте еще "не помеченные")
если помогло нажмите: Спасибо!

antoneus

"Пометка" - это комментарий, как я понимаю.

antoneus

Вот такой код у меня отрабатывает и не ругается ни на что.

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказКлиента.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
|ГДЕ
| НЕ ЗаказКлиента.Комментарий ПОДОБНО ""%Основание для заказа%""";

Выборка = Запрос.Выполнить().Выбрать();
Сообщить(Выборка.Количество())

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск