Одинаковая номенклатура и как с этим бороться

1. Romakon92 27.06.17 11:48 Сейчас в теме
Добрый День!
Подскажите пожалуйста, почему выводится неверное количество номенклатуры

В регистре ПартииТоваровНаСкладах номенклатура "Я познаю мир. Зоология" забита следующим образом
-2 шт. на комиссию
-2шт. купленный
(Рисунок 1)

Соответственно, если брать данные о Количестве из Регистра,
получается правильное отображение номенклатуры "Я познаю мир. Зоология" ,НО НЕПРАВИЛЬНОЕ отображение номенклатуры "Канцтовары"
(Рисунок 2)


Если берем данные о Количестве из Справочника ОтчетОРозничныхПродажах,
то номенклатура "Канцтовары" выводится правильно, а вот "Я познаю мир. Зоология" неправильно
(Рисунок 3)
(Рисунок 4)
Вся номенклатура "Канцтовары" имеет один и тот же код, т.е. это одна и таже номенклатура, но забитая с разной ценой и количеством (Рисунок 3)

Функция Печать() Экспорт
	
		ТабДокумент = Новый ТабличныйДокумент;
		ТзИнгридиенты = Новый ТаблицаЗначений();
		ТабДокумент = Новый ТабличныйДокумент;
		Макет = ПолучитьМакет("Макет");
		
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ОтчетОРозничныхПродажахТовары.Цена КАК Цена,
	|	ОтчетОРозничныхПродажахТовары.Номенклатура.Ссылка КАК Номенклатура,
	|	ПартииТоваровНаСкладах.СтатусПартии КАК СтатусПартии,
	|	ОтчетОРозничныхПродажахТовары.Количество КАК Количество,
	|	ОтчетОРозничныхПродажахТовары.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
	|	ОтчетОРозничныхПродажахТовары.Сумма КАК Сумма,
	|	ОтчетОРозничныхПродажахТовары.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
	|	ПартииТоваровНаСкладах.Количество КАК Количество1
	|ИЗ
	|	Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
	|		ПО ОтчетОРозничныхПродажахТовары.Ссылка = ПартииТоваровНаСкладах.Регистратор
	|			И ОтчетОРозничныхПродажахТовары.Номенклатура = ПартииТоваровНаСкладах.Номенклатура
	|ГДЕ
	|	ОтчетОРозничныхПродажахТовары.Ссылка = &Ссылка
	|	И ПартииТоваровНаСкладах.Регистратор = &Ссылка
	|ИТОГИ
	|	СУММА(Цена * Количество1) КАК Цена,
	|	СУММА((Цена - Цена * ПроцентСкидкиНаценки / 100) * Количество1) КАК Сумма,
	|	СУММА(Количество1)
	|ПО
	|	СтатусПартии,
	|	НоменклатурнаяГруппа";
			
	 Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);  
РезультатЗапроса = Запрос.Выполнить();
//Шапка
	ВыборкаСтатус = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СтатусПартии");
	Пока ВыборкаСтатус.Следующий() Цикл
	    ОбластьДанные1 = Макет.ПолучитьОбласть("Шапка");
		ВыСтСтПа = ВыборкаСтатус.СтатусПартии;
		ОбластьДанные1.Параметры.СтатусПартии =
		?(ВыСтСтПа = "Купленный", "Продажи фирмы", 
		?(ВыСтСтПа = "На комиссию", "Комиссионные продажи" ,ВыСтСтПа));
		ТабДокумент.Вывести(ОбластьДанные1);    
//Группа
	ВыборкаГруппа = ВыборкаСтатус.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "НоменклатурнаяГруппа");	
	Пока ВыборкаГруппа.Следующий() Цикл
        ОбластьДанные2 = Макет.ПолучитьОбласть("Группа");
        ОбластьДанные2.Параметры.НоменклатурнаяГруппа = ВыборкаГруппа.НоменклатурнаяГруппа;
	//Итог
		ОбластьДанные2.Параметры.КолИтог = ВыборкаГруппа.Количество1;
		ОбластьДанные2.Параметры.СуммаИтог = ВыборкаГруппа.Сумма;
		ОбластьДанные2.Параметры.СуммаБСИтог = ВыборкаГруппа.Цена;
		ТабДокумент.Вывести(ОбластьДанные2);                                                 
