7.7 запрос по строкам

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем nikolau, 17 фев 2017.

  1. TopicStarter Overlay
    nikolau
    Offline

    nikolau

    Регистрация:
    17 фев 2017
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Всем привет, есть вот такой запрос:

    //*******************************************
    // Процедура генерации запроса Сформировать.
    //
    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Сотрудник = Регистр.ДвиженияПЛА.Сотрудник;
    |Маршрут = Регистр.ДвиженияПЛА.Маршрут;
    |ВыручкаПлан = Регистр.ДвиженияПЛА.ВыручкаПлан;
    |ВыручкаПригород = Регистр.ДвиженияПЛА.ВыручкаПригород;
    |Функция ВыручкаПланСумма = Сумма(ВыручкаПлан);
    |Функция ВыручкаПригородСумма = Сумма(ВыручкаПригород);
    |Группировка Сотрудник;
    |Группировка Маршрут;
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");

    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл

    // Заполнение полей Сотрудник
    //Таб.ВывестиСекцию("Сотрудник");
    Таб.ВывестиСекцию("Разд");
    тмпстр1=Таб.ВысотаТаблицы();

    Пока Запрос.Группировка(2) = 1 Цикл
    // Заполнение полей Маршрут
    Таб.ВывестиСекцию("Маршрут");

    КонецЦикла;
    тмпстр2=Таб.ВысотаТаблицы();
    // Сообщить(""+Запрос.ЗначениеУпорядочивания(1)+" / "+тмпстр1+"-"+тмпстр2);
    обл=Таб.Область(тмпстр1+1,2,тмпстр2,2);
    обл.Объединить();
    КонецЦикла;
    // Заполнение полей "Итого"
    Таб.ВывестиСекцию("Разд");
    Таб.ВывестиСекцию("Итого");
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.ПараметрыСтраницы(1,,,,,,,,,1,,);
    Таб.Показать("Сформировать", "");

    КонецПроцедуры

    сделал я его давно работает он нормально, но недавно в голову им пришла дичь, чтобы определенные маршруты только показывало. То есть надо чтоб он как-то по строкам выбирал как это сделать я не знаю и возможно ли это.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.611
    Симпатии:
    411
    Баллы:
    104
    Все зависит от того какого типа реквизит маршрут..
    Если это справочник, то добавьте просто условие в запрос Условие(Маршрут в ВыбМаршрут);
    где ВыбМаршрут реквизит формы запроса.
    Если Маршрут это строка, то в условии используйте конструкцию Найти
  3. TopicStarter Overlay
    nikolau
    Offline

    nikolau

    Регистрация:
    17 фев 2017
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Тоисть условие найти и строку как она должна называться и тогда он будет брать только эти строки
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.611
    Симпатии:
    411
    Баллы:
    104
    ну если маршрут у вас это строка..
    Пример ВыбМаршрут="45"

    Поиск=СокрЛП(ВыбМаршрут); //отсекаем пробелы реквизита формы
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Сотрудник = Регистр.ДвиженияПЛА.Сотрудник;
    |Маршрут = Регистр.ДвиженияПЛА.Маршрут;
    |ВыручкаПлан = Регистр.ДвиженияПЛА.ВыручкаПлан;
    |ВыручкаПригород = Регистр.ДвиженияПЛА.ВыручкаПригород;
    |Функция ВыручкаПланСумма = Сумма(ВыручкаПлан);
    |Функция ВыручкаПригородСумма = Сумма(ВыручкаПригород);
    |Группировка Сотрудник;
    |Группировка Маршрут;
    |Условие(Найти(Маршрут,Поиск)<>0);
    |"//}}ЗАПРОС
    ;
    В отчет попадут только строки где есть 45
  5. TopicStarter Overlay
    nikolau
    Offline

    nikolau

    Регистрация:
    17 фев 2017
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Спасибо большое попробую а то я просто в основном 8 занимаюсь а на 7 у нас только депечы сидят и я там редко что делаю поэтому познания не большие
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.611
    Симпатии:
    411
    Баллы:
    104

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