Ошибка выполнения запроса

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. vadim28 05.06.15 15:21 Сейчас в теме
В отчёте формируется запрос. После его выполнения выдаётся сообщение об ошибке:
{Форма.ФормаОтчета.Форма(221)}: Ошибка при вызове метода контекста (Выполнить)
РезультатПоГруппам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
по причине:
{(65, 2)}: Неоднозначное поле "Артикул"
<<?>>Артикул,
Не могу найти в каком именно месте он неоднозначен. Сам запрос:
Запрос.Текст = "ВЫБРАТЬ
| спрНоменклатура.Ссылка КАК Номенклатура,
| СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоРеализация,
| СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаРеализация,
| спрНоменклатура.СтавкаНДС КАК СтавкаНДС,
| СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК НДСРеализация,
| СУММА(РеализацияТоваровУслугТовары.СуммаРучнойСкидки) КАК СкидкаРеализация,
| спрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,";
Если Отчет.Группе Тогда
Запрос.Текст = Запрос.Текст + "
| спрНоменклатура.Родитель.Наименование КАК Артикул";
ИначеЕсли Отчет.Артикулу Тогда
Запрос.Текст = Запрос.Текст + "
| спрНоменклатура.Артикул КАК Артикул";
Иначе
КонецЕсли;
Запрос.Текст = Запрос.Текст + "
|ПОМЕСТИТЬ Реализация
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
| Внутреннее соединение Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
| по РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И РеализацияТоваровУслуг.Проведен = ИСТИНА
| И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугТовары.Ссылка
| Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура
| по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка
| И СпрНоменклатура.Родитель В(&СписокНоменклатуры)
|СГРУППИРОВАТЬ ПО
| Артикул,
| СпрНоменклатура.ссылка
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|ВЫБРАТЬ
| спрНоменклатура.Ссылка КАК Номенклатура,
| СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоВозврат,
| СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаВозврат,
| спрНоменклатура.СтавкаНДС КАК СтавкаНДС,
| СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК НДСВозврат,
| спрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,";
Если Отчет.Группе Тогда
Запрос.Текст = Запрос.Текст + "
| спрНоменклатура.Родитель.Наименование КАК Артикул";
ИначеЕсли Отчет.Артикулу Тогда
Запрос.Текст = Запрос.Текст + "
| спрНоменклатура.Артикул КАК Артикул";
Иначе
КонецЕсли;
Запрос.Текст = Запрос.Текст + "
|ПОМЕСТИТЬ Возврат
|ИЗ
| Документ.ВозвратТоваровОтПокупателя.Товары КАК РеализацияТоваровУслугТовары
| Внутреннее соединение Документ.ВозвратТоваровОтПокупателя КАК РеализацияТоваровУслуг
| по РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И РеализацияТоваровУслуг.Проведен = ИСТИНА
| И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугТовары.Ссылка
| Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура
| по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка
| И СпрНоменклатура.Родитель В(&СписокНоменклатуры)
|СГРУППИРОВАТЬ ПО
| Артикул,
| СпрНоменклатура.Ссылка
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|ВЫБРАТЬ
| ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) КАК Номенклатура,
| СУММА(ЕСТЬNULL(Реализация.КоличествоРеализация, 0) - ЕСТЬNULL(Возврат.КоличествоВозврат, 0)) КАК Количество,
| СУММА(ЕСТЬNULL(Реализация.СуммаРеализация, 0) - ЕСТЬNULL(Возврат.СуммаВозврат, 0)) КАК Сумма,
| СУММА(ЕСТЬNULL(Реализация.НДСРеализация, 0) - ЕСТЬNULL(Возврат.НДСВозврат, 0)) КАК НДС,
| СУММА(ЕСТЬNULL(Реализация.СкидкаРеализация, 0)) КАК Скидка
|ИЗ
| Реализация КАК Реализация
| ПОЛНОЕ СОЕДИНЕНИЕ Возврат КАК Возврат
| ПО Реализация.Номенклатура = Возврат.Номенклатура
| И Реализация.Артикул = Возврат.Артикул
|СГРУППИРОВАТЬ ПО
| ЕСТЬNULL(Реализация.Артикул, Возврат.Артикул),
| ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура)
|УПОРЯДОЧИТЬ ПО
| Артикул,
| спрНоменклатура.Наименование
|ИТОГИ
| СУММА(Количество),
| СУММА(Сумма),
| СУММА(Скидка),
| СУММА(НДС)
|ПО
| Артикул,
| Номенклатура";

Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(Отчет.Период.ДатаНачала));
Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(Отчет.Период.ДатаОкончания));
Запрос.УстановитьПараметр("СписокНоменклатуры", МассивГрупп);
РезультатПоГруппам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Прикрепленные файлы:
Запрос.txt
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
42. ture 606 09.06.15 12:01 Сейчас в теме
(1) vadim28,
ВЫБРАТЬ 
	n.Ссылка                         КАК Номенклатура, 
	n.СтавкаНДС                      КАК СтавкаНДС, 
	n.ЕдиницаИзмерения.Представление КАК Ед,
	n.Артикул                        КАК Артикул,
	СУММА(t.Количество)              КАК КоличествоРеализация, 
	СУММА(t.Сумма)                   КАК СуммаРеализация, 	
	СУММА(t.СуммаНДС)                КАК НДСРеализация, 
	СУММА(t.СуммаРучнойСкидки)       КАК СкидкаРеализация
	 
	
ПОМЕСТИТЬ Реализация 
ИЗ 
	Документ.РеализацияТоваровУслуг КАК d
	левое соединение  Документ.РеализацияТоваровУслуг.Товары КАК t 	по(d.Ссылка = t.Ссылка) 
	
	левое соединение Справочник.Номенклатура КАК n 	по(t.Номенклатура = n.Ссылка 
	                                                   И n.Родитель В(&СписокНоменклатуры))

где
	d.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
	И d.Проведен 
	                                                                       
СГРУППИРОВАТЬ ПО 
	n.Ссылка, 
	n.СтавкаНДС, 
	n.ЕдиницаИзмерения.Представление,
	n.Артикул
Показать
43. ture 606 09.06.15 12:07 Сейчас в теме
(1) vadim28,
ВЫБРАТЬ 
	n.Ссылка                         КАК Номенклатура, 
	n.СтавкаНДС                      КАК СтавкаНДС, 
	n.ЕдиницаИзмерения.Представление КАК Ед,
	n.Артикул                        КАК Артикул,
	СУММА(t.Количество) КАК КоличествоВозврат, 
	СУММА(t.Сумма)      КАК СуммаВозврат, 	
	СУММА(t.СуммаНДС)   КАК НДСВозврат 
	

ПОМЕСТИТЬ Возврат 
ИЗ 
	Документ.ВозвратТоваровОтПокупателя КАК d 
	левое соединение Документ.ВозвратТоваровОтПокупателя.Товары КАК t   по(d.Ссылка = t.Ссылка)
	
	Внутреннее соединение Справочник.Номенклатура КАК n по(t.Номенклатура = n.Ссылка 
	                                                       И n.Родитель В(&СписокНоменклатуры)) 
где
	d.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
	И d.Проведен

СГРУППИРОВАТЬ ПО 
	n.Ссылка, 
	n.СтавкаНДС, 
	n.ЕдиницаИзмерения.Представление,
	n.Артикул
Показать
44. ture 606 09.06.15 12:13 Сейчас в теме
(1) vadim28,
ВЫБРАТЬ 
	n.Ссылка                         КАК Номенклатура, 
	n.СтавкаНДС                      КАК СтавкаНДС, 
	n.ЕдиницаИзмерения.Представление КАК Ед,
	n.Артикул                        КАК Артикул,

	t.Количество              КАК КоличествоРеализация, 
	t.Сумма                   КАК СуммаРеализация, 	
	t.СуммаНДС                КАК НДСРеализация, 
	t.СуммаРучнойСкидки       КАК СкидкаРеализация,	 
	0                         КАК СкидкаРеализация
	0                         КАК КоличествоВозврат, 
	0                         КАК СуммаВозврат, 	
	0                         КАК НДСВозврат 
	 


ИЗ 
	Документ.РеализацияТоваровУслуг КАК d
	левое соединение  Документ.РеализацияТоваровУслуг.Товары КАК t 	по(d.Ссылка = t.Ссылка) 
	
	левое соединение Справочник.Номенклатура КАК n 	по(t.Номенклатура = n.Ссылка 
	                                                   И n.Родитель В(&СписокНоменклатуры))

где
	d.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
	И d.Проведен 
	                                                                       
union ALL

 

ВЫБРАТЬ 
	n.Ссылка                         КАК Номенклатура, 
	n.СтавкаНДС                      КАК СтавкаНДС, 
	n.ЕдиницаИзмерения.Представление КАК Ед,
	n.Артикул                        КАК Артикул,

	0                                КАК КоличествоРеализация, 
	0                                КАК СуммаРеализация, 	
	0                                КАК НДСРеализация, 
	0                                КАК СкидкаРеализация
	t.Количество                     КАК КоличествоВозврат, 
	t.Сумма                          КАК СуммаВозврат, 	
	t.СуммаНДС                       КАК НДСВозврат 
ИЗ 
	Документ.ВозвратТоваровОтПокупателя КАК d 
	левое соединение Документ.ВозвратТоваровОтПокупателя.Товары КАК t   по(d.Ссылка = t.Ссылка)
	
	Внутреннее соединение Справочник.Номенклатура КАК n по(t.Номенклатура = n.Ссылка 
	                                                       И n.Родитель В(&СписокНоменклатуры)) 
где
	d.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
	И d.Проведен
Показать
46. ture 606 09.06.15 12:19 Сейчас в теме
(1) vadim28,
выбрать 
	t.Номенклатура, 
	t.СтавкаНДС, 
	t.Ед,
	t.Артикул,

	сумма(t.КоличествоРеализация) как КоличествоРеализация, 
	сумма(t.СуммаРеализация)      как СуммаРеализация,  	
	сумма(t.НДСРеализация)        как НДСРеализация, 
	сумма(t.СкидкаРеализация)     как СкидкаРеализация, 
	
	сумма(t.КоличествоВозврат)    как КоличествоВозврат, 
	сумма(t.СуммаВозврат)         как СуммаВозврат, 
	сумма(t.НДСВозврат)           как НДСВозврат

