8.х Листинг запроса

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем nbIpKuH_BaH9I, 29 ноя 2011.

  1. TopicStarter Overlay
    nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    Подежитесь пожалуйста справочной информацией. Вот код:

    Код:
    "
    |    Потребность.Поставщик,
    |    Потребность.Изделия, "  + СтрДоговоры_1 + СтрЗаявки_1 + СтрСпец_1 + "
    |    ЕСТЬNULL(КоличествоАванс.КоличествоСчет, 0) КАК КоличествоАванс
    |ПОМЕСТИТЬ Темп"
    
    или вот например
    Код:
    "
    |    ГДЕ
    |        уитФактРапортУМТО.КТ = ЗНАЧЕНИЕ Справочник.уитКонтрольныеТочки.СпецификацияОформлена)
    |        И уитФактРапортУМТО.Заказ = &Заказ "+СтрУсл+") КАК Аванс"
    
    Для каких целей вот эти строчки пишутся? Точнее в каких случаях?
    " + СтрДоговоры_1 + СтрЗаявки_1 + СтрСпец_1 + "

    "+СтрУсл+"
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Думаю что когда результат запроса зависит от каких-то условий, или переменных.
  3. Diego
    Offline

    Diego Любитель 1С Команда форума

    Регистрация:
    3 апр 2009
    Сообщения:
    966
    Симпатии:
    2
    Баллы:
    29
    Точнее ТЕКСТ запроса зависит от каких-то условий или переменных.
    А уж потом и результат...

    Например при определенных условиях в текст запроса могут добавляться дополнительные отборы, группировки и т.д.
  4. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Пара простых примеров для ясности:
    Допустим, пользователь на форме выбирает вид документа. И к этому документу Вам надо строить запрос.
    Т.е. в зависимости от выбора пользователя запрос идет либо к одному документу, либо к другому.
    Код:
    ВидДокумента = ЭлементыФормы.ВидДокумента.Значение;
    ...
    "ВЫБРАТЬ
    |    Ссылка
    |ИЗ Документ." + ВидДокумента + " КАК Док"
    
    Или Вы пишите отчет по остаткам товара. И если пользователь выбрал склад, то формируете остатки по этому складу. Если не выбрал, то по всем складам:
    Код:
    УсловиеСклада = "";
    Если ЗначениеЗаполнено(Склад) Тогда
    УсловиеСклада =УсловиеСклада + " ГДЕ Склад = &Склад";
    КонецЕсли;
    ...
    "ВЫБРАТЬ
    |...
    |ИЗ
    |...
    |" + УсловиеСклада + "
    |СГРУППИРОВАТЬ ПО
    |..."
    
  5. TopicStarter Overlay
    nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    Спасибо. А может есть про это где-то официальная документация. На диске ИТС например или в книге какой, или может просто статья?
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Какая может быть официальная документация? Это просто прием программирования. Еще раз, если брать пример который привел 1cUserAndrew по остаткам товара.


    Можно участок кода написать так:
    Код:
    УсловиеСклада = "";
    Если ЗначениеЗаполнено(Склад) Тогда
    УсловиеСклада =УсловиеСклада + " ГДЕ Склад = &Склад";
    КонецЕсли;
    ...
    "ВЫБРАТЬ
    |...
    |ИЗ
    |...
    |" + УсловиеСклада + "
    |СГРУППИРОВАТЬ ПО
    |..."
    
    
    а можно так:
    Код:
    Если ЗначениеЗаполнено(Склад) Тогда
    
    ТекстЗапроса =
    "ВЫБРАТЬ
    |...
    |ИЗ
    |...
    | ГДЕ Склад = &Склад
    |СГРУППИРОВАТЬ ПО
    |..."
    
    Иначе
    
    ТекстЗапроса =
    "ВЫБРАТЬ
    |...
    |ИЗ
    |...
    |СГРУППИРОВАТЬ ПО
    |..."
    
    КонецЕсли;
    
    

    и в том и в другом случае результат будет одинаков.
    Идет простая работа со строками, вам надо просто сформировать текст (строку) запроса.
  7. Diego
    Offline

    Diego Любитель 1С Команда форума

    Регистрация:
    3 апр 2009
    Сообщения:
    966
    Симпатии:
    2
    Баллы:
    29
    Несколько почти одинаковых запросов как-то некошерно писать. Если только от большой лени :angry:

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

    Первоначально, перед проверкой готового запроса, не выполняю его, а вывожу через "Сообщить" и сравниваю с теми вариантами, которые делал консолью. Обычно мелкие косяки вылезают: то запятой где-то нет, то знака "I" в начале строки.
    Если тексты полностью совпадают, то можно и Выполнить.Выгрузить;

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