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

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

  1. TopicStarter Overlay
    Smikka
    Offline

    Smikka

    Регистрация:
    8 дек 2008
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    1
    - книжка по конфигурированию в 8.1.

    А как сделать так чтобы они не заменялись, а оставалось 2 записи пусть и с одинаковами полями? :unsure:
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
  3. TopicStarter Overlay
    Smikka
    Offline

    Smikka

    Регистрация:
    8 дек 2008
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    1
    Да, но мне нужно оставить одинаковые строки!!!! :unsure:
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Покажи запрос, а то я не понимаю, что у тебя там не получается.
  5. TopicStarter Overlay
    Smikka
    Offline

    Smikka

    Регистрация:
    8 дек 2008
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    1
    Он оч длинный

    Код:
    ПостроительОтчетаОтчетПоПродажам.Текст =
    "ВЫБРАТЬ
    |	ВЛ.Номенклатура КАК Номенклатура,
    |	ВЛ.Цена КАК Цена,
    |	ВЛ.КоличествоНачальныйОстаток КАК ОстатокНачало,
    |	ВЛ.РезервНачало КАК РезервНачало,
    |	ВЛ.Поступление КАК Приход,
    |	СУММА(ВЛ.ВозвратПоставщ) КАК ВозвратТоваровПоставщику,
    |	СУММА(ВЛ.КоличествоОборот) КАК Расход,
    |	СУММА(ВЛ.КоличествоВозврат) КАК ВозвратТоваровОтПокупателя,
    |	ВЫБОР
    |		КОГДА ВЛ.РезервКонец - ВЛ.РезервНачало > 0
    |			ТОГДА ВЛ.РезервКонец - ВЛ.РезервНачало
    |		ИНАЧЕ 0
    |	КОНЕЦ КАК УвелРезерва,
    |	ВЫБОР
    |		КОГДА ВЛ.РезервНачало - ВЛ.РезервКонец > 0
    |			ТОГДА ВЛ.РезервНачало - ВЛ.РезервКонец
    |		ИНАЧЕ 0
    |	КОНЕЦ КАК УменРезерва,
    |	ВЛ.КоличествоКонечныйОстаток КАК ОстатокКонец,
    |	ВЛ.РезервКонец КАК РезервКонец,
    |	СУММА(ВЛ.СтоимостьОборот) КАК СуммаПродажи,
    |	ВЛ.СтоимостьСкидки КАК СуммаСкидки,
    |	СУММА(ВЛ.Нал) КАК Налом,
    |	СУММА(ВЛ.БезНал) КАК БезНал,
    |	ВЛ.Контрагент КАК Контрагент
    |ИЗ
    |	(ВЫБРАТЬ
    |		ПродажиОбороты.Номенклатура КАК Номенклатура,
    |		ПродажиОбороты.Регистратор.Контрагент КАК Контрагент,
    |		ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
    |		ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот,
    |		0 КАК КоличествоВозврат,
    |		0 КАК СтоимостьВозврат,
    |		0 КАК КоличествоНачальныйОстаток,
    |		0 КАК КоличествоКонечныйОстаток,
    |		0 КАК РезервНачало,
    |		0 КАК РезервКонец,
    |		NULL КАК Поступление,
    |		NULL КАК ВозвратПоставщ,
    |		ПродажиОбороты.СтоимостьБезСкидокОборот - ПродажиОбороты.СтоимостьОборот КАК СтоимостьСкидки,
    |		ВЫБОР
    |			КОГДА ПродажиОбороты.Регистратор.Сделка.Номер > 0
    |				ТОГДА ПродажиОбороты.СтоимостьОборот
    |			ИНАЧЕ 0
    |		КОНЕЦ КАК БезНал,
    |		ВЫБОР
    |			КОГДА ПродажиОбороты.Регистратор.Сделка.Номер > 0
    |				ТОГДА 0
    |			ИНАЧЕ ПродажиОбороты.СтоимостьОборот
    |		КОНЕЦ КАК Нал,
    |		NULL КАК Цена
    |	ИЗ
    |		РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Регистратор, ) КАК ПродажиОбороты
    |	ГДЕ
    |		ПродажиОбороты.КоличествоОборот > 0
    |		И ПродажиОбороты.ДокументПродажи.Склад = &Склад
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		ПродажиОбороты.Номенклатура,
    |		ПродажиОбороты.Регистратор.Контрагент,
    |		0,
    |		0,
    |		ПродажиОбороты.КоличествоОборот,
    |		ПродажиОбороты.СтоимостьОборот,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0
    |	ИЗ
    |		РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Регистратор, ) КАК ПродажиОбороты
    |	ГДЕ
    |		ПродажиОбороты.КоличествоОборот < 0
    |		И ПродажиОбороты.ДокументПродажи.Склад = &Склад
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		ПродажиОбороты.Номенклатура,
    |		ПродажиОбороты.Регистратор.Контрагент,
    |		0,
    |		0,
    |		0,
    |		0,
    |		ТоварыНаСкладахОстатки.КоличествоОстаток,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0
    |	ИЗ
    |		РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Регистратор, ) КАК ПродажиОбороты
    |			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата1, ) КАК ТоварыНаСкладахОстатки
    |			ПО ПродажиОбороты.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
    |	ГДЕ
    |		ТоварыНаСкладахОстатки.Склад = &Склад
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		ПродажиОбороты.Номенклатура,
    |		ПродажиОбороты.Регистратор.Контрагент,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		ТоварыНаСкладахОстатки.КоличествоОстаток,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0
    |	ИЗ
    |		РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Регистратор, ) КАК ПродажиОбороты
    |			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата2, ) КАК ТоварыНаСкладахОстатки
    |			ПО ПродажиОбороты.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
    |	ГДЕ
    |		ТоварыНаСкладахОстатки.Склад = &Склад
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		ПродажиОбороты.Номенклатура,
    |		ПродажиОбороты.Регистратор.Контрагент,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0
    |	ИЗ
    |		РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Регистратор, ) КАК ПродажиОбороты
    |			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки КАК ТоварыВРезервеНаСкладахОстатки
    |			ПО ПродажиОбороты.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура
    |	ГДЕ
    |		ТоварыВРезервеНаСкладахОстатки.Склад = &Склад
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		ПродажиОбороты.Номенклатура,
    |		ПродажиОбороты.Регистратор.Контрагент,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		ВЫБОР
    |			КОГДА ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ОприходованиеТоваров
    |					ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
    |					ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
    |				ТОГДА ТоварыНаСкладахОбороты.КоличествоПриход
    |			ИНАЧЕ 0
    |		КОНЕЦ,
    |		ВЫБОР
    |			КОГДА ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ВозвратТоваровПоставщику
    |				ТОГДА ТоварыНаСкладахОбороты.КоличествоРасход
    |			ИНАЧЕ 0
    |		КОНЕЦ,
    |		0,
    |		0,
    |		0,
    |		0
    |	ИЗ
    |		РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Регистратор, ) КАК ПродажиОбороты
    |			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(&Дата1, &Дата2, Регистратор, ) КАК ТоварыНаСкладахОбороты
    |			ПО ПродажиОбороты.Номенклатура = ТоварыНаСкладахОбороты.Номенклатура
    |	ГДЕ
    |		ТоварыНаСкладахОбороты.Склад = &Склад
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		ПродажиОбороты.Номенклатура,
    |		ПродажиОбороты.Регистратор.Контрагент,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		ЦеныНоменклатурыСрезПоследних.Цена
    |	ИЗ
    |		РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Регистратор, ) КАК ПродажиОбороты
    |			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата2, ) КАК ЦеныНоменклатурыСрезПоследних
    |			ПО ПродажиОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
    |	ГДЕ
    |		ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		ПродажиОбороты.Номенклатура,
    |		ПродажиОбороты.Регистратор.Контрагент,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0,
    |		0
    |	ИЗ
    |		РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Регистратор, ) КАК ПродажиОбороты
    |			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Дата2, ) КАК ТоварыВРезервеНаСкладахОстатки
    |			ПО ПродажиОбороты.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура
    |	ГДЕ
    |		ТоварыВРезервеНаСкладахОстатки.Склад = &Склад) КАК ВЛ
    |
    |СГРУППИРОВАТЬ ПО
    |	ВЛ.Номенклатура,
    |	ВЛ.КоличествоНачальныйОстаток,
    |	ВЛ.РезервНачало,
    |	ВЛ.Поступление,
    |	ВЛ.КоличествоКонечныйОстаток,
    |	ВЛ.РезервКонец,
    |	ВЛ.СтоимостьСкидки,
    |	ВЛ.Цена,
    |	ВЛ.Контрагент
    |ИТОГИ
    |	СУММА(Цена),
    |	СУММА(ОстатокНачало),
    |	СУММА(РезервНачало),
    |	СУММА(Приход),
    |	СУММА(ВозвратТоваровПоставщику),
    |	СУММА(Расход),
    |	СУММА(ВозвратТоваровОтПокупателя),
    |	СУММА(УвелРезерва),
    |	СУММА(УменРезерва),
    |	СУММА(ОстатокКонец),
    |	СУММА(РезервКонец),
    |	СУММА(СуммаПродажи),
    |	СУММА(СуммаСкидки),
    |	СУММА(Налом),
    |	СУММА(БезНал)
    |ПО
    |	ОБЩИЕ,
    |	Контрагент,
    |	Номенклатура ИЕРАРХИЯ";
    
    
    
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Ну так, блин, группировки убери...
  7. TopicStarter Overlay
    Smikka
    Offline

    Smikka

    Регистрация:
    8 дек 2008
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    1
    Все что ли?
    если убрать одно из полей (контрагент, например) то ругается.
  8. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Смотри, у тебя такая таблица (абстрактно) получается:
    Вася 100 - 50 - 100
    Вася 200 - 10 - 200
    Петя 300 - 20 - 400
    Петя 100 - 20- 400
    Олег 900 - 80 -300
    Вася 200 - 10 - 200

    Это твой результат объединения.

    А потом ты группируешь по контрагенту...
    Так как ты хочешь получить одинаковые строки?
    У тебя получиться всего три строки:
    Вася - сложенные суммы
    Петя - сложенные суммы
    Олег - сложенные суммы

    Поэтому, если нужны одинаковые строки - группировок не должно быть! Либо уж напиши, что именно ты хочешь оставить, а что сложить - в этом случае надо группировки применять по другому.

    Грубо говоря - так работает таблица остатков по РН: строки могут быть одинаковыми, но при получении остатков - они все суммируются и выдается только итог. Ты делаешь тоже самое!
  9. TopicStarter Overlay
    Smikka
    Offline

    Smikka

    Регистрация:
    8 дек 2008
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    1
    Если закомнтировать контра говорит что "Поле не входит в группу ВЛ.Контрагент <<?>> ВЛ.Контрагент как Контрагент"
    А если удалить всю группировку то все равно не правильно считает. Наверное ОБЪЕДИНИТЬ объединяет все же.


    У меня есть отчет в котором есть
    поля : строки:
    номенклатура номенклатура
    контрагент контрагент
    скидка
    приход
    расход
    и т.д.
    Это все в настройках отчета.

    Если выводить все с такими настройками, то получается много строк.
    Я же хотела бы выводить только номенклатуру, остатки и т.д. без контрагентов. При этом, если Контра оставляем в полях, получаем
    наименование | контр | остатки | и т.д.
    Если в строках, то
    Наименование |
    К о н т р а гент | скидка | и т.д.

    Т.е. тоже что и впредыдущем варианте, только наимен и контр в одном столбце.

    Мне бы хотелось удалить и из полей и из строк контра. Но тогда при выборке получается такая штука:
    например
    К о н т р | Наимен | скидка | нал | безнал
    Б елкин | _носки | __10__ | __100__ | 0
    Сорокин| _носки | __10__ | __100__ | 0
    А гапов | _шапка | __20__ | __0____ | 500
    Тишкина| _шапка | __10__ | __0____ | 500
    В итоге сумма скидки 50

    Удалив ото всюду Контра и после запроса получим:
    носки | 10 | 100 | 0
    шапка | 20 | 0 | 500
    шапка | 10 | 0 | 500
    В итоге сумма скидки 40.

    А мне надо чтобы остались все строки, и не важно что они одинаковые.
  10. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Честно говоря - мне сейчас некогда ваять такой отчет - но делов там на час с нуля :)

    Вы нарисуйте таблицу, что вы хотите получить (т.е. все колонки), а дальше собирайте ее - там все просто.
  11. TopicStarter Overlay
    Smikka
    Offline

    Smikka

    Регистрация:
    8 дек 2008
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    1
    этот отчет уже есть. только считает не правильно при опрределенных настройках. И мне кажется это из-за ОБЪЕДИНИТЬ
  12. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    У вас не из-за ОБЪЕДИНИТЬ, а из-за группировок.
  13. TopicStarter Overlay
    Smikka
    Offline

    Smikka

    Регистрация:
    8 дек 2008
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    1
    Эта группировка по полям т.к. запросов то много, из разных мест одни и теже поля выбираем.
    Сначала номенкл + контра + цену из РгСвединий это в одном влож.запросе,
    потом номенкл + контра + остаток из РгНакопления это в другом влож.запросе,
    Т.е. я так понимаю, что без группировки нельзя.

    на сайте каком-то нашла

    а у меня и при первом. пробовала т ьак и так - один результат
  14. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Понимаете, у вас сам запрос построен..... мммм.... странно!
    Код:
    "|СГРУППИРОВАТЬ ПО
    |    ВЛ.Номенклатура,
    |    ВЛ.КоличествоНачальныйОстаток,
    |    ВЛ.РезервНачало,
    |    ВЛ.Поступление,
    |    ВЛ.КоличествоКонечныйОстаток,
    |    ВЛ.РезервКонец,
    |    ВЛ.СтоимостьСкидки,
    |    ВЛ.Цена,
    |    ВЛ.Контрагент"
    
    
    Вдумайтесь в свои группировки!
    Код:
    "РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Регистратор, ) КАК ПродажиОбороты"
    
    
    Обороты по регистратору.... Смысл таких оборотов?

    Код:
    ВЫБОР
    |            КОГДА ПродажиОбороты.Регистратор.Сделка.Номер > 0
    
    
    У вас тут такое количество соединение возникает, что проще повеситься...
  15. TopicStarter Overlay
    Smikka
    Offline

    Smikka

    Регистрация:
    8 дек 2008
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    1
    Этот отчет вообще не я делала. Но т.к. в нем есть ошибка мне нужно с ней разобраться. А того программера найти невозможно. Вот и сижу.... :unsure:
    :smile:

    Людей долгое время все устраивало в отчете. Но потом решили поменять настройки....
  16. TopicStarter Overlay
    Smikka
    Offline

    Smikka

    Регистрация:
    8 дек 2008
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    1
    А СГРУППИРОВАТЬ это потому, что это ПостроительОтчета
  17. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    А что вообще надо в итоге получить?

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