поместить ИТОГО_
из
(ВЫБРАТЬ 
	n.Ссылка                         КАК Номенклатура, 
	n.СтавкаНДС                      КАК СтавкаНДС, 
	n.ЕдиницаИзмерения.Представление КАК Ед,
	n.Артикул                        КАК Артикул,

	t.Количество              КАК КоличествоРеализация, 
	t.Сумма                   КАК СуммаРеализация, 	
	t.СуммаНДС                КАК НДСРеализация, 
	t.СуммаРучнойСкидки       КАК СкидкаРеализация,	 
	0                         КАК КоличествоВозврат, 
	0                         КАК СуммаВозврат, 	
	0                         КАК НДСВозврат 
	 


ИЗ 
	Документ.РеализацияТоваровУслуг КАК d
	левое соединение  Документ.РеализацияТоваровУслуг.Товары КАК t 	по(d.Ссылка = t.Ссылка) 
	
	левое соединение Справочник.Номенклатура КАК n 	по(t.Номенклатура = n.Ссылка 
	                                                   И n.Родитель В(&СписокНоменклатуры))

где
	d.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
	И d.Проведен 
	                                                                       
union ALL

 

ВЫБРАТЬ 
	n.Ссылка                         КАК Номенклатура, 
	n.СтавкаНДС                      КАК СтавкаНДС, 
	n.ЕдиницаИзмерения.Представление КАК Ед,
	n.Артикул                        КАК Артикул,

	0                                КАК КоличествоРеализация, 
	0                                КАК СуммаРеализация, 	
	0                                КАК НДСРеализация, 
	0                                КАК СкидкаРеализация
	t.Количество                     КАК КоличествоВозврат, 
	t.Сумма                          КАК СуммаВозврат, 	
	t.СуммаНДС                       КАК НДСВозврат 
ИЗ 
	Документ.ВозвратТоваровОтПокупателя КАК d 
	левое соединение Документ.ВозвратТоваровОтПокупателя.Товары КАК t   по(d.Ссылка = t.Ссылка)
	
	Внутреннее соединение Справочник.Номенклатура КАК n по(t.Номенклатура = n.Ссылка 
	                                                       И n.Родитель В(&СписокНоменклатуры)) 
где
	d.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
	И d.Проведен

) как t

СГРУППИРОВАТЬ ПО 
	t.Номенклатура, 
	t.СтавкаНДС, 
	t.Ед,
	t.Артикул
Показать
48. vadim28 09.06.15 12:39 Сейчас в теме
(46) ture, много сильно. Не знаю как будет работать по времени.
Есть вариант проще. Как его лучше осуществить.
Вот код:
|            |ВЫБРАТЬ
		    |	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) КАК Номенклатура,
			|   ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1) КАК Артикул,			
		    |	СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
			|	СпрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,
		    |	СУММА(ЕСТЬNULL(Реализация.КоличествоРеализация, 0) - ЕСТЬNULL(Возврат.КоличествоВозврат, 0)) КАК Количество,
		    |	СУММА(ЕСТЬNULL(Реализация.СуммаРеализация, 0) - ЕСТЬNULL(Возврат.СуммаВозврат, 0)) КАК Сумма,
		    |	СУММА(ЕСТЬNULL(Реализация.НДСРеализация, 0) - ЕСТЬNULL(Возврат.НДСВозврат, 0)) КАК НДС,
			|	СУММА(ЕСТЬNULL(Реализация.СкидкаРеализация, 0)) КАК Скидка
		    |ИЗ
		    |	Реализация КАК Реализация
		    |	ПОЛНОЕ СОЕДИНЕНИЕ Возврат КАК Возврат
		    |	ПО Реализация.Номенклатура = Возврат.Номенклатура
//		    |	И Реализация.Артикул_1 = Возврат.Артикул_1
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	По Реализация.Номенклатура = СпрНоменклатура.Ссылка 
		    |СГРУППИРОВАТЬ ПО
            |	ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1),
            |	СтавкаНДС,
			|	Ед,
            |	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура)

|СГРУППИРОВАТЬ ПО 
Показать

Как его правильно объединить со справочником, чтобы не надо было группировать по полю Ед и СтавкаНДС и другим полям из справочника?
49. ditp 91 09.06.15 12:41 Сейчас в теме
(48) vadim28, вынести запрос по документам во вложенный, там сгруппировать, и потом объединить со справочником.
50. ture 606 09.06.15 12:44 Сейчас в теме
(48) vadim28, я там в конце собрал нечто "ИТОГО_", которое надо правильно свернуть.
левое к номенклатуре полюбому уже есть из-за
n.Родитель В(&СписокНоменклатуры)


Быстро или нет - это у меня не вопрос попадания в индексы, а вопрос размера массива данных.
Свернуть - это не соединить. Я, ясен пень, за свой вариант.
51. vadim28 09.06.15 13:19 Сейчас в теме
(50) ture, это - n.Родитель В(&СписокНоменклатуры) - выборка, но не соединение.
ИЗ 
    Документ.ВозвратТоваровОтПокупателя КАК d 
    левое соединение Документ.ВозвратТоваровОтПокупателя.Товары КАК t   по(d.Ссылка = t.Ссылка)
    
    Внутреннее соединение Справочник.Номенклатура КАК n по(t.Номенклатура = n.Ссылка 
                                                           И n.Родитель В(&СписокНоменклатуры)) 
где
    d.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
    И d.Проведен
Показать

Вот соединение. Внутреннее или левое, но соединение.
Как соединить вот этот кусок:
|ВЫБРАТЬ
            |    ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) КАК Номенклатура,
            |   ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1) КАК Артикул,            
            |    СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
            |    СпрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,
            |    СУММА(ЕСТЬNULL(Реализация.КоличествоРеализация, 0) - ЕСТЬNULL(Возврат.КоличествоВозврат, 0)) КАК Количество,
            |    СУММА(ЕСТЬNULL(Реализация.СуммаРеализация, 0) - ЕСТЬNULL(Возврат.СуммаВозврат, 0)) КАК Сумма,
            |    СУММА(ЕСТЬNULL(Реализация.НДСРеализация, 0) - ЕСТЬNULL(Возврат.НДСВозврат, 0)) КАК НДС,
            |    СУММА(ЕСТЬNULL(Реализация.СкидкаРеализация, 0)) КАК Скидка
            |ИЗ
            |    Реализация КАК Реализация
            |    ПОЛНОЕ СОЕДИНЕНИЕ Возврат КАК Возврат
            |    ПО Реализация.Номенклатура = Возврат.Номенклатура
            |    Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
            |    По Реализация.Номенклатура = СпрНоменклатура.Ссылка 
Показать

Я, явно неправильно соединяю.
Как правильно это сделать?
52. ture 606 09.06.15 13:27 Сейчас в теме
(51) vadim28, Когда левое, то левая таблица за основу берется, для построения фильтра по правой, но все строки одной сравниваются со всеми строками другой.
Когда внутреннее соединение, то оптимизатор считает их равноправными и сам решает с какой начать, а может и две сразу просмотреть и выбрать, а потом соединить.
Когда полное соединение, то хз (так ламеры делают).

Пишите так как работает, если разницы не наблюдается, т.к. в этом случае таблички маленькие и оптимизаторы глубого покласть на наши ожидания и он в параллель может сразу всю таблицу считывать.

Оптимизировать станете, когда начнутся тормоза, тогда и станет очевидно, какая табличка большая и как из нее поменьше выбрать лишнего.
53. karpik666 3778 09.06.15 13:36 Сейчас в теме
(51) vadim28, капец, блин, вопрос в стиле "научите меня программировать", почитайте вначале это Изучение запросов. Но судя по вашим комментариям, вы и сам все "прекрасно знаете", но не понимаете почему просто не рабоает
57. vadim28 09.06.15 14:13 Сейчас в теме
(53) karpik666, подскажите разницу между этими кодами.
1:
		Запрос.Текст = "ВЫБРАТЬ
			|	СпрНоменклатура.Ссылка КАК Номенклатура, 
			|	СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество, 
			|	СУММА(РеализацияТоваровУслугТовары.Сумма) КАК Сумма, 
            |	СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
            |	СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК НДС,
			|	СУММА(РеализацияТоваровУслугТовары.СуммаРучнойСкидки) КАК Скидка, 
			|	СпрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,";
		Если Отчет.Группе Тогда
			Запрос.Текст = Запрос.Текст + "
		    |   СпрНоменклатура.Родитель.Наименование КАК Артикул";
	   	ИначеЕсли Отчет.Артикулу Тогда
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.Артикул КАК Артикул"; 
			Иначе
		КонецЕсли;
			Запрос.Текст = Запрос.Текст + "
			|ИЗ 
			|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары 
			|	Внутреннее соединение Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг 
			|	по РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
			|	И РеализацияТоваровУслуг.Проведен = ИСТИНА 
			|	И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугТовары.Ссылка 
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка 
			|	И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
			|
			|СГРУППИРОВАТЬ ПО 
			|	Артикул, 
			|	СпрНоменклатура.Ссылка 
			|УПОРЯДОЧИТЬ ПО 
Показать