//Данные
    ВыборкаДетальныеЗаписи = ВыборкаГруппа.Выбрать();
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		ОбластьДанные3 = Макет.ПолучитьОбласть("Данные");
        ОбластьДанные3.Параметры.Номенклатура =  ВыборкаДетальныеЗаписи.Номенклатура;
        ОбластьДанные3.Параметры.Колво  =  ВыборкаДетальныеЗаписи.Количество1;
		ЦенаСоСкидкой =  ВыборкаДетальныеЗаписи.Цена * ВыборкаДетальныеЗаписи.ПроцентСкидкиНаценки/100;
		ОбластьДанные3.Параметры.Цена = ВыборкаДетальныеЗаписи.Цена;
		ОбластьДанные3.Параметры.Сумма = (ОбластьДанные3.Параметры.Цена - ЦенаСоСкидкой)*ВыборкаДетальныеЗаписи.Количество1;
		ОбластьДанные3.Параметры.Скидка =  ВыборкаДетальныеЗаписи.ПроцентСкидкиНаценки;
		ОбластьДанные3.Параметры.СуммаБС = ВыборкаДетальныеЗаписи.Цена*ВыборкаДетальныеЗаписи.Количество1;
        ТабДокумент.Вывести(ОбластьДанные3);
     Конеццикла;  
     КонецЦикла;
     КонецЦикла; 
	Возврат ТабДокумент;
КонецФункции
Показать
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Romakon92 27.06.17 13:15 Сейчас в теме
Заменил Номенклатура.Ссылка на Номенклатура.Код
Вся номенклатура "Канцтовары" имеет один и тот же код
Прикрепленные файлы:
3. Romakon92 27.06.17 14:17 Сейчас в теме
но как я понимаю, когда забивалась информация по "Канцтовары", понималось всё что относится к Канцтоварам
Канцтовары (Ручка) - 3 рубля
Канцтовары (Пенал) - 100 рублей
Канцтовары (Линейка) - 10 рублей
и в итоге Имеем одну Номенклатуру, но с разным количеством
4. корум 287 27.06.17 14:26 Сейчас в теме
(3) а чего хочешь добиться?
Если сворачивать номенклатуру, не увидишь данных по скидке, и цена у тебя будет расчетной.

 "ВЫБРАТЬ

    |    ОтчетОРозничныхПродажахТовары.Номенклатура.Ссылка КАК Номенклатура,
    |    ПартииТоваровНаСкладах.СтатусПартии КАК СтатусПартии,
    |    ОтчетОРозничныхПродажахТовары.Количество КАК Количество,
    |    ОтчетОРозничныхПродажахТовары.Сумма КАК СуммаДок,
    |    ОтчетОРозничныхПродажахТовары.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
    |    ПартииТоваровНаСкладах.Количество КАК колОстаток
    |ИЗ
    |    Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
    |        ПО ОтчетОРозничныхПродажахТовары.Ссылка = ПартииТоваровНаСкладах.Регистратор
    |            И ОтчетОРозничныхПродажахТовары.Номенклатура = ПартииТоваровНаСкладах.Номенклатура
    |ГДЕ
    |    ОтчетОРозничныхПродажахТовары.Ссылка = &Ссылка
    |    И ПартииТоваровНаСкладах.Регистратор = &Ссылка
    |ИТОГИ
    |    СУММА(СуммаДок) КАК Сумма,
    |    СУММА(Количество1)
    |ПО
    |    СтатусПартии,
    |    НоменклатурнаяГруппа";
Показать


как-то так.
6. Romakon92 27.06.17 14:47 Сейчас в теме
(4)Хочу добиться, чтобы данные о "Канцтоварах" у меня выводились как в Справочнике, т.е.
Количество
1
1
2
1

а не
Количество
13
13
13
13


и данные о Комиссионном и Купленном товаре выводились как в Регистре, т.е.
Купленный
Количество
2
На комиссию
2

а не

