8.х Объединение запросов

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем FLoYD777, 22 июл 2009.

  1. TopicStarter Overlay
    FLoYD777
    Offline

    FLoYD777 Опытный в 1С

    Регистрация:
    4 май 2009
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    Помоготе с объединением запросов в Бухгалтерии 15.6

    Суть первого запроса: в запросе находятся позиции номенклатур имеющие движения за определенный период по определенному счету(41.01), определенной организации и определенному складу...

    Первый запрос:
    Код:
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |	ХозрасчетныйДвиженияССубконто.СубконтоДт1 КАК Субконто1,
    |	ХозрасчетныйДвиженияССубконто.Регистратор,
    |	ХозрасчетныйДвиженияССубконто.КоличествоДт,
    |	ХозрасчетныйДвиженияССубконто.КоличествоКт,
    |	ХозрасчетныйДвиженияССубконто.Регистратор.Дата КАК РегистраторДата,
    |	ХозрасчетныйДвиженияССубконто.СубконтоДт1.БазоваяЕдиницаИзмерения
    |ИЗ
    |	РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
    |			&НачалоПериода,
    |			&КонецПериода,
    |			Организация = &ВыбраннаяОрганизация
    |				И Субконто2 = &ВыбранныйСклад
    |				И СчетДт В (&СписокСчетов)) КАК ХозрасчетныйДвиженияССубконто
    |
    |УПОРЯДОЧИТЬ ПО
    |	Субконто1,
    |	РегистраторДата";
    Запрос.УстановитьПараметр("ВыбраннаяОрганизация", ВыбраннаяОрганизация);
    Запрос.УстановитьПараметр("ВыбранныйСклад", ВыбранныйСклад);
    Запрос.УстановитьПараметр("НачалоПериода", Период.ДатаНачала);
    Запрос.УстановитьПараметр("КонецПериода", КонецДня(Период.ДатаОкончания));
    Запрос.УстановитьПараметр("СписокСчетов", СписокСчетов);
    РезультатЗапроса = Запрос.Выполнить();
    
    Суть второго запроса: в запросе находятся позиции номенклатур имеющие начальный остаток на определенную дату и по определенному счету(41.01), определенной организации и определенному складу...
    Второй запрос
    Код:
    ЗапросПоОстаткам = Новый Запрос;
    ЗапросПоОстаткам.Текст =
    "ВЫБРАТЬ
    |	ОсновнойОстатки.Субконто1 КАК Субконто1,
    |	ОсновнойОстатки.КоличествоОстатокДт,
    |	ОсновнойОстатки.КоличествоОстаток КАК КоличествоОстатокКт
    |ИЗ
    |	РегистрБухгалтерии.Хозрасчетный.Остатки(
    |			&Период,
    |			Счет В (&СписокСчетов),
    |			,
    |			Организация = &ВыбраннаяОрганизация
    |				И Субконто2 = &ВыбранныйСклад) КАК ОсновнойОстатки";
    ЗапросПоОстаткам.УстановитьПараметр("СписокСчетов", СписокСчетов);
    ЗапросПоОстаткам.УстановитьПараметр("Период",      ?(Не ЗначениеЗаполнено(Период.ДатаНачала), (Период.ДатаНачала + 1), НачалоДня(Период.ДатаНачала)));
    ЗапросПоОстаткам.УстановитьПараметр("ВыбраннаяОрганизация", ВыбраннаяОрганизация);
    ЗапросПоОстаткам.УстановитьПараметр("ВыбранныйСклад", ВыбранныйСклад);
    РезультатЗапросПоОстаткам = ЗапросПоОстаткам.Выполнить();
    
    необходимо соединить данные запросы...
  2. TopicStarter Overlay
    FLoYD777
    Offline

    FLoYD777 Опытный в 1С

    Регистрация:
    4 май 2009
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    я делаю вот так:

    Код:
    ВЫБРАТЬ
    ОсновнойОстатки.Субконто1 КАК Субконто1,
    Null КАК Регистратор,
    0 КАК КоличествоДт,
    0 КАК КоличествоКт,
    "01.01.0001" КАК РегистраторДата,
    "" КАК БазоваяЕдиницаИзмерения,
    ОсновнойОстатки.КоличествоОстатокДт,
    ОсновнойОстатки.КоличествоОстаток КАК КоличествоОстатокКт
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(
    &Период,
    Счет В (&СписокСчетов),
    ,
    Организация = &ВыбраннаяОрганизация
    И Субконто2 = &ВыбранныйСклад) КАК ОсновнойОстатки
    
    Объединить
    
    ВЫБРАТЬ
    ХозрасчетныйДвиженияССубконто.СубконтоДт1 КАК Субконто1,
    ХозрасчетныйДвиженияССубконто.Регистратор,
    ХозрасчетныйДвиженияССубконто.КоличествоДт,
    ХозрасчетныйДвиженияССубконто.КоличествоКт,
    ХозрасчетныйДвиженияССубконто.Регистратор.Дата КАК РегистраторДата,
    ХозрасчетныйДвиженияССубконто.СубконтоДт1.БазоваяЕдиницаИзмерения,
    0 КАК КоличествоОстатокДт,
    0 КАК КоличествоОстатокКт
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
    &НачалоПериода,
    &КонецПериода,
    Организация = &ВыбраннаяОрганизация
    И Субконто2 = &ВыбранныйСклад
    И СчетДт В (&СписокСчетов)) КАК ХозрасчетныйДвиженияССубконто
    
    УПОРЯДОЧИТЬ ПО
    Субконто1,
    РегистраторДата
    
    но позиции по номенклатуре(субконто1) не объединяются... почему?? что я делаю неправильно??
  3. InterL@mersh@
    Offline

    InterL@mersh@

    Регистрация:
    17 июл 2009
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    А зачем их объединять? я так поняла нужны остатки и обороты по номенклатуре по одному и тому же складу, одной и той же организации, за один и тот же период. Почему не сделать одним запросом с использованием регистра РегистрБухгалетриии.Хозрасчетный.ОстаткиИОбороты?
  4. TopicStarter Overlay
    FLoYD777
    Offline

    FLoYD777 Опытный в 1С

    Регистрация:
    4 май 2009
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    совершенно верно это было и нужно, но начал делать и почему то у меня не показывались остатки... почему не показывались так и не выяснил... после чего начал копать типовые отчеты, в которых увидел, что все это делается с помощью двух запросов, но как они объединяются не понял... затем попался еще один типовой отчет "КарточкаСчета" в котором все это реализутся в одном запросе но через два источника "Остатки" и "Движения" и потом устанавливается связь между ними по Регистратору и НомеруСтроки... после чего решил начать все с начала и получился один запрос:
    Код:
    ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Субконто1,
    ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйРазвернутыйОстатокДт,
    ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйРазвернутыйОстатокКт,
    ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт,
    ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт,
    ХозрасчетныйОстаткиИОбороты.Регистратор
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор, , , , ) КАК ХозрасчетныйОстаткиИОбороты
    ГДЕ
    ХозрасчетныйОстаткиИОбороты.Организация = &Организация
    И ХозрасчетныйОстаткиИОбороты.Счет В(&СписокСчетов)
    И ХозрасчетныйОстаткиИОбороты.Субконто2 = &Субконто2
    
    
    который делает все что нужно=) и все довольны=))

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