2:
            |ВЫБРАТЬ
		    |	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) КАК Номенклатура,
			|   ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1) КАК Артикул,			
		    |	СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
			|	СпрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,
		    |	СУММА(ЕСТЬNULL(Реализация.КоличествоРеализация, 0) - ЕСТЬNULL(Возврат.КоличествоВозврат, 0)) КАК Количество,
		    |	СУММА(ЕСТЬNULL(Реализация.СуммаРеализация, 0) - ЕСТЬNULL(Возврат.СуммаВозврат, 0)) КАК Сумма,
		    |	СУММА(ЕСТЬNULL(Реализация.НДСРеализация, 0) - ЕСТЬNULL(Возврат.НДСВозврат, 0)) КАК НДС,
			|	СУММА(ЕСТЬNULL(Реализация.СкидкаРеализация, 0)) КАК Скидка
		    |ИЗ
		    |	Реализация КАК Реализация
		    |	ПОЛНОЕ СОЕДИНЕНИЕ Возврат КАК Возврат
		    |	ПО Реализация.Номенклатура = Возврат.Номенклатура
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	По ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) = СпрНоменклатура.Ссылка 
		    |СГРУППИРОВАТЬ ПО
            |	ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1),
            |	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура)
			|УПОРЯДОЧИТЬ ПО 
			|	Артикул, 
			|	Номенклатура 
Показать

Как видим, почти одинаковы, но в 1-м группировка не нужна. В группу входит. Во 2-м уже нет и нужна группировка.
В чём разница? где ошибка?
54. StBender 09.06.15 13:44 Сейчас в теме
(51) vadim28, вы что хотите получить?
Внутреннее соединение это выборка данных из обоих таблиц только удовлетворяющих условию.
Левое - выборка всех записей из левой таблицы, и тех записей из таблицы, которые удовлетворяют условия соединения.
Полное - это выборка как записей по условию соединения, так и всех остальных, которые не подходят по условию.
56. vadim28 09.06.15 14:10 Сейчас в теме
(54) StBender, это уже будет оптимизация. То потом.
Сейчас не об этом.
Сейчас про ошибки и соединение.
вот код, дошёл до этого момента:
            |ВЫБРАТЬ
		    |	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) КАК Номенклатура,
			|   ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1) КАК Артикул,			
		    |	СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
			|	СпрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,
		    |	СУММА(ЕСТЬNULL(Реализация.КоличествоРеализация, 0) - ЕСТЬNULL(Возврат.КоличествоВозврат, 0)) КАК Количество,
		    |	СУММА(ЕСТЬNULL(Реализация.СуммаРеализация, 0) - ЕСТЬNULL(Возврат.СуммаВозврат, 0)) КАК Сумма,
		    |	СУММА(ЕСТЬNULL(Реализация.НДСРеализация, 0) - ЕСТЬNULL(Возврат.НДСВозврат, 0)) КАК НДС,
			|	СУММА(ЕСТЬNULL(Реализация.СкидкаРеализация, 0)) КАК Скидка
		    |ИЗ
		    |	Реализация КАК Реализация
		    |	ПОЛНОЕ СОЕДИНЕНИЕ Возврат КАК Возврат
		    |	ПО Реализация.Номенклатура = Возврат.Номенклатура
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	По ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) = СпрНоменклатура.Ссылка 
		    |СГРУППИРОВАТЬ ПО
Показать

Выдаёт ошибку что не входит в группу.
СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,

и строка:
			|   ЕСТЬNULL(Реализация.СтавкаНДСРеализация, Возврат.СтавкаНДСВозврат) КАК СтавкаНДС,			

Выводит пустоту?
58. vadim28 09.06.15 14:16 Сейчас в теме
(54) StBender, пробую разные варианты, но, либо пустота, либо группы.
Добавлю в группу.
59. StBender 09.06.15 14:56 Сейчас в теме
(58) vadim28, ещё вопрос. А в первых двух запросах группировки остались? Если остались, то в третьем они вам не нужны.
60. vadim28 09.06.15 15:00 Сейчас в теме
(59) StBender, Да, остались.
		Запрос.Текст = "ВЫБРАТЬ
			|	СпрНоменклатура.Ссылка КАК Номенклатура, 
			|	СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоРеализация, 
			|	СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаРеализация, 
            |	СпрНоменклатура.СтавкаНДС КАК СтавкаНДСРеализация,
            |	СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК НДСРеализация,
			|	СУММА(РеализацияТоваровУслугТовары.СуммаРучнойСкидки) КАК СкидкаРеализация, 
			|	СпрНоменклатура.ЕдиницаИзмерения.Представление КАК ЕдРеализация,
			|ВЫБОР 
			|    КОГДА
			|      &ФлагГруппе=Истина 
			|    ТОГДА
			|      СпрНоменклатура.Родитель.Наименование
			|    ИНАЧЕ
			|      СпрНоменклатура.Артикул
			|КОНЕЦ КАК Артикул_1
            |ПОМЕСТИТЬ Реализация
			|ИЗ 
			|    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары 
            |    Внутреннее соединение 
            |    Справочник.Номенклатура КАК СпрНоменклатура 
            |    по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка
            |ГДЕ
            |    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
            |    И РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА 
            |    И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
			|СГРУППИРОВАТЬ ПО"; 
		Если Отчет.Группе Тогда
			Запрос.Текст = Запрос.Текст + "
		    |   СпрНоменклатура.Родитель.Наименование,";
	   	ИначеЕсли Отчет.Артикулу Тогда
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.Артикул,"; 
		КонецЕсли;
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.Ссылка 
            |;
            |
            |////////////////////////////////////////////////////////////­////////////////////
		    |ВЫБРАТЬ
			|	СпрНоменклатура.Ссылка КАК Номенклатура, 
			|	СУММА(ВозвратТоваровТовары.Количество) КАК КоличествоВозврат, 
			|	СУММА(ВозвратТоваровТовары.Сумма) КАК СуммаВозврат, 
            |	СпрНоменклатура.СтавкаНДС КАК СтавкаНДСВозврат,
            |	СУММА(ВозвратТоваровТовары.СуммаНДС) КАК НДСВозврат,
			|	СпрНоменклатура.ЕдиницаИзмерения.Представление КАК ЕдВозврат,
			|ВЫБОР 
			|    КОГДА
			|      &ФлагГруппе=Истина 
			|    ТОГДА
			|      СпрНоменклатура.Родитель.Наименование
			|    ИНАЧЕ
			|      СпрНоменклатура.Артикул
			|КОНЕЦ КАК Артикул_1
            |ПОМЕСТИТЬ Возврат
			|ИЗ 
			|    Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровТовары 
            |    Внутреннее соединение 
            |    Справочник.Номенклатура КАК СпрНоменклатура 
            |    по ВозвратТоваровТовары.Номенклатура = СпрНоменклатура.Ссылка
            |ГДЕ
            |    ВозвратТоваровТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
            |    И ВозвратТоваровТовары.Ссылка.Проведен = ИСТИНА 
            |    И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
			|СГРУППИРОВАТЬ ПО"; 
		Если Отчет.Группе Тогда
			Запрос.Текст = Запрос.Текст + "
		    |   СпрНоменклатура.Родитель.Наименование,";
	   	ИначеЕсли Отчет.Артикулу Тогда
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.Артикул,"; 
		КонецЕсли;
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.Ссылка 
            |;
            |
            |////////////////////////////////////////////////////////////­////////////////////
            |ВЫБРАТЬ
		    |	СпрНоменклатура.Ссылка КАК Номенклатура,
			|   ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1) КАК Артикул,			
		    |	СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
			|	СпрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,
		    |	СУММА(ЕСТЬNULL(Реализация.КоличествоРеализация, 0) - ЕСТЬNULL(Возврат.КоличествоВозврат, 0)) КАК Количество,
		    |	СУММА(ЕСТЬNULL(Реализация.СуммаРеализация, 0) - ЕСТЬNULL(Возврат.СуммаВозврат, 0)) КАК Сумма,
		    |	СУММА(ЕСТЬNULL(Реализация.НДСРеализация, 0) - ЕСТЬNULL(Возврат.НДСВозврат, 0)) КАК НДС,
			|	СУММА(ЕСТЬNULL(Реализация.СкидкаРеализация, 0)) КАК Скидка
		    |ИЗ
		    |	Реализация КАК Реализация
		    |	ПОЛНОЕ СОЕДИНЕНИЕ Возврат КАК Возврат
		    |	ПО Реализация.Номенклатура = Возврат.Номенклатура
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	По ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) = СпрНоменклатура.Ссылка 
		    |СГРУППИРОВАТЬ ПО
            |	ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1),
//            |   СтавкаНДС,
			|	СпрНоменклатура.Ссылка
//            |	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура)
			|УПОРЯДОЧИТЬ ПО 
			|	Артикул, 
			|	Номенклатура 
			|ИТОГИ 
			|	СУММА(Количество), 
			|	СУММА(Сумма), 
			|	СУММА(Скидка), 
			|	СУММА(НДС)
			|ПО 
			|	Артикул,
			|	Номенклатура";					   
Показать

Может удалить группировки по Артикул из 1-х двух?
64. ture 606 09.06.15 15:03 Сейчас в теме
(60) vadim28, кто ж Вас так научил таблички соединять?
я ж иначе показывал
71. vadim28 09.06.15 15:15 Сейчас в теме
(64) ture, через Левое соединение?
Попробую, но, что-то мне подсказывает, что дело таки в другом.
68. ture 606 09.06.15 15:12 Сейчас в теме
(60) vadim28, Вот это кто насоветовал?
ВЫБОР 
            |    КОГДА
            |      &ФлагГруппе=Истина 
            |    ТОГДА
            |      СпрНоменклатура.Родитель.Наименование
            |    ИНАЧЕ
            |      СпрНоменклатура.Артикул
            |КОНЕЦ КАК Артикул_1


Если не СКД, то за ЭТО надо сразу с ноги советчику.
69. StBender 09.06.15 15:13 Сейчас в теме
(68) ture, насоветовал я. Почему с ноги?)
72. vadim28 09.06.15 15:45 Сейчас в теме
(69) StBender, А вот тут и начинаются чудеса.
Вот этот код 1:
			|Из
			|	Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровТовары 
			|	Внутреннее соединение Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровУслуг 
			|	по ВозвратТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
			|	И ВозвратТоваровУслуг.Проведен = ИСТИНА 
			|	И ВозвратТоваровУслуг.Ссылка = ВозвратТоваровТовары.Ссылка 
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	по ВозвратТоваровТовары.Номенклатура = СпрНоменклатура.Ссылка 
			|	И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