Купленный
Количество
4
На комиссию
4
5. корум 287 27.06.17 14:27 Сейчас в теме
Добавь в Запрос Сгруппировать по номенклатуре и статусу партии.
7. Romakon92 27.06.17 14:48 Сейчас в теме
(5)Немного не понял Ваш вариант запроса.
Что значит "Если сворачивать номенклатуру, не увидишь данных по скидке, и цена у тебя будет расчетной. "?
8. корум 287 27.06.17 15:12 Сейчас в теме
(7) уточни у заказчика, что он хочет видеть.
Недаром ручки с карандашами записаны как Канцтовары.
Скорее всего, детализацию по ним в этом отчете тоже показывать не надо.
9. Romakon92 27.06.17 15:17 Сейчас в теме
(8) Вот здесь описана проблема над которой бьюсь
http://forum.infostart.ru/forum9/topic173690/#message1809019
11. Romakon92 27.06.17 16:06 Сейчас в теме
(5) Подскажите пожалуйста, почему, когда я добавляю Групповое поле (Номенклатура и СтатусПартии) нажимаю ОК
В запрос передаются все поля?
10. Romakon92 27.06.17 16:00 Сейчас в теме
Сама печатная форма
Прикрепленные файлы:
ВнешняяОбработка1.epf
12. Шапокляк 27.06.17 17:23 Сейчас в теме
Роман, у вас в отчете о розничных продажах две строчки, отличающиеся статусом партии. Этот отчет списал по партиям 4 штуки всего. И вот вы в запросе соединяете так, что у вас к каждой строке документа (с количеством 2 штуки) присоединяется все количество движения по регистру партий (4 штуки).
13. Шапокляк 28.06.17 13:40 Сейчас в теме
Роман, попробуйте соединить движения по партиям с движениям по регистру Продажи. Из продаж надо взять значения ресурсов и вычислить цены со скидкой и без и посчитать процент скидки. Вот примерно так.
Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ПартииТоваровНаСкладах.СтатусПартии КАК СтатусПартии,
	|	ПартииТоваровНаСкладах.Количество КАК Количество,
	|	ПартииТоваровНаСкладах.Номенклатура КАК Номенклатура,
	|	ПартииТоваровНаСкладах.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
	|	ВложенныйЗапрос.ПроцентСкидки КАК ПроцентСкидкиНаценки,
	|	ВложенныйЗапрос.Цена КАК Цена,
	|	ПартииТоваровНаСкладах.Количество * ВложенныйЗапрос.Цена КАК Сумма,
	|	ВложенныйЗапрос.Номенклатура.Код,
	|	ВложенныйЗапрос.ЦенаБезСкидок * ПартииТоваровНаСкладах.Количество КАК СуммаБС
	|ИЗ
	|	РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
	|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	|			Продажи.Номенклатура КАК Номенклатура,
	|			Продажи.Количество КАК Количество,
	|			Продажи.Стоимость КАК Стоимость,
	|			Продажи.СтоимостьБезСкидок КАК СтоимостьБезСкидок,
	|			Продажи.СтоимостьБезСкидок / Продажи.Количество КАК ЦенаБезСкидок,
	|			(1 - Продажи.Стоимость / Продажи.СтоимостьБезСкидок) * 100 КАК ПроцентСкидки,
	|			Продажи.Стоимость / Продажи.Количество КАК Цена
	|		ИЗ
	|			РегистрНакопления.Продажи КАК Продажи
	|		ГДЕ
	|			Продажи.Регистратор = &Ссылка
	|		
	|		СГРУППИРОВАТЬ ПО
	|			Продажи.Номенклатура,
	|			Продажи.Количество,
	|			Продажи.Стоимость,
	|			Продажи.СтоимостьБезСкидок) КАК ВложенныйЗапрос
	|		ПО ПартииТоваровНаСкладах.Номенклатура = ВложенныйЗапрос.Номенклатура
	|ГДЕ
	|	ПартииТоваровНаСкладах.Регистратор = &Ссылка
	|ИТОГИ
	|	МАКСИМУМ(Цена),
	|	СУММА(Сумма),
	|	СУММА(СуммаБС)
	|ПО
	|	СтатусПартии,
	|	НоменклатурнаяГруппа";
Показать
Оставьте свое сообщение

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