Как сделать отбор по субконто в запросе с использованием ТаблицыЗначений?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как сделать отбор по субконто в запросе с использованием ТаблицыЗначений?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #37871
      Фото аватараOdineski
      Участник

        Запрос.УстановитьПараметр(«ДатаОперации», Месяц);

        РезультатЗапроса = Запрос.Выполнить();

        // Создаем таблицу для группировки по видам услуг
        ТаблицаГруппировки = Новый ТаблицаЗначений;
        ТаблицаГруппировки.Колонки.Добавить(«ГруппаУслуг», Новый ОписаниеТипов(«Строка»));
        ТаблицаГруппировки.Колонки.Добавить(«СуммаБезНДС», Новый ОписаниеТипов(«Число», Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Любой)));
        ТаблицаГруппировки.Колонки.Добавить(«НДС», Новый ОписаниеТипов(«Число», Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Любой)));
        ТаблицаГруппировки.Колонки.Добавить(«Сумма», Новый ОписаниеТипов(«Число», Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Любой)));

        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        // Определяем группу услуги для субконто
        ГруппаУслуг = ОпределитьГруппуУслуги(ВыборкаДетальныеЗаписи.СубконтоТовары,
        ВыборкаДетальныеЗаписи.СубконтоУслуги,
        НастройкиРаспределения);

        // Добавляем или суммируем в таблице группировки
        СтрокаГруппы = ТаблицаГруппировки.Найти(ГруппаУслуг, «ГруппаУслуг»);
        Если СтрокаГруппы = Неопределено Тогда
        СтрокаГруппы = ТаблицаГруппировки.Добавить();
        СтрокаГруппы.ГруппаУслуг = ГруппаУслуг;
        СтрокаГруппы.СуммаБезНДС = 0;
        СтрокаГруппы.НДС = 0;
        СтрокаГруппы.Сумма = 0;
        КонецЕсли;

        СтрокаГруппы.СуммаБезНДС = СтрокаГруппы.СуммаБезНДС + ВыборкаДетальныеЗаписи.СуммаБезНДС;
        СтрокаГруппы.НДС = СтрокаГруппы.НДС + ВыборкаДетальныеЗаписи.НДС;
        СтрокаГруппы.Сумма = СтрокаГруппы.Сумма + ВыборкаДетальныеЗаписи.Сумма;
        КонецЦикла;

        // Выводим результат
        Для Каждого СтрокаГруппы Из ТаблицаГруппировки Цикл
        Сообщить(СтрокаГруппы.ГруппаУслуг + «: Без НДС=» +
        Формат(СтрокаГруппы.СуммаБезНДС, «ЧДЦ=2») +
        «, НДС=» + Формат(СтрокаГруппы.НДС, «ЧДЦ=2») +
        «, Итого=» + Формат(СтрокаГруппы.Сумма, «ЧДЦ=2»));
        КонецЦикла;

        КонецПроцедуры
        Надо сделать отбор в запросе субконтобу1 по субконто из Таблица

      • #37872
        bot_avaOdin — Одинэсник
        Участник

          Чтобы сделать отбор по субконто1 в запросе по значениям из ТаблицыЗначений, нужно:

          1. В запросе добавить параметр, например, &СписокСубконто.
          2. В тексте запроса в условии отбора использовать конструкцию Субконто1 В (&СписокСубконто).
          3. В коде перед выполнением запроса заполнить параметр СписокСубконто значениями из вашей ТаблицыЗначений.

          Пример:

          Если в запросе используется синтаксис 1С, то пример условия:

          Если у вас ТаблицаЗначений с большим количеством строк, можно использовать временную таблицу запроса (ВТ):

          В коде:

          Итог:
          — Если список субконто небольшой — проще передать массив в параметр и использовать В (&Параметр).
          — Если большой — лучше использовать временную таблицу запроса и соединение.

          Рекомендую посмотреть примеры работы с временными таблицами в запросах:
          https://infostart.ru/public/1616/
          https://infostart.ru/public/1330558/

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С