Показать

оказывается намного быстрее чем 2:
			|ИЗ 
			|    Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровТовары 
            |    Внутреннее соединение 
            |    Справочник.Номенклатура КАК СпрНоменклатура 
            |    по ВозвратТоваровТовары.Номенклатура = СпрНоменклатура.Ссылка
            |ГДЕ
            |    ВозвратТоваровТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
            |    И ВозвратТоваровТовары.Ссылка.Проведен = ИСТИНА 
            |    И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
Показать

Разница огромная.
1-й код работает 2-5 сек, а 2-й от 2-х минут.
73. vadim28 09.06.15 15:46 Сейчас в теме
(69) StBender, корректно, не всегда оказывается быстро.
75. ture 606 09.06.15 15:54 Сейчас в теме
(69) StBender, Ну скажем так:
1) Много исходных строк и каждую надо выбрать
2) а потом ОБРАБОТАТЬ, и это не простенькая агрегатная функция, а целый кейс (если,тогда)
3) а результат вычисления кейса известен заранее, т.е. еще когда запрос строится.

Что вызывает тормоза по важности:
1) попал рядом с индексом
2) нацеплял левых соединений
3) наделал много кейсов, которые мог бы избежать

Вы попали в пункт 3. Оптимизатор должен отреагировать на Ваш кейс действиями. И это будет дополнительная обработка каждой строки.
77. ture 606 09.06.15 15:57 Сейчас в теме
(75) ture, если есть специальная функция или агрегат, то надо его использовать вместо своего варианта, т.к. его анонсировали не как медленный.
79. vadim28 09.06.15 16:01 Сейчас в теме
(77) ture, Да, может вы и правы, но когда сидишь на хорошем компьютере и ждёшь 2-15 мин выполнения отчёта - можно потерпеть.
Но когда бухгалтера сидели и часами ждали на своих древних машинах, тут уж, простите, №1 - быстродействие.
76. vadim28 09.06.15 15:54 Сейчас в теме
(68) ture, Левое или Внутреннее, в данном случае, большой роли не сыграло.
Сам алгоритм выборки другой.
61. vadim28 09.06.15 15:01 Сейчас в теме
(59) StBender, Без группировок в 3-й Выбрать, он ругается на Не входит в группу.
65. StBender 09.06.15 15:04 Сейчас в теме
(61) vadim28, так уберите агрегатные функции СУММА (по факту, эти функции начинают группировку строк). Если у вас уже всё сгруппировано и просуммировано в первых двух запросах, то в итоговый запрос у вас попадут итоговые значения и группировать, да уж и суммировать вам тут не имеет смысла.
62. vadim28 09.06.15 15:01 Сейчас в теме
(59) StBender, пора приступать к 3-му этапу. Удалять лишнее.
67. ture 606 09.06.15 15:10 Сейчас в теме
(62) vadim28, лишнее во временных таблицах?
63. vadim28 09.06.15 15:02 Сейчас в теме
(59) StBender, Долго работает последний Запрос.
66. ture 606 09.06.15 15:06 Сейчас в теме
(63) vadim28, конечно долго, ему же надо каждую строку одной таблицы сопоставить с каждой строкой другой таблицы.
А массивчек велик и не по детски
70. vadim28 09.06.15 15:14 Сейчас в теме
(59) StBender, Всё выводится и ошибок нет, но долго.
55. ture 606 09.06.15 13:46 Сейчас в теме
(51) vadim28, Как франчайзи называется? Засада в гостях у клиента?
47. ture 606 09.06.15 12:24 Сейчас в теме
(1) vadim28, Чойто?
|ВЫБРАТЬ
| ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) КАК Номенклатура,
| СУММА(ЕСТЬNULL(Реализация.КоличествоРеализация, 0) - ЕСТЬNULL(Возврат.КоличествоВозврат, 0)) КАК Количество,
| СУММА(ЕСТЬNULL(Реализация.СуммаРеализация, 0) - ЕСТЬNULL(Возврат.СуммаВозврат, 0)) КАК Сумма,
| СУММА(ЕСТЬNULL(Реализация.НДСРеализация, 0) - ЕСТЬNULL(Возврат.НДСВозврат, 0)) КАК НДС,
| СУММА(ЕСТЬNULL(Реализация.СкидкаРеализация, 0)) КАК Скидка
|ИЗ
| Реализация КАК Реализация
| ПОЛНОЕ СОЕДИНЕНИЕ Возврат КАК Возврат
| ПО Реализация.Номенклатура = Возврат.Номенклатура
| И Реализация.Артикул = Возврат.Артикул
|СГРУППИРОВАТЬ ПО
| ЕСТЬNULL(Реализация.Артикул, Возврат.Артикул),
| ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура)
|УПОРЯДОЧИТЬ ПО
| Артикул,
| спрНоменклатура.Наименование
|ИТОГИ
| СУММА(Количество),
| СУММА(Сумма),
| СУММА(Скидка),
| СУММА(НДС)
|ПО
| Артикул,
| Номенклатура";
Показать


а группировки мы там лепили по НДС и ед занафига?

Ну короче дальше сами тогда.
2. ekaruk 4906 05.06.15 15:29 Сейчас в теме
СГРУППИРОВАТЬ ПО
| Артикул


Пиши в группировке полный путь к полю спрНоменклатура.Артикул
6. vadim28 05.06.15 15:57 Сейчас в теме
(2) ekaruk, так нельзя. В Артикул заносятся разные значения из спрНоменклатура.
7. StBender 05.06.15 15:58 Сейчас в теме
(6) vadim28, Ну тогда обзовите поле не Артикул, а Артикул_1.
8. dj_serega 392 05.06.15 15:59 Сейчас в теме
(6) vadim28, Переименуйте Артикул на АртикулРеализация и Артикул на АртикулВозврат.
10. vadim28 05.06.15 16:37 Сейчас в теме
(8) dj_serega, а группировать, сортировать и итоги считать по какому полю, АртикулВозврат или АртикулРеализация?
После команды Поместить Возврат или Поместить Реализация, он сам присваивает значения Реализация.Артикул и Возврат.Артикул.
11. dj_serega 392 05.06.15 16:45 Сейчас в теме
(10) vadim28,
а группировать, сортировать и итоги считать по какому полю, АртикулВозврат или АртикулРеализация?

А вам по какому нужно?

Пишите так:
| isnull(Реализация.Артикул, Возврат.Артикул) ОбщийАртикул,

И по этому полю упорядочивайте
14. vadim28 08.06.15 11:35 Сейчас в теме
(11) dj_serega, | isnull(Реализация.Артикул, Возврат.Артикул) ОбщийАртикул,
Выдаёт сообщение о Синтаксической ошибке. Может чего-то не так?
15. StBender 08.06.15 11:40 Сейчас в теме
(14) vadim28, конечно что-то не так, если ошибку выдает. Текст ошибки и кусок кода в котором она происходит - в студию.
16. vadim28 08.06.15 12:32 Сейчас в теме
(15) StBender,
|СГРУППИРОВАТЬ ПО
| isnull(Реализация.Артикул, Возврат.Артикул) ОбщийАртикул,
| ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура)
|УПОРЯДОЧИТЬ ПО

Синтаксическая ошибка "ОбщийАртикул,"
isnull(Реализация.Артикул, Возврат.Артикул) <<>>ОбщийАртикул,
17. StBender 08.06.15 12:40 Сейчас в теме
(16) vadim28, Естьнулы запихните в выборку полей, а группировку уже делайте по псевдонимам.

