Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Объединение запросов          
Leva Подменю пользователя
сообщение 26.02.12, 21:18
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте, Уважаемые!

Помогите пожалуйста, как объединить два результата запросов в один.
Есть задача в которой нужно выводить отчет по движению товара за определенный период, а рядом с каждым товаром вывести отчет по его движению в прошлом году за тот же период.
Отчеты сделал, но как их теперь объединить по товару, чтобы был вид:
Артикул|Наименование|...............01.01.11-01.02.11..................|.....................01.01.12-01.02.12 .................... |
..................................| Нач. остаток |Приход|Расход|Кон. остаток| Нач. остаток |Приход|Расход|Кон. остаток|

Сообщение отредактировал logist - 26.02.12, 21:39
Причина редактирования: Не надо выделять кодом, то что не есть код

5_kopeek Подменю пользователя
сообщение 27.02.12, 0:39
Сообщение #2

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

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

    Если Запрос2.Выполнить(ТекстЗапроса2) = 0 Тогда
        Возврат;
    КонецЕсли;

    Таб = СоздатьОбъект("Таблица");

    Пока Запрос1.Группировка(1) = 1 Цикл
        Таб.ВывестиСекцию("Товар|Запрос1");
        Запрос2.Получить(Запрос1.Товар);
        Таб.ПрисоединитьСекцию("Товар|Запрос2");
    КонецЦикла;


Добавлю. Если нужно выводить и те товары, которые в текущем периоде не имели остатков/оборотов, а в прошлогоднем имели, то в первом запросе также необходимо для группировки указать ключевое слово Все. Чтобы избежать вывода строк с товарами, которые не имели итогов ни в каком периоде, можно добавить условие при формировании таблицы.

Сообщение отредактировал 5_kopeek - 27.02.12, 1:09

Ardi Подменю пользователя
сообщение 27.02.12, 1:25
Сообщение #3

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

ВЫБРАТЬ
    ЕСТЬNULL(ЗадолженностьЗаТООстаткиИОбороты.Квартира, ЗадолженностьЗаТООстаткиИОбороты1.Квартира) КАК Поле1,
    ЗадолженностьЗаТООстаткиИОбороты.ДолгНачальныйОстаток,
    ЗадолженностьЗаТООстаткиИОбороты.ДолгПриход,
    ЗадолженностьЗаТООстаткиИОбороты.ДолгРасход,
    ЗадолженностьЗаТООстаткиИОбороты.ДолгКонечныйОстаток,
    ЗадолженностьЗаТООстаткиИОбороты1.ДолгНачальныйОстаток КАК ДолгНачальныйОстаток1,
    ЗадолженностьЗаТООстаткиИОбороты1.ДолгПриход КАК ДолгПриход1,
    ЗадолженностьЗаТООстаткиИОбороты1.ДолгРасход КАК ДолгРасход1,
    ЗадолженностьЗаТООстаткиИОбороты1.ДолгКонечныйОстаток КАК ДолгКонечныйОстаток1
ИЗ
    РегистрНакопления.ЗадолженностьЗаТО.ОстаткиИОбороты(&НачТек, &КонТек, , , ) КАК ЗадолженностьЗаТООстаткиИОбороты1
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗадолженностьЗаТО.ОстаткиИОбороты(&НачПред, &КонПред, , , ) КАК ЗадолженностьЗаТООстаткиИОбороты
        ПО (ЗадолженностьЗаТООстаткиИОбороты.Квартира = ЗадолженностьЗаТООстаткиИОбороты1.Квартира)


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

5_kopeek Подменю пользователя
сообщение 27.02.12, 1:49
Сообщение #4

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Ardi, 7.7 wink.gif

sava1 Подменю пользователя
сообщение 27.02.12, 8:01
Сообщение #5

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2751
Из: Проскуров
Спасибо сказали: 707 раз
Рейтинг: 686.5

Ardi - запрос-то левый
И таблица не та, и периодичность не указана

По таблице - пардон

Сообщение отредактировал sava1 - 27.02.12, 8:00

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.25, 15:48
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!