Как в итогах запроса не отбрасывать повторяющиеся позиции?

1. Nigelist 27.10.17 14:08 Сейчас в теме
Здравствуйте.

Есть запрос:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ПеремещениеТоваровТовары.Номенклатура КАК Номенклатура,
	ПеремещениеТоваровТовары.Количество КАК Количество,
	ПеремещениеТоваровТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	ПеремещениеТоваровТовары.СерияНоменклатуры КАК СерияН,
	МестаХраненияНоменклатуры.МестоХранения КАК МестоХранения,
	ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, "0°С - 25°С") КАК ТемпРежим,
	Штрихкоды.Штрихкод КАК Штрихкод
ИЗ
	Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
		ПО ПеремещениеТоваровТовары.Номенклатура = МестаХраненияНоменклатуры.Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
		ПО ПеремещениеТоваровТовары.Номенклатура = ЗначенияСвойствОбъектов.Объект
			И (ЗначенияСвойствОбъектов.Свойство = &Свойство)
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
		ПО ПеремещениеТоваровТовары.Номенклатура = Штрихкоды.Владелец
			И ПеремещениеТоваровТовары.ЕдиницаИзмерения = Штрихкоды.ЕдиницаИзмерения
ГДЕ
	ПеремещениеТоваровТовары.Ссылка = &Ссылка
	И МестаХраненияНоменклатуры.Склад = &Склад
	И Штрихкоды.ТипШтрихкода В(&ТипШК)
ИТОГИ ПО
	МестоХранения,
	ТемпРежим
Показать

Данные из которого заполняются в макет:
Ном = 0; // Нумерация в таблице
// Выборка места хранения
ВыборкаМестоХранения = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаМестоХранения.Следующий() Цикл
	// Выводим шапку
	ТабДок.Вывести(ОблЗаголовок);
	ТабДок.Вывести(ОблОтправитель);
	ТабДок.Вывести(ОблПолучатель);
	ОблМестоХран.Параметры.Заполнить(ВыборкаМестоХранения);
	ТабДок.Вывести(ОблМестоХран,ВыборкаМестоХранения.Уровень());
	// Выводим шапку таблицы
	ТабДок.Вывести(ОблШапкаТабл);
	
	// Заполняем таблицу товаров. Выборка температурного режима
	ВыборкаТемпРежим = ВыборкаМестоХранения.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	Пока ВыборкаТемпРежим.Следующий() Цикл
		ОблТемпРежим.Параметры.Заполнить(ВыборкаТемпРежим);
		ТабДок.Вывести(ОблТемпРежим,ВыборкаТемпРежим.Уровень());
		// Выборка детальных записей
		ВыборкаТовар = ВыборкаТемпРежим.Выбрать();
		
		ТабДок.НачатьАвтогруппировкуСтрок();
		Пока ВыборкаТовар.Следующий() Цикл
			// Проверка на пустые строки в таблице товаров
			Если Не ЗначениеЗаполнено(ВыборкаТовар.Номенклатура) Тогда
				Сообщить("В одной из строк не заполнено значение номенклатуры.",СтатусСообщения.Важное);
				Прервать;
			КонецЕсли;
			
			Ном = Ном + 1;
			Штрихкод = ""; // Штрихкод
			ОблСтрТаблицы.Параметры.НомерСтроки = Ном;
			ОблСтрТаблицы.Параметры.Номенклатура = ВыборкаТовар.Номенклатура;
			ОблСтрТаблицы.Параметры.НомерСерии = СокрЛП(ВыборкаТовар.СерияН.СерийныйНомер);
			ОблСтрТаблицы.Параметры.СрокГодности = ВыборкаТовар.СерияН.СрокГодности;
			ОблСтрТаблицы.Параметры.НомерСертификата = ВыборкаТовар.СерияН.Сертификат;
			ОблСтрТаблицы.Параметры.СрокДействияСерт = ВыборкаТовар.СерияН.СрокДействияСертификата;
			ОблСтрТаблицы.Параметры.Количество = ВыборкаТовар.Количество;
			ОблСтрТаблицы.Параметры.ЕдиницаИзмерения = ВыборкаТовар.ЕдиницаИзмерения;
			// Выборка штрихкода
			ВыборкаШК = ВыборкаТовар.Выбрать();
			Пока ВыборкаШК.Следующий() Цикл
				Штрихкод = ""; // Штрихкод
				Штрихкод = Штрихкод + ВыборкаШК.Штрихкод + РазделСтрок;
				ОблСтрТаблицы.Параметры.Штрихкод = Штрихкод;
			КонецЦикла;
			ТабДок.Вывести(ОблСтрТаблицы);
			ТабДок.ЗакончитьАвтогруппировкуСтрок();
		КонецЦикла;
	КонецЦикла;
	ТабДок.Вывести(ОблПодвал);
	// Вставляем разрыв страницы
	ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;
Показать

Есть 2 проблемы:
- Не заполнятся штрихкод.
- Отбрасываются повторяющиеся позиции номенклатуры с другой серией.

И не могу понять, где проблема. Смотрел результат запроса, позиции номенклатуры есть, штрихкоды есть. Но в макет часть данных уже не попадает.
+
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. VmvLer 27.10.17 14:13 Сейчас в теме
Запрос забросить в СКД

в ней ресурс Штрихкод с выражением СоединитьСтроки(Штрихкод,";","")

остальные варики, в том числе вывод в табл. док. в цикле, конечно имеют право на реализацию, но они ...от лукавого
+
3. Nigelist 27.10.17 14:18 Сейчас в теме
(2)
СоединитьСтроки

Так это печатная форма, там получится сделать с помощью СКД?
+
6. antz 27.10.17 15:15 Сейчас в теме
(3) Конечно. Можно запилить свой макет в СКД, можно результат выполнения СКД выгрузить в ТЗ.
+
4. nnsidorov22 27.10.17 14:38 Сейчас в теме
А для чего вы делаете:
 ВыборкаШК = ВыборкаТовар.Выбрать();

У вас же отсутствуют итоги по Номенклатуре. ВыборкаТовар у вас должна содержать детальные записи.
+
5. Nigelist 27.10.17 14:45 Сейчас в теме
(4) у товара может быть сразу несколько штрихкодов. Хочу, чтобы штрихкоды одного товара вставлялись в одну ячейку.
+
7. nnsidorov22 30.10.17 11:37 Сейчас в теме
(5)Попробуйте вот так:
ИТОГИ
	МАКСИМУМ(ЕдиницаИзмерения),
	МАКСИМУМ(СерияН),
	МАКСИМУМ(Количество)
ПО
    МестоХранения,
    ТемпРежим,
	Номенклатура


У вас добавляется итог по номенклатуре. А в детальных записях будут ваши штрих-коды.
+
8. Nigelist 31.10.17 13:49 Сейчас в теме
(7) когда выбираешь максимум, отбрасываются строки с меньшим количеством, но другой серией.
+
Внимание! Тема сдана в архив

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