|ВЫБРАТЬ 
|	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) КАК Номенклатура,
|       ЕСТЬNULL(Реализация.Артикул, Возврат.Артикул) КАК ОбщийАртикул, 
|	СУММА(ЕСТЬNULL(Реализация.КоличествоРеализация, 0) - ЕСТЬNULL(Возврат.КоличествоВозврат, 0)) КАК Количество, 
|	СУММА(ЕСТЬNULL(Реализация.СуммаРеализация, 0) - ЕСТЬNULL(Возврат.СуммаВозврат, 0)) КАК Сумма, 
|	СУММА(ЕСТЬNULL(Реализация.НДСРеализация, 0) - ЕСТЬNULL(Возврат.НДСВозврат, 0)) КАК НДС, 
|	СУММА(ЕСТЬNULL(Реализация.СкидкаРеализация, 0)) КАК Скидка 
18. vadim28 08.06.15 12:55 Сейчас в теме
(17) StBender,
Да, спасибо, ошибка ушла. Больше не ругается.
19. vadim28 08.06.15 13:01 Сейчас в теме
(17) StBender,
До смешного доходит. Уже выдаёт ошибку что поле не найдено "ОбщийАртикул". <<?>>ОбщийАртикул.
20. dj_serega 392 08.06.15 13:02 Сейчас в теме
(19) vadim28, А дайте весь текст запроса
21. vadim28 08.06.15 13:12 Сейчас в теме
(20) dj_serega,
		Запрос.Текст = "ВЫБРАТЬ
			|	спрНоменклатура.Ссылка КАК Номенклатура, 
			|	СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоРеализация, 
			|	СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаРеализация, 
            |	спрНоменклатура.СтавкаНДС КАК СтавкаНДС,
            |	СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК НДСРеализация,
			|	СУММА(РеализацияТоваровУслугТовары.СуммаРучнойСкидки) КАК СкидкаРеализация, 
			|	спрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,";
		Если Отчет.Группе Тогда
			Запрос.Текст = Запрос.Текст + "
		    |   спрНоменклатура.Родитель.Наименование КАК Артикул";
	   	ИначеЕсли Отчет.Артикулу Тогда
			Запрос.Текст = Запрос.Текст + "
			|	спрНоменклатура.Артикул КАК Артикул"; 
		КонецЕсли;
			Запрос.Текст = Запрос.Текст + "
            |ПОМЕСТИТЬ Реализация
			|ИЗ 
			|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары 
			|	Внутреннее соединение Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг 
			|	по РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
			|	И РеализацияТоваровУслуг.Проведен = ИСТИНА 
			|	И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугТовары.Ссылка 
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка 
			|	И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
			|СГРУППИРОВАТЬ ПО"; 
		Если Отчет.Группе Тогда
			Запрос.Текст = Запрос.Текст + "
		    |   спрНоменклатура.Родитель.Наименование,";
	   	ИначеЕсли Отчет.Артикулу Тогда
			Запрос.Текст = Запрос.Текст + "
			|	спрНоменклатура.Артикул,"; 
		КонецЕсли;
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.ссылка 
            |;
            |
            |////////////////////////////////////////////////////////////­////////////////////
		    |ВЫБРАТЬ
			|	спрНоменклатура.Ссылка КАК Номенклатура, 
			|	СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоВозврат, 
			|	СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаВозврат, 
            |	спрНоменклатура.СтавкаНДС КАК СтавкаНДС,
            |	СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК НДСВозврат,
			|	спрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,";
		Если Отчет.Группе Тогда
			Запрос.Текст = Запрос.Текст + "
		    |   спрНоменклатура.Родитель.Наименование КАК Артикул";
	   	ИначеЕсли Отчет.Артикулу Тогда
			Запрос.Текст = Запрос.Текст + "
			|	спрНоменклатура.Артикул КАК Артикул"; 
		КонецЕсли;
			Запрос.Текст = Запрос.Текст + "
            |ПОМЕСТИТЬ Возврат
			|ИЗ 
			|	Документ.ВозвратТоваровОтПокупателя.Товары КАК РеализацияТоваровУслугТовары 
			|	Внутреннее соединение Документ.ВозвратТоваровОтПокупателя КАК РеализацияТоваровУслуг 
			|	по РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
			|	И РеализацияТоваровУслуг.Проведен = ИСТИНА 
			|	И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугТовары.Ссылка 
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка 
			|	И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
			|СГРУППИРОВАТЬ ПО"; 
		Если Отчет.Группе Тогда
			Запрос.Текст = Запрос.Текст + "
		    |   спрНоменклатура.Родитель.Наименование,";
	   ИначеЕсли Отчет.Артикулу Тогда
	Запрос.Текст = Запрос.Текст + "
	    |	спрНоменклатура.Артикул,"; 
	КонецЕсли;
	Запрос.Текст = Запрос.Текст + "
   	    |	СпрНоменклатура.ссылка 
            |;
            |
            |////////////////////////////////////////////////////////////­////////////////////
            |ВЫБРАТЬ
	    |	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) КАК Номенклатура,
	    |   ЕСТЬNULL(Реализация.Артикул, Возврат.Артикул) КАК ОбщийАртикул,			
	    |	СУММА(ЕСТЬNULL(Реализация.КоличествоРеализация, 0) - ЕСТЬNULL(Возврат.КоличествоВозврат, 0)) КАК Количество,
	    |	СУММА(ЕСТЬNULL(Реализация.СуммаРеализация, 0) - ЕСТЬNULL(Возврат.СуммаВозврат, 0)) КАК Сумма,
	    |	СУММА(ЕСТЬNULL(Реализация.НДСРеализация, 0) - ЕСТЬNULL(Возврат.НДСВозврат, 0)) КАК НДС,
	    |	СУММА(ЕСТЬNULL(Реализация.СкидкаРеализация, 0)) КАК Скидка
	    |ИЗ
	    |	Реализация КАК Реализация
	    |		ПОЛНОЕ СОЕДИНЕНИЕ Возврат КАК Возврат
	    |		ПО Реализация.Номенклатура = Возврат.Номенклатура
	    |		И Реализация.Артикул = Возврат.Артикул
	    |СГРУППИРОВАТЬ ПО
            |	ОбщийАртикул,
            |	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура)
	    |УПОРЯДОЧИТЬ ПО 
	    |	ОбщийАртикул, 
	    |	Номенклатура 
	    |ИТОГИ 
	    |	СУММА(Количество), 
	    |	СУММА(Сумма), 
	    |	СУММА(Скидка), 
	    |	СУММА(НДС)
	    |ПО 
	    |	ОбщийАртикул,
	    |	Номенклатура";					   
			   
	Запрос.УстановитьПараметр("ДатаНачала",         НачалоДня(Отчет.Период.ДатаНачала));
	Запрос.УстановитьПараметр("ДатаОкончания",      КонецДня(Отчет.Период.ДатаОкончания));
	Запрос.УстановитьПараметр("СписокНоменклатуры", МассивГрупп);
	РезультатПоГруппам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Показать
22. StBender 08.06.15 13:39 Сейчас в теме
(21) vadim28, я бы всё таки очень рекомендовал вот эту и подобные конструкции
 Если Отчет.Группе Тогда
            Запрос.Текст = Запрос.Текст + "
            |   спрНоменклатура.Родитель.Наименование КАК Артикул";
           ИначеЕсли Отчет.Артикулу Тогда
            Запрос.Текст = Запрос.Текст + "
            |    спрНоменклатура.Артикул КАК Артикул"; 
        КонецЕсли;

Преобразовать вот в подобные
|ВЫБОР 
|    КОГДА
|      &ФлагГруппе=Истина 
|    ТОГДА
|      спрНоменклатура.Родитель.Наименование
|    ИНАЧЕ
|      спрНоменклатура.Артикул
|КОНЕЦ КАК Артикул_1
Показать


Где ФлагГруппе истина, если Отчет.Группе = Истина. Ну и потом весь запрос загнать в конструктор запросов и посмотреть что с ним не так.
23. vadim28 08.06.15 15:23 Сейчас в теме
(22) StBender,
		Запрос.Текст = "ВЫБРАТЬ
			|	спрНоменклатура.Ссылка КАК Номенклатура, 
			|	СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоРеализация, 
			|	СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаРеализация, 
            |	спрНоменклатура.СтавкаНДС КАК СтавкаНДС,
            |	СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК НДСРеализация,
			|	СУММА(РеализацияТоваровУслугТовары.СуммаРучнойСкидки) КАК СкидкаРеализация, 
			|	спрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,
			|ВЫБОР 
			|    КОГДА
			|      &ФлагГруппе=Истина 
			|    ТОГДА
			|      спрНоменклатура.Родитель.Наименование
			|    ИНАЧЕ
			|      спрНоменклатура.Артикул
			|КОНЕЦ КАК Артикул_1
            |ПОМЕСТИТЬ Реализация
			|ИЗ 
			|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары 
			|	Внутреннее соединение Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг 
			|	по РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
			|	И РеализацияТоваровУслуг.Проведен = ИСТИНА 
			|	И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугТовары.Ссылка 
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка 
			|	И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
			|СГРУППИРОВАТЬ ПО 
			|	Артикул_1, 
			|	СпрНоменклатура.ссылка 
            |;
            |
            |////////////////////////////////////////////////////////////­////////////////////
		    |ВЫБРАТЬ
			|	спрНоменклатура.Ссылка КАК Номенклатура, 
			|	СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоВозврат, 
			|	СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаВозврат, 
            |	спрНоменклатура.СтавкаНДС КАК СтавкаНДС,
            |	СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК НДСВозврат,
			|	спрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,
			|ВЫБОР 
			|    КОГДА
			|      &ФлагГруппе=Истина 
			|    ТОГДА
			|      спрНоменклатура.Родитель.Наименование
			|    ИНАЧЕ
			|      спрНоменклатура.Артикул
			|КОНЕЦ КАК Артикул_1
            |ПОМЕСТИТЬ Возврат
			|ИЗ 
			|	Документ.ВозвратТоваровОтПокупателя.Товары КАК РеализацияТоваровУслугТовары 
			|	Внутреннее соединение Документ.ВозвратТоваровОтПокупателя КАК РеализацияТоваровУслуг 
			|	по РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
			|	И РеализацияТоваровУслуг.Проведен = ИСТИНА 
			|	И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугТовары.Ссылка 
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка 
			|	И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
			|СГРУППИРОВАТЬ ПО 
			|	Артикул_1, 
			|	СпрНоменклатура.ссылка 
            |;
            |
            |////////////////////////////////////////////////////////////­////////////////////
            |ВЫБРАТЬ
		    |	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) КАК Номенклатура,
//			|   ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1) КАК ОбщийАртикул,			
		    |	СУММА(ЕСТЬNULL(Реализация.КоличествоРеализация, 0) - ЕСТЬNULL(Возврат.КоличествоВозврат, 0)) КАК Количество,
		    |	СУММА(ЕСТЬNULL(Реализация.СуммаРеализация, 0) - ЕСТЬNULL(Возврат.СуммаВозврат, 0)) КАК Сумма,
		    |	СУММА(ЕСТЬNULL(Реализация.НДСРеализация, 0) - ЕСТЬNULL(Возврат.НДСВозврат, 0)) КАК НДС,
			|	СУММА(ЕСТЬNULL(Реализация.СкидкаРеализация, 0)) КАК Скидка
		    |ИЗ
		    |	Реализация КАК Реализация
		    |		ПОЛНОЕ СОЕДИНЕНИЕ Возврат КАК Возврат
		    |		ПО Реализация.Номенклатура = Возврат.Номенклатура
		    |		И Реализация.Артикул_1 = Возврат.Артикул_1
		    |СГРУППИРОВАТЬ ПО
            |	ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1),
            |	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура)
			|УПОРЯДОЧИТЬ ПО 
			|	Артикул_1, 
			|	Номенклатура 
			|ИТОГИ 
			|	СУММА(Количество), 
			|	СУММА(Сумма), 
			|	СУММА(Скидка), 
			|	СУММА(НДС)
			|ПО 
			|	Артикул_1,
			|	Номенклатура";					   
Показать

Вставил вот так. В результате выдал ошибку: Не задано значение параметра "ФлагГруппе" <<?>>&ФлагГруппе=Истина.
24. StBender 08.06.15 15:27 Сейчас в теме
(23) vadim28, ну вы параметру то значение передайте.
25. vadim28 08.06.15 15:34 Сейчас в теме
(22) StBender,
Понял. Добавил:
	Если Отчет.Группе Тогда
		Запрос.УстановитьПараметр("ФлагГруппе", Истина);
	ИначеЕсли Отчет.Артикулу Тогда
		Запрос.УстановитьПараметр("ФлагГруппе", Ложь);
	КонецЕсли;

Выдал ошибку что поле не найдено "Артикул_1".
26. StBender 08.06.15 15:43 Сейчас в теме
(25) vadim28, хм. Да, почему то не воспринимает по псевдониму, ну тогда сгруппируйте по конструкции "выбор когда"
27. vadim28 08.06.15 15:52 Сейчас в теме
(26) StBender, хм, но оно используется не только в Сгруппировать ПО.
В тексте оно потом и для выборки и для итогов и много где ещё используется.
28. vadim28 08.06.15 16:12 Сейчас в теме
(26) StBender,
А знаков припинания там точно не должно быть? Может из-за них любимых?
12. StBender 05.06.15 16:52 Сейчас в теме
(10) vadim28, я бы ещё условия запихнул бы в конструкцию ВЫБОР КОГДА, запрос в конструкторе отладить проще будет.
3. dj_serega 392 05.06.15 15:32 Сейчас в теме
Вроде тут:
|	ПОЛНОЕ СОЕДИНЕНИЕ Возврат КАК Возврат 
|	ПО Реализация.Номенклатура = Возврат.Номенклатура 
|	И Реализация.Артикул = Возврат.Артикул 
|СГРУППИРОВАТЬ ПО 
|	ЕСТЬNULL(Реализация.Артикул, Возврат.Артикул), 
|	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) 
5. Капитан.Кук 20 05.06.15 15:47 Сейчас в теме
Нужно по аналогии с куском:
"Если Отчет.Группе Тогда
Запрос.Текст = Запрос.Текст + "
| спрНоменклатура.Родитель.Наименование КАК Артикул";
ИначеЕсли Отчет.Артикулу Тогда
Запрос.Текст = Запрос.Текст + "
| спрНоменклатура.Артикул КАК Артикул";
Иначе
КонецЕсли; "

Добавить условие в месте группировки:
СГРУППИРОВАТЬ ПО
| Артикул,
Т.е. Или
СГРУППИРОВАТЬ ПО Если "условие" спрНоменклатура.Родитель.Наименование иначе спрНоменклатура.Артикул
9. vadim28 05.06.15 16:32 Сейчас в теме
(5) Капитан.Кук, не работает.
Изменения:
|СГРУППИРОВАТЬ ПО";
Если Отчет.Группе Тогда
Запрос.Текст = Запрос.Текст + "
| спрНоменклатура.Родитель.Наименование,";
Иначе
Запрос.Текст = Запрос.Текст + "
| спрНоменклатура.Артикул,";
КонецЕсли;
Запрос.Текст = Запрос.Текст + "
| СпрНоменклатура.ссылка

Выдаёт ту же ошибку:
{Форма.ФормаОтчета.Форма(236)}: Ошибка при вызове метода контекста (Выполнить)
РезультатПоГруппам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
по причине:
{(66, 2)}: Неоднозначное поле "Артикул"
<<?>>Артикул,
13. vasyak319 150 05.06.15 17:28 Сейчас в теме
(9) vadim28, у вас не менее трёх мест с неоднозначным артикулом и мой дедуктивный метод подсказывает, что исправили вы только первое.
29. vadim28 08.06.15 16:51 Сейчас в теме
Всё, домучал. Правильно будет так:
		Запрос.Текст = "ВЫБРАТЬ
			|	спрНоменклатура.Ссылка КАК Номенклатура, 
			|	СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоРеализация, 
			|	СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаРеализация, 
            |	спрНоменклатура.СтавкаНДС КАК СтавкаНДС,
            |	СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК НДСРеализация,
			|	СУММА(РеализацияТоваровУслугТовары.СуммаРучнойСкидки) КАК СкидкаРеализация, 
			|	спрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,
			|ВЫБОР 
			|    КОГДА
			|      &ФлагГруппе=Истина 
			|    ТОГДА
			|      спрНоменклатура.Родитель.Наименование
			|    ИНАЧЕ
			|      спрНоменклатура.Артикул
			|КОНЕЦ КАК Артикул_1
            |ПОМЕСТИТЬ Реализация
			|ИЗ 
			|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары 
			|	Внутреннее соединение Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг 
			|	по РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
			|	И РеализацияТоваровУслуг.Проведен = ИСТИНА 
			|	И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугТовары.Ссылка 
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка 
			|	И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
			|СГРУППИРОВАТЬ ПО"; 
		Если Отчет.Группе Тогда
			Запрос.Текст = Запрос.Текст + "
		    |   спрНоменклатура.Родитель.Наименование,";
	   	ИначеЕсли Отчет.Артикулу Тогда
			Запрос.Текст = Запрос.Текст + "
			|	спрНоменклатура.Артикул,"; 
		КонецЕсли;
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.ссылка 
            |;
            |
            |////////////////////////////////////////////////////////////­////////////////////
		    |ВЫБРАТЬ
			|	спрНоменклатура.Ссылка КАК Номенклатура, 
			|	СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоВозврат, 
			|	СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаВозврат, 
            |	спрНоменклатура.СтавкаНДС КАК СтавкаНДС,
            |	СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК НДСВозврат,
			|	спрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,
			|ВЫБОР 
			|    КОГДА
			|      &ФлагГруппе=Истина 
			|    ТОГДА
			|      спрНоменклатура.Родитель.Наименование
			|    ИНАЧЕ
			|      спрНоменклатура.Артикул
			|КОНЕЦ КАК Артикул_1
            |ПОМЕСТИТЬ Возврат
			|ИЗ 
			|	Документ.ВозвратТоваровОтПокупателя.Товары КАК РеализацияТоваровУслугТовары 
			|	Внутреннее соединение Документ.ВозвратТоваровОтПокупателя КАК РеализацияТоваровУслуг 
			|	по РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
			|	И РеализацияТоваровУслуг.Проведен = ИСТИНА 
			|	И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугТовары.Ссылка 
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка 
			|	И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
			|СГРУППИРОВАТЬ ПО"; 
		Если Отчет.Группе Тогда
			Запрос.Текст = Запрос.Текст + "
		    |   спрНоменклатура.Родитель.Наименование,";
	   	ИначеЕсли Отчет.Артикулу Тогда
			Запрос.Текст = Запрос.Текст + "
			|	спрНоменклатура.Артикул,"; 
		КонецЕсли;
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.ссылка 
            |;
            |
            |////////////////////////////////////////////////////////////­////////////////////
            |ВЫБРАТЬ
		    |	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) КАК Номенклатура,
			|   ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1) КАК Артикул,			
		    |	СУММА(ЕСТЬNULL(Реализация.КоличествоРеализация, 0) - ЕСТЬNULL(Возврат.КоличествоВозврат, 0)) КАК Количество,
		    |	СУММА(ЕСТЬNULL(Реализация.СуммаРеализация, 0) - ЕСТЬNULL(Возврат.СуммаВозврат, 0)) КАК Сумма,
		    |	СУММА(ЕСТЬNULL(Реализация.НДСРеализация, 0) - ЕСТЬNULL(Возврат.НДСВозврат, 0)) КАК НДС,
			|	СУММА(ЕСТЬNULL(Реализация.СкидкаРеализация, 0)) КАК Скидка
		    |ИЗ
		    |	Реализация КАК Реализация
		    |		ПОЛНОЕ СОЕДИНЕНИЕ Возврат КАК Возврат
		    |		ПО Реализация.Номенклатура = Возврат.Номенклатура
		    |		И Реализация.Артикул_1 = Возврат.Артикул_1
		    |СГРУППИРОВАТЬ ПО
            |	ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1),
            |	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура)
			|УПОРЯДОЧИТЬ ПО 
			|	Артикул, 
			|	Номенклатура 
			|ИТОГИ 
			|	СУММА(Количество), 
			|	СУММА(Сумма), 
			|	СУММА(Скидка), 
			|	СУММА(НДС)
			|ПО 
			|	Артикул,
			|	Номенклатура";					   
Показать
30. vadim28 09.06.15 10:10 Сейчас в теме
И снова ошибка, но уже другая.
Вот текст:
		Запрос.Текст = "ВЫБРАТЬ
			|	СпрНоменклатура.Ссылка КАК Номенклатура, 
			|	СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоРеализация, 
			|	СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаРеализация, 
            |	СпрНоменклатура.СтавкаНДС КАК СтавкаНДСРеализация,
            |	СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК НДСРеализация,
			|	СУММА(РеализацияТоваровУслугТовары.СуммаРучнойСкидки) КАК СкидкаРеализация, 
			|	СпрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,
			|ВЫБОР 
			|    КОГДА
			|      &ФлагГруппе=Истина 
			|    ТОГДА
			|      СпрНоменклатура.Родитель.Наименование
			|    ИНАЧЕ
			|      СпрНоменклатура.Артикул
			|КОНЕЦ КАК Артикул_1
            |ПОМЕСТИТЬ Реализация
			|ИЗ 
			|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары 
			|	Внутреннее соединение Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг 
			|	по РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
			|	И РеализацияТоваровУслуг.Проведен = ИСТИНА 
			|	И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугТовары.Ссылка 
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка 
			|	И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
			|СГРУППИРОВАТЬ ПО"; 
		Если Отчет.Группе Тогда
			Запрос.Текст = Запрос.Текст + "
		    |   СпрНоменклатура.Родитель.Наименование,";
	   	ИначеЕсли Отчет.Артикулу Тогда
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.Артикул,"; 
		КонецЕсли;
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.Ссылка 
            |;
            |
            |////////////////////////////////////////////////////////////­////////////////////
		    |ВЫБРАТЬ
			|	СпрНоменклатура.Ссылка КАК Номенклатура, 
			|	СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоВозврат, 
			|	СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаВозврат, 
            |	СпрНоменклатура.СтавкаНДС КАК СтавкаНДСВозврат,
            |	СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК НДСВозврат,
			|	СпрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,
			|ВЫБОР 
			|    КОГДА
			|      &ФлагГруппе=Истина 
			|    ТОГДА
			|      СпрНоменклатура.Родитель.Наименование
			|    ИНАЧЕ
			|      СпрНоменклатура.Артикул
			|КОНЕЦ КАК Артикул_1
            |ПОМЕСТИТЬ Возврат
			|ИЗ 
			|	Документ.ВозвратТоваровОтПокупателя.Товары КАК РеализацияТоваровУслугТовары 
			|	Внутреннее соединение Документ.ВозвратТоваровОтПокупателя КАК РеализацияТоваровУслуг 
			|	по РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
			|	И РеализацияТоваровУслуг.Проведен = ИСТИНА 
			|	И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугТовары.Ссылка 
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка 
			|	И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
			|СГРУППИРОВАТЬ ПО"; 
		Если Отчет.Группе Тогда
			Запрос.Текст = Запрос.Текст + "
		    |   СпрНоменклатура.Родитель.Наименование,";
	   	ИначеЕсли Отчет.Артикулу Тогда
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.Артикул,"; 
		КонецЕсли;
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.Ссылка 
            |;
            |
            |////////////////////////////////////////////////////////////­////////////////////
            |ВЫБРАТЬ
		    |	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) КАК Номенклатура,
			|   ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1) КАК Артикул,			
		    |	ЕСТЬNULL(Реализация.СтавкаНДСРеализация, Возврат.СтавкаНДСВозврат) КАК СтавкаНДС,
		    |	СУММА(ЕСТЬNULL(Реализация.КоличествоРеализация, 0) - ЕСТЬNULL(Возврат.КоличествоВозврат, 0)) КАК Количество,
		    |	СУММА(ЕСТЬNULL(Реализация.СуммаРеализация, 0) - ЕСТЬNULL(Возврат.СуммаВозврат, 0)) КАК Сумма,
		    |	СУММА(ЕСТЬNULL(Реализация.НДСРеализация, 0) - ЕСТЬNULL(Возврат.НДСВозврат, 0)) КАК НДС,
			|	СУММА(ЕСТЬNULL(Реализация.СкидкаРеализация, 0)) КАК Скидка
		    |ИЗ
		    |	Реализация КАК Реализация
		    |		ПОЛНОЕ СОЕДИНЕНИЕ Возврат КАК Возврат
		    |		ПО Реализация.Номенклатура = Возврат.Номенклатура
		    |		И Реализация.Артикул_1 = Возврат.Артикул_1
		    |СГРУППИРОВАТЬ ПО
            |	ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1),
            |	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура)
			|УПОРЯДОЧИТЬ ПО 
			|	Артикул, 
			|	Номенклатура 
			|ИТОГИ 
			|	СУММА(Количество), 
			|	СУММА(Сумма), 
			|	СУММА(Скидка), 
			|	СУММА(НДС)
			|ПО 
			|	Артикул,
			|	Номенклатура";					   
Показать

На этот раз сообщение об ошибки такое:
{Форма.ФормаОтчета.Форма(241)}: Ошибка при вызове метода контекста (Выполнить)
РезультатПоГруппам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
по причине:
{(67, 11)}: Поле не входит в группу "Реализация.СтавкаНДСРеализация"
ЕСТЬNULL(<<?>>Реализация.СтавкаНДСРеализация, Возврат.СтавкаНДСВозврат) КАК СтавкаНДС,
31. dj_serega 392 09.06.15 10:16 Сейчас в теме
(30) vadim28,
У Вас есть запрос:
 |ВЫБРАТЬ
 |    ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) КАК Номенклатура,
 |    (Реализация.Артикул_1, Возврат.Артикул_1) КАК Артикул,            
 |    (Реализация.СтавкаНДСРеализация, Возврат.СтавкаНДСВозврат) КАК СтавкаНДС,
 |    (ЕСТЬNULL(Реализация.КоличествоРеализация, 0) - ЕСТЬNULL(Возврат.КоличествоВозврат, 0)) КАК Количество,
 |    (ЕСТЬNULL(Реализация.СуммаРеализация, 0) - ЕСТЬNULL(Возврат.СуммаВозврат, 0)) КАК Сумма,
 |    (ЕСТЬNULL(Реализация.НДСРеализация, 0) - ЕСТЬNULL(Возврат.НДСВозврат, 0)) КАК НДС,
 |    (ЕСТЬNULL(Реализация.СкидкаРеализация, 0)) КАК Скидка
 |ИЗ
 |    КАК Реализация
 |     СОЕДИНЕНИЕ Возврат КАК Возврат
 |     Реализация.Номенклатура = Возврат.Номенклатура
 |     Реализация.Артикул_1 = Возврат.Артикул_1
 |ПО
 |     (Реализация.Артикул_1, Возврат.Артикул_1),
 |     (Реализация.Номенклатура, Возврат.Номенклатура)
Показать


Вы используете Номенклатура, Артикул. А что делать с остальными? Ставка, Кол., Сумма, НДС и Скидка.
или по ним тоже группируйте или через агрегатные фукнции (Сумма, Максимум...).
32. vadim28 09.06.15 10:33 Сейчас в теме
(31) dj_serega, К сожалению, нет.
Здесь другое. Что-то не так с самим выбором, а что ни так понять не могу.
Если сделать как вы советуете, то вместо значений Ед и СтавкаНДС выводятся пустота.
35. dj_serega 392 09.06.15 10:44 Сейчас в теме
(32) vadim28, Вы не поняли смысла группировки в запросах.
Попробую на примере:
Ном..Ед.Кол.
Ном1 Кг 100
Ном1 Кг 100
Ном1 Шт 50
Ном2 Кг 200
Ном2 Шт 25

Запрос вида:
Ном,
Ед,
Сумма(Кол)
Сгруппировать по
Ном,
Ед

Вернет

Ном1 Кг 200
Ном1 Шт 50
Ном2 Кг 200
Ном2 Шт 25.

У Вас же запрос такого вида:

Ном,
Ед,
Кол,
Сгруппировать по
Ном,
Ед.


А что делать с Количеством? Его ж нунжно, либо включить в группировку либо привести агрегатную фукнцию.
36. vadim28 09.06.15 10:59 Сейчас в теме
(35) dj_serega, Я вас правильно понял. Но как видно из реализации, я не правильно сделал выборку, а не группировку. Не могу осуществить этот отрывок:
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка 

Как только это осуществиться, группировка по полям Ед и СтавкаНДС, будет не нужна. Эти значения выбираются из справочника СпрНоменклатура.
37. vadim28 09.06.15 11:00 Сейчас в теме
(35) dj_serega, вот это объединение нужно для третьей выборки запроса. Не могу, пока понять как это осуществить.
33. vadim28 09.06.15 10:37 Сейчас в теме
(31) dj_serega,
Вот пример просто реализации.
Номенклатура Ед. изм. Количество, кг Сумма Скидка НДС Сумма НДС
01 Варёные колбасы 26 254,140 6 259 248,79 54 173,27 569 022,60
Азовская п/а 1с кг 4 659,470 1 010 684,54 14 398,86 10% 91 880,41
Азовская с салом п/а 1с кг 1 126,990 230 256,11 5 284,80 10% 20 932,38

вот текст реализации:
		Запрос.Текст = "ВЫБРАТЬ
			|	СпрНоменклатура.Ссылка КАК Номенклатура, 
			|	СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество, 
			|	СУММА(РеализацияТоваровУслугТовары.Сумма) КАК Сумма, 
            |	СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
            |	СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК НДС,
			|	СУММА(РеализацияТоваровУслугТовары.СуммаРучнойСкидки) КАК Скидка, 
			|	СпрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,";
		Если Отчет.Группе Тогда
			Запрос.Текст = Запрос.Текст + "
		    |   СпрНоменклатура.Родитель.Наименование КАК Артикул";
	   	ИначеЕсли Отчет.Артикулу Тогда
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.Артикул КАК Артикул"; 
			Иначе
		КонецЕсли;
			Запрос.Текст = Запрос.Текст + "
			|ИЗ 
			|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары 
			|	Внутреннее соединение Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг 
			|	по РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
			|	И РеализацияТоваровУслуг.Проведен = ИСТИНА 
			|	И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугТовары.Ссылка 
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка 
			|	И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
			|
			|СГРУППИРОВАТЬ ПО 
			|	Артикул, 
			|	СпрНоменклатура.Ссылка 
			|УПОРЯДОЧИТЬ ПО 
			|	Артикул, 
			|	СпрНоменклатура.Наименование 
			|ИТОГИ 
			|	СУММА(Количество), 
			|	СУММА(Сумма), 
			|	СУММА(Скидка), 
			|	СУММА(НДС)
			|ПО 
			|	Артикул,
			|	Номенклатура";					   
Показать

Не могу найти аналогию и разницу.
34. vadim28 09.06.15 10:41 Сейчас в теме
(31) dj_serega, Всё, я понял что не так. Нет внутреннего соединения в последнем выборе, между справочником и выборкой. Трям. Должно получится.
38. vadim28 09.06.15 11:03 Сейчас в теме
1-я выборка:
			|	СпрНоменклатура.Ссылка КАК Номенклатура, 
			|	СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоРеализация, 
			|	СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаРеализация, 
            |	СпрНоменклатура.СтавкаНДС КАК СтавкаНДСРеализация,
            |	СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК НДСРеализация,
			|	СУММА(РеализацияТоваровУслугТовары.СуммаРучнойСкидки) КАК СкидкаРеализация, 
			|	СпрНоменклатура.ЕдиницаИзмерения.Представление КАК ЕдРеализация,
			|ВЫБОР 
			|    КОГДА
			|      &ФлагГруппе=Истина 
			|    ТОГДА
			|      СпрНоменклатура.Родитель.Наименование
			|    ИНАЧЕ
			|      СпрНоменклатура.Артикул
			|КОНЕЦ КАК Артикул_1
            |ПОМЕСТИТЬ Реализация
			|ИЗ 
			|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары 
			|	Внутреннее соединение Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг 
			|	по РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
			|	И РеализацияТоваровУслуг.Проведен = ИСТИНА 
			|	И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугТовары.Ссылка 
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка 
			|	И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
Показать

и третья выборка:
            |ВЫБРАТЬ
		    |	ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) КАК Номенклатура,
			|   ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1) КАК Артикул,			
		    |	СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
			|	СпрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,
		    |	СУММА(ЕСТЬNULL(Реализация.КоличествоРеализация, 0) - ЕСТЬNULL(Возврат.КоличествоВозврат, 0)) КАК Количество,
		    |	СУММА(ЕСТЬNULL(Реализация.СуммаРеализация, 0) - ЕСТЬNULL(Возврат.СуммаВозврат, 0)) КАК Сумма,
		    |	СУММА(ЕСТЬNULL(Реализация.НДСРеализация, 0) - ЕСТЬNULL(Возврат.НДСВозврат, 0)) КАК НДС,
			|	СУММА(ЕСТЬNULL(Реализация.СкидкаРеализация, 0)) КАК Скидка
		    |ИЗ
		    |	Реализация КАК Реализация
		    |	ПОЛНОЕ СОЕДИНЕНИЕ Возврат КАК Возврат
		    |	ПО Реализация.Номенклатура = Возврат.Номенклатура
		    |	И Реализация.Артикул_1 = Возврат.Артикул_1
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	По Реализация.Номенклатура = СпрНоменклатура.Ссылка 
Показать

Пробую пока менять, не хотит работать. Пока что не разобрался.
39. StBender 09.06.15 11:16 Сейчас в теме
(38) vadim28, а зачем вы соединяете Табличную часть документа с самим документом? вы же можете достучаться до остальных частей через поле ссылка.
40. vadim28 09.06.15 11:22 Сейчас в теме
(39) StBender, это скорее всего не один баг в этом запросе. Вот и навожу в нём порядок, но это мелочь по сравнению с тем, что он выдаёт ошибки.
41. StBender 09.06.15 11:31 Сейчас в теме
(40) vadim28, ну из мелких ошибок строятся общие. Да такой вопрос. Не избыточное ли условие для объединения двух таблиц в третьем запросе (я про соединение по артикулу). Ведь вы же соединяете по ссылкам на справочник. У вас просто соединение таблицы и документа, на мой взгляд, неправильное. Условия которые должны быть в секции ГДЕ у вас в соединении. Корректнее будет так.

ИЗ 
            |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары 
            |    Внутреннее соединение 
            |    Справочник.Номенклатура КАК СпрНоменклатура 
            |    по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка
            |ГДЕ
            |    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
            |    И РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА 
            |    И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
Показать
45. vadim28 09.06.15 12:17 Сейчас в теме
(41) StBender, Да, это изменил, но оно не относится к третьему выбору этого запроса. Как лучше в нём выбрать и объединить?
74. vadim28 09.06.15 15:52 Сейчас в теме
кому интересно, вот полностью работающий без ошибок и мгновенно код запроса без излишеств и окончательный:
		Запрос.Текст = "ВЫБРАТЬ
			|	СпрНоменклатура.Ссылка КАК Номенклатура, 
			|	СУММА(РеализацияТоваровУслугТовары.Количество) КАК КоличествоРеализация, 
			|	СУММА(РеализацияТоваровУслугТовары.Сумма) КАК СуммаРеализация, 
            |	СпрНоменклатура.СтавкаНДС КАК СтавкаНДСРеализация,
            |	СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК НДСРеализация,
			|	СУММА(РеализацияТоваровУслугТовары.СуммаРучнойСкидки) КАК СкидкаРеализация, 
			|	СпрНоменклатура.ЕдиницаИзмерения.Представление КАК ЕдРеализация,
			|ВЫБОР 
			|    КОГДА
			|      &ФлагГруппе=Истина 
			|    ТОГДА
			|      СпрНоменклатура.Родитель.Наименование
			|    ИНАЧЕ
			|      СпрНоменклатура.Артикул
			|КОНЕЦ КАК Артикул_1
            |ПОМЕСТИТЬ Реализация
			|Из
			|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары 
			|	Внутреннее соединение Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг 
			|	по РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
			|	И РеализацияТоваровУслуг.Проведен = ИСТИНА 
			|	И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслугТовары.Ссылка 
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	по РеализацияТоваровУслугТовары.Номенклатура = СпрНоменклатура.Ссылка 
			|	И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
			|СГРУППИРОВАТЬ ПО"; 
		Если Отчет.Группе Тогда
			Запрос.Текст = Запрос.Текст + "
		    |   СпрНоменклатура.Родитель.Наименование,";
	   	ИначеЕсли Отчет.Артикулу Тогда
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.Артикул,"; 
		КонецЕсли;
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.Ссылка 
            |;
            |
            |////////////////////////////////////////////////////////////­////////////////////
		    |ВЫБРАТЬ
			|	СпрНоменклатура.Ссылка КАК Номенклатура, 
			|	СУММА(ВозвратТоваровТовары.Количество) КАК КоличествоВозврат, 
			|	СУММА(ВозвратТоваровТовары.Сумма) КАК СуммаВозврат, 
            |	СпрНоменклатура.СтавкаНДС КАК СтавкаНДСВозврат,
            |	СУММА(ВозвратТоваровТовары.СуммаНДС) КАК НДСВозврат,
			|	СпрНоменклатура.ЕдиницаИзмерения.Представление КАК ЕдВозврат,
			|ВЫБОР 
			|    КОГДА
			|      &ФлагГруппе=Истина 
			|    ТОГДА
			|      СпрНоменклатура.Родитель.Наименование
			|    ИНАЧЕ
			|      СпрНоменклатура.Артикул
			|КОНЕЦ КАК Артикул_1
            |ПОМЕСТИТЬ Возврат
			|Из
			|	Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровТовары 
			|	Внутреннее соединение Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровУслуг 
			|	по ВозвратТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания 
			|	И ВозвратТоваровУслуг.Проведен = ИСТИНА 
			|	И ВозвратТоваровУслуг.Ссылка = ВозвратТоваровТовары.Ссылка 
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	по ВозвратТоваровТовары.Номенклатура = СпрНоменклатура.Ссылка 
			|	И СпрНоменклатура.Родитель В(&СписокНоменклатуры) 
			|СГРУППИРОВАТЬ ПО"; 
		Если Отчет.Группе Тогда
			Запрос.Текст = Запрос.Текст + "
		    |   СпрНоменклатура.Родитель.Наименование,";
	   	ИначеЕсли Отчет.Артикулу Тогда
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.Артикул,"; 
		КонецЕсли;
			Запрос.Текст = Запрос.Текст + "
			|	СпрНоменклатура.Ссылка 
            |;
            |
            |////////////////////////////////////////////////////////////­////////////////////
            |ВЫБРАТЬ
		    |	СпрНоменклатура.Ссылка КАК Номенклатура,
			|   ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1) КАК Артикул,			
		    |	СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
			|	СпрНоменклатура.ЕдиницаИзмерения.Представление КАК Ед,
		    |	СУММА(ЕСТЬNULL(Реализация.КоличествоРеализация, 0) - ЕСТЬNULL(Возврат.КоличествоВозврат, 0)) КАК Количество,
		    |	СУММА(ЕСТЬNULL(Реализация.СуммаРеализация, 0) - ЕСТЬNULL(Возврат.СуммаВозврат, 0)) КАК Сумма,
		    |	СУММА(ЕСТЬNULL(Реализация.НДСРеализация, 0) - ЕСТЬNULL(Возврат.НДСВозврат, 0)) КАК НДС,
			|	СУММА(ЕСТЬNULL(Реализация.СкидкаРеализация, 0)) КАК Скидка
		    |ИЗ
		    |	Реализация КАК Реализация
		    |	Левое СОЕДИНЕНИЕ Возврат КАК Возврат
		    |	ПО Реализация.Номенклатура = Возврат.Номенклатура
			|	Внутреннее соединение Справочник.Номенклатура КАК СпрНоменклатура 
			|	По ЕСТЬNULL(Реализация.Номенклатура, Возврат.Номенклатура) = СпрНоменклатура.Ссылка 
		    |СГРУППИРОВАТЬ ПО
            |	ЕСТЬNULL(Реализация.Артикул_1, Возврат.Артикул_1),
			|	СпрНоменклатура.Ссылка
			|УПОРЯДОЧИТЬ ПО 
			|	Артикул, 
			|	Номенклатура 
			|ИТОГИ 
			|	СУММА(Количество), 
			|	СУММА(Сумма), 
			|	СУММА(Скидка), 
			|	СУММА(НДС)
			|ПО 
			|	Артикул,
			|	Номенклатура";					   
Показать
78. ture 606 09.06.15 16:01 Сейчас в теме
(74) vadim28, Все, что сам написал, конечно, ценней всего иного.
|    Реализация КАК Реализация
            |    Левое СОЕДИНЕНИЕ Возврат КАК Возврат


т.к. я немного ориентируюсь в содержание, то сразу и заметил.
Будут возвраты в этом периоде по продажам в прошлом периоде?
80. vadim28 09.06.15 16:03 Сейчас в теме
(78) ture, Возвраты всегда позже реализации. Так что, да. Если имеет место быть другая последовательность, то ........... такого не может быть и это явная ошибка создававшего документ.
81. vadim28 09.06.15 16:05 Сейчас в теме
(78) ture, сначала продаём, потом нам возвращают или нет купленный у нас товар или продукцию. Другой последовательности, просто, не может быть. Как нам могут вернуть то, чего ни когда у нас не покупали?
82. vadim28 09.06.15 16:06 Сейчас в теме
Всем спасибо. Тема закрыта.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот