В "Бланк товарного наполнения"

1. санясоку 29 21.01.16 12:34 Сейчас в теме
1С: Предприятие 8.2 Управление торговлей 10.3
В документе "Реализация товаров и услуг: продажа, комиссия" есть возможность распечатать "Бланк товарного наполнения" в этом
бланке не печатаются строки, если номенклатура имеет несколько характеристик товара, т.е. если в документе "Реализация товаров и услуг: продажа, комиссия" будет продана кофта артикул 1256 синяя и кофта артикул 1256 серая то в печать "Бланк товарного наполнения" попадает только одна позиция (либо кофта артикул 1256 синяя, либо кофта артикул 1256 серая). Печать "Бланк товарного наполнения" осуществляется запуском обработки "ПечатьРаскладкиНоменклатурыПоМестамХранения". Как вывести на печать весь товар?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. reazek 21.01.16 15:53 Сейчас в теме
Внести изменения в обработку ПечатьРаскладкиНоменклатурыПоМестамХранения. там в принципе нет разреза характеристик при заполнении построителя. Либо создать внешнюю печатную форму и в ней реализовать то что хочется. Тем более что в стоке смысла вносить характеристику в принципе нет - места хранения указываются для товара , а не для его характеристик. Т.е. требуемый результат изменением печатной формы достигнут не будет. По логике с-ки нужно весь товар класть на такой то стелаж, без привязки к характеристикам. Нужна более глубокая доработка - например некая привязка номенклатуры - характеристики - места хранения, а потом уже прикручивать доработанную логику печати бланка
3. санясоку 29 21.01.16 16:17 Сейчас в теме
По логике с-ки нужно весь товар класть на такой то стелаж, без привязки к характеристикам.
а как же его собирать Сборщикам товара, если в накладной кофта синяя 5 шт, кофта белая 5 шт и кофта серая 5 шт. итого собрать надо 15 шт., а бланк товарного наполнения выдает всего 5 шт.?
4. санясоку 29 21.01.16 16:43 Сейчас в теме
Собственно сам построитель отчета выглядит так:
Процедура ЗаполнитьПостроительОтчета(НеЗаполнятьНастройки = Ложь) Экспорт

	МетаданныеДокумента = Метаданные.Документы[ВидДокументов];

	ИмяДокумента = МетаданныеДокумента.Имя;

	Если мИмяМакета = Неопределено И ОбщегоНазначения.ЕстьРеквизитДокумента("СкладОтправитель", МетаданныеДокумента) Тогда
		мИмяМакета = "БланкОтправитель";
	КонецЕсли;

	Если ОбщегоНазначения.ЕстьРеквизитДокумента("Склад", МетаданныеДокумента) Тогда
		мИмяРеквизитаСклад = "Склад";
	ИначеЕсли ОбщегоНазначения.ЕстьРеквизитДокумента("СкладОрдер", МетаданныеДокумента) Тогда
		мИмяРеквизитаСклад = "СкладОрдер";
	ИначеЕсли ОбщегоНазначения.ЕстьРеквизитДокумента("СкладГруппа", МетаданныеДокумента) Тогда
		мИмяРеквизитаСклад = "СкладГруппа";
	ИначеЕсли мИмяМакета = "БланкОтправитель"
		    И ОбщегоНазначения.ЕстьРеквизитДокумента("СкладОтправитель", МетаданныеДокумента) Тогда
		мИмяРеквизитаСклад = "СкладОтправитель";
	ИначеЕсли мИмяМакета = "БланкПолучатель"
		    И ОбщегоНазначения.ЕстьРеквизитДокумента("СкладПолучатель", МетаданныеДокумента) Тогда
		мИмяРеквизитаСклад = "СкладПолучатель";
	КонецЕсли;

	мСклад = Документ[мИмяРеквизитаСклад];

	ЕстьСкладВТабЧасти = ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Склад", МетаданныеДокумента, "Товары");
	ЕстьСоставНабора   = ОбщегоНазначения.ЕстьТабЧастьДокумента("СоставНабора", МетаданныеДокумента);

	Если ОбщегоНазначения.ЕстьРеквизитДокумента("Сделка", МетаданныеДокумента) Тогда
		ДокументРезерва = Документ.Сделка;
	Иначе
		ДокументРезерва = Документы.ЗаказПокупателя.ПустаяСсылка();
	КонецЕсли;

	ПостроительОтчета.Параметры.Вставить("ТекДокумент"    , Документ);
	ПостроительОтчета.Параметры.Вставить("МассивСклады"   , ПолучитьМассивСкладов());
	ПостроительОтчета.Параметры.Вставить("ДокументРезерва", ДокументРезерва);

	// Текст запроса для отбора по номенклатуре.
	ТекстЗапросаНоменклатура = "
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|";

	Если ЕстьСоставНабора Тогда
		ТекстЗапросаНоменклатура = ТекстЗапросаНоменклатура + "
		|	ЕСТЬNULL(ДокСостав.Номенклатура, Док.Номенклатура) КАК Номенклатура
		|";
	Иначе
		ТекстЗапросаНоменклатура = ТекстЗапросаНоменклатура + "
		|	Док.Номенклатура КАК Номенклатура
		|";
	КонецЕсли;

	ТекстЗапросаНоменклатура = ТекстЗапросаНоменклатура + "
	|ИЗ
	|	Документ." + ИмяДокумента + ".Товары КАК Док
	|";

	Если ЕстьСоставНабора Тогда
		ТекстЗапросаНоменклатура = ТекстЗапросаНоменклатура + "
		|ЛЕВОЕ СОЕДИНЕНИЕ
		|	Документ." + ИмяДокумента + ".СоставНабора КАК ДокСостав
		|ПО
		|	ДокСостав.Ссылка = Док.Ссылка
		|	И ДокСостав.КлючСтроки = Док.КлючСтроки
		|";
	КонецЕсли;

	ТекстЗапросаНоменклатура = ТекстЗапросаНоменклатура + "
	|ГДЕ
	|	Док.Ссылка = &ТекДокумент
	|	" + ?(ТолькоНеотсканированныйТовар, "И Док.Количество <> Док.КоличествоОтсканированного", "") + "
	|";

	ТекстРодительМестаХранения = "";
	Для Тмп = 1 По КоличествоУровнейМестХранения - 1 Цикл
		ТекстРодительМестаХранения = ТекстРодительМестаХранения + ".Родитель";
	КонецЦикла;

	ДокументПроведен = Документ.Проведен;

	ТекстЗапроса = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ЗапросАдрес.*
	|//СВОЙСТВА
	|//ПРЕДСТАВЛЕНИЯ_СВОЙСТВА
	|ИЗ
	|	(ВЫБРАТЬ
	|		ОсновнаяТаблица.Номенклатура КАК Номенклатура,
	|		ОсновнаяТаблица.Номенклатура.Наименование КАК НоменклатураПредставление,
	|		ОсновнаяТаблица.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	|		ОсновнаяТаблица.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияПредставление,
	|		ОсновнаяТаблица.ЕдиницаИзмерения.Вес * ОсновнаяТаблица.Количество КАК Вес,
	|		ОсновнаяТаблица.Склад КАК СкладОтгрузкиОприходования,
	|		ОсновнаяТаблица.Количество КАК Количество,
	|		ЕСТЬNULL(РегМестаХраненияОсновной.МестоХранения" + ТекстРодительМестаХранения + ", """") КАК МестоХраненияРодитель,
	|		ЕСТЬNULL(РегМестаХранения.МестоХранения.Наименование, """") КАК МестоХранения,
	|		ЕСТЬNULL(РегМестаХранения.Приоритет, 0) КАК Приоритет,
	|		СпрСклады.Ссылка КАК Склад,
	|		СпрСклады.Наименование КАК СкладПредставление,
	|		ВЫРАЗИТЬ(((ЕСТЬNULL(ТоварыНаСкладах.КоличествоОстаток, 0)
	|		   - ЕСТЬNULL(ТоварыВРезервеНаСкладах.КоличествоОстаток, 0)
	|		   - ЕСТЬNULL(ТоварыКПередачеСоСкладов.КоличествоОстаток, 0)
	|		   + ЕСТЬNULL(РезервыПоЗаказу.КоличествоОстаток, 0)
	|" + ?(ДокументПроведен, "
	// Движения по документу.
	|		   + ЕСТЬNULL(ТоварыНаСкладахПоДокументу.Количество, 0)
	|		   - ЕСТЬNULL(ТоварыВРезервеНаСкладахПоДокументу.Количество, 0)
	|		   - ЕСТЬNULL(ТоварыКПередачеСоСкладовПоДокументу.Количество, 0)", "") + "
	|		   ) * ОсновнаяТаблица.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент
	|		   / ОсновнаяТаблица.ЕдиницаИзмерения.Коэффициент) КАК ЧИСЛО(15, 3)) КАК Остаток
	|	ИЗ
	|		(ВЫБРАТЬ
	|			ДокИсточникПервичный.Склад КАК Склад,
	|			ДокИсточникПервичный.Номенклатура КАК Номенклатура,
	|			ДокИсточникПервичный.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	|			ДокИсточникПервичный.Количество КАК Количество,
	|			МИНИМУМ(ЕСТЬNULL(РегМестаХранения.Приоритет, 0)) КАК МинПриоритет
	|		ИЗ
	|			(ВЫБРАТЬ
	|				" + ?(ЕстьСкладВТабЧасти, "ТЧТовары.Склад", "Документ." + мИмяРеквизитаСклад) + " КАК Склад,";

	Если ЕстьСоставНабора Тогда
		ТекстЗапроса = ТекстЗапроса + "
	|				ЕСТЬNULL(ТЧСоставНабора.Номенклатура, ТЧТовары.Номенклатура) КАК Номенклатура,
	|				ЕСТЬNULL(ТЧСоставНабора.ЕдиницаИзмерения, ТЧТовары.ЕдиницаИзмерения) КАК ЕдиницаИзмерения,
	|				СУММА(ЕСТЬNULL(ТЧСоставНабора.Количество * ТЧТовары.Количество" 
								+ ?(ТолькоНеотсканированныйТовар, " - ТЧСоставНабора.КоличествоОтсканированного", "") 
								+ ", ТЧТовары.Количество" + ?(ТолькоНеотсканированныйТовар, " - ТЧТовары.КоличествоОтсканированного", "") + ")) КАК Количество
	|";
	Иначе
		ТекстЗапроса = ТекстЗапроса + "
	|				ТЧТовары.Номенклатура КАК Номенклатура,
	|				ТЧТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	|				СУММА(ТЧТовары.Количество" + ?(ТолькоНеотсканированныйТовар, " - ТЧТовары.КоличествоОтсканированного", "") + ") КАК Количество
	|";
	КонецЕсли;

	ТекстЗапроса = ТекстЗапроса + "
	|			ИЗ
	|				Документ." + ИмяДокумента + " КАК Документ
	|					ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ." + ИмяДокумента + ".Товары КАК ТЧТовары
	|					ПО ТЧТовары.Ссылка = Документ.Ссылка";
	
	
	Если ЕстьСоставНабора Тогда
		ТекстЗапроса = ТекстЗапроса + "
	|					ЛЕВОЕ СОЕДИНЕНИЕ Документ." + ИмяДокумента + ".СоставНабора КАК ТЧСоставНабора
	|					ПО ТЧСоставНабора.Ссылка = Документ.Ссылка
	|						И ТЧСоставНабора.КлючСтроки = ТЧТовары.КлючСтроки
	|					ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
	|					ПО (СправочникНоменклатура.Ссылка = ТЧТовары.Номенклатура)";
	Иначе
		ТекстЗапроса = ТекстЗапроса + "
	|					ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
	|					ПО (СправочникНоменклатура.Ссылка = ТЧТовары.Номенклатура)";
	КонецЕсли;

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

	Если ЕстьСоставНабора Тогда
		ТекстЗапроса = ТекстЗапроса + "
	|				ЕСТЬNULL(ТЧСоставНабора.Номенклатура, ТЧТовары.Номенклатура),
	|				ЕСТЬNULL(ТЧСоставНабора.ЕдиницаИзмерения, ТЧТовары.ЕдиницаИзмерения)) КАК ДокИсточникПервичный";
	Иначе
		ТекстЗапроса = ТекстЗапроса + "
	|				"""",
	|				ТЧТовары.Номенклатура,
	|				ТЧТовары.ЕдиницаИзмерения) КАК ДокИсточникПервичный";
	КонецЕсли;

	ТекстЗапроса = ТекстЗапроса + "
	|				ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК РегМестаХранения
	|				ПО РегМестаХранения.Номенклатура = ДокИсточникПервичный.Номенклатура
	|					И РегМестаХранения.Склад = ДокИсточникПервичный.Склад
	|		
	|		СГРУППИРОВАТЬ ПО
	|			ДокИсточникПервичный.Склад,
	|			ДокИсточникПервичный.Номенклатура,
	|			ДокИсточникПервичный.ЕдиницаИзмерения,
	|			ДокИсточникПервичный.Количество) КАК ОсновнаяТаблица
	|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК РегМестаХранения
	|			ПО РегМестаХранения.Номенклатура = ОсновнаяТаблица.Номенклатура
	|				И РегМестаХранения.Склад = ОсновнаяТаблица.Склад
	|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК РегМестаХраненияОсновной
	|			ПО РегМестаХраненияОсновной.Номенклатура = ОсновнаяТаблица.Номенклатура
	|				И РегМестаХраненияОсновной.Склад = ОсновнаяТаблица.Склад
	|				И РегМестаХраненияОсновной.Приоритет = ОсновнаяТаблица.МинПриоритет
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК СпрСклады
	|			ПО (СпрСклады.Ссылка В (&МассивСклады))
	|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад В (&МассивСклады)
	|			   И Номенклатура В (" + ТекстЗапросаНоменклатура + ")) КАК ТоварыНаСкладах
	|			ПО ТоварыНаСкладах.Склад = СпрСклады.Ссылка
	|				И ТоварыНаСкладах.Номенклатура = ОсновнаяТаблица.Номенклатура
	|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(, Склад В (&МассивСклады)
	|			   И Номенклатура В (" + ТекстЗапросаНоменклатура + ")) КАК ТоварыВРезервеНаСкладах
	|			ПО ТоварыВРезервеНаСкладах.Склад = СпрСклады.Ссылка
	|				И ТоварыВРезервеНаСкладах.Номенклатура = ОсновнаяТаблица.Номенклатура
	|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(, Склад В (&МассивСклады)
	|			   И Номенклатура В (" + ТекстЗапросаНоменклатура + ")) КАК ТоварыКПередачеСоСкладов
	|			ПО ТоварыКПередачеСоСкладов.Склад = СпрСклады.Ссылка
	|				И ТоварыКПередачеСоСкладов.Номенклатура = ОсновнаяТаблица.Номенклатура
	|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(,
	|			   ДокументРезерва = &ДокументРезерва) КАК РезервыПоЗаказу
	|			ПО РезервыПоЗаказу.Номенклатура = ОсновнаяТаблица.Номенклатура
	|				И РезервыПоЗаказу.Склад = СпрСклады.Ссылка
	|" + ?(ДокументПроведен, "
	// Движения по документу.
	|			ЛЕВОЕ СОЕДИНЕНИЕ
	|				(ВЫБРАТЬ
	|					ТоварыНаСкладах.Номенклатура КАК Номенклатура,
	|					ТоварыНаСкладах.Склад КАК Склад,
	|					СУММА(ВЫБОР КОГДА ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
	|						-ТоварыНаСкладах.Количество
	|					ИНАЧЕ
	|						ТоварыНаСкладах.Количество
	|					КОНЕЦ) КАК Количество
	|				ИЗ
	|					РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
	|				ГДЕ
	|					ТоварыНаСкладах.Регистратор = &ТекДокумент
	|				СГРУППИРОВАТЬ ПО
	|					ТоварыНаСкладах.Номенклатура,
	|					ТоварыНаСкладах.Склад
	|				) КАК ТоварыНаСкладахПоДокументу
	|			ПО ТоварыНаСкладахПоДокументу.Склад = СпрСклады.Ссылка
	|				И ТоварыНаСкладахПоДокументу.Номенклатура = ОсновнаяТаблица.Номенклатура
	|			ЛЕВОЕ СОЕДИНЕНИЕ
	|				(ВЫБРАТЬ
	|					ТоварыВРезервеНаСкладах.Номенклатура КАК Номенклатура,
	|					ТоварыВРезервеНаСкладах.Склад КАК Склад,
	|					СУММА(ВЫБОР КОГДА ТоварыВРезервеНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
	|						-ТоварыВРезервеНаСкладах.Количество
	|					ИНАЧЕ
	|						ТоварыВРезервеНаСкладах.Количество
	|					КОНЕЦ) КАК Количество
	|				ИЗ
	|					РегистрНакопления.ТоварыВРезервеНаСкладах КАК ТоварыВРезервеНаСкладах
	|				ГДЕ
	|					ТоварыВРезервеНаСкладах.Регистратор = &ТекДокумент
	|				СГРУППИРОВАТЬ ПО
	|					ТоварыВРезервеНаСкладах.Номенклатура,
	|					ТоварыВРезервеНаСкладах.Склад
	|				) КАК ТоварыВРезервеНаСкладахПоДокументу
	|			ПО ТоварыВРезервеНаСкладахПоДокументу.Склад = СпрСклады.Ссылка
	|				И ТоварыВРезервеНаСкладахПоДокументу.Номенклатура = ОсновнаяТаблица.Номенклатура
	|			ЛЕВОЕ СОЕДИНЕНИЕ
	|				(ВЫБРАТЬ
	|					ТоварыКПередачеСоСкладов.Номенклатура КАК Номенклатура,
	|					ТоварыКПередачеСоСкладов.Склад КАК Склад,
	|					СУММА(ВЫБОР КОГДА ТоварыКПередачеСоСкладов.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
	|						-ТоварыКПередачеСоСкладов.Количество
	|					ИНАЧЕ
	|						ТоварыКПередачеСоСкладов.Количество
	|					КОНЕЦ) КАК Количество
	|				ИЗ
	|					РегистрНакопления.ТоварыКПередачеСоСкладов КАК ТоварыКПередачеСоСкладов
	|				ГДЕ
	|					ТоварыКПередачеСоСкладов.Регистратор = &ТекДокумент
	|				СГРУППИРОВАТЬ ПО
	|					ТоварыКПередачеСоСкладов.Номенклатура,
	|					ТоварыКПередачеСоСкладов.Склад
	|				) КАК ТоварыКПередачеСоСкладовПоДокументу
	|			ПО ТоварыКПередачеСоСкладовПоДокументу.Склад = СпрСклады.Ссылка
	|				И ТоварыКПередачеСоСкладовПоДокументу.Номенклатура = ОсновнаяТаблица.Номенклатура", "") + "
	|) КАК ЗапросАдрес
	|//СОЕДИНЕНИЯ
	|УПОРЯДОЧИТЬ ПО
	|	МестоХраненияРодитель,
	|	Приоритет,
	|	МестоХранения
	|ИТОГИ
	//|	МИНИМУМ(ЕдиницаИзмерения),
	|	СРЕДНЕЕ(Вес),
	|	СРЕДНЕЕ(Количество),
	|	МИНИМУМ(МестоХранения),
	|	СРЕДНЕЕ(Остаток),
	|	МИНИМУМ(НоменклатураПредставление),
	|	МИНИМУМ(ЕдиницаИзмеренияПредставление),
	|	МИНИМУМ(СкладПредставление)
	|//ИТОГИ
	|ПО
	|	СкладОтгрузкиОприходования,
	|	МестоХраненияРодитель,
	|	Номенклатура,
	|	Склад,
	|	Приоритет,
	|	ЕдиницаИзмерения
	|//ОБЩИЕ_СВОЙСТВА
	|АВТОУПОРЯДОЧИВАНИЕ";

	// Соответствие имен полей в запросе и их представлений в отчете.
	СтруктураПредставлениеПолей = Новый Структура(
	"Номенклатура, ЕдиницаИзмерения, Остаток, МестоХранения , МестоХраненияРодитель, СкладОтгрузкиОприходования",
	"Номенклатура", "Ед. изм.", "Cвободный остаток", "Место хранения", "Родитель мест хранения", "Склад отгрузки (оприходования)");

	Если ИспользоватьСвойства Тогда
		ТекстПоляСвойств = "";

		ТаблицаПолей = Новый ТаблицаЗначений;
		ТаблицаПолей.Колонки.Добавить("ПутьКДанным");  // описание поля запроса поля, для которого добавляются свойства. Используется в условии соединения с регистром сведений, хранящим значения свойств.
		ТаблицаПолей.Колонки.Добавить("Представление");// представление поля, для которого добавляются свойства.
		ТаблицаПолей.Колонки.Добавить("Назначение");   // назначение свойств объектов для данного поля.
		ТаблицаПолей.Колонки.Добавить("ТипЗначения");  // тип значения поля, для которого добавляются свойства. Используется, если не установлено назначение.

		СтрокаТаблицы = ТаблицаПолей.Добавить();
		СтрокаТаблицы.ПутьКДанным = "Номенклатура";
		СтрокаТаблицы.Представление = "Номенклатура";
		СтрокаТаблицы.Назначение = ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура;

		ТекСоответствиеНазначений = Новый Соответствие;

		ДобавитьВТекстСвойстваЛокально(ТаблицаПолей, ТекстЗапроса, СтруктураПредставлениеПолей,
		   ТекСоответствиеНазначений, ПостроительОтчета.Параметры, , , ТекстПоляСвойств);

		УправлениеОтчетами.ДобавитьВТекстСВойстваОбщие(ТекстЗапроса, ТекстПоляСвойств, "//ОБЩИЕ_СВОЙСТВА");
	КонецЕсли;

	ПостроительОтчета.Текст = ТекстЗапроса;

	Если НеЗаполнятьНастройки Тогда
		Возврат;
	КонецЕсли;

	ПостроительОтчета.ЗаполнитьНастройки();

	// Создадим список полей, доступных для выбора.
	СоответствиеДоступныхПолей = Новый Соответствие;
	СоответствиеДоступныхПолей.Вставить("ЕдиницаИзмерения", 0);
	СоответствиеДоступныхПолей.Вставить("Остаток"         , 0);
	СоответствиеДоступныхПолей.Вставить("МестоХранения"   , 0);
	СоответствиеДоступныхПолей.Вставить("Количество"      , 0);
	СоответствиеДоступныхПолей.Вставить("Вес"             , 0);
	СоответствиеДоступныхПолей.Вставить("Номенклатура"    , 0);

	Для Каждого ДоступноеПоле Из ПостроительОтчета.ДоступныеПоля Цикл
		Если СоответствиеДоступныхПолей[ДоступноеПоле.Имя] = Неопределено
		   И Найти(ДоступноеПоле.Имя, "Свойство") = 0 Тогда
			ДоступноеПоле.Поле = Ложь;
		Иначе
			ДоступноеПоле.Поле = Истина;
		КонецЕсли;
	КонецЦикла;

	ПостроительОтчета.ДоступныеПоля.Склад.Измерение = Ложь;
	ПостроительОтчета.ДоступныеПоля.Приоритет.Измерение = Ложь;
	ПостроительОтчета.ДоступныеПоля.ЕдиницаИзмерения.Измерение = Ложь;

	ПостроительОтчета.ИзмеренияСтроки.Очистить();
	ПостроительОтчета.ИзмеренияСтроки.Добавить("СкладОтгрузкиОприходования", ,ТипИзмеренияПостроителяОтчета.Элементы);
	ПостроительОтчета.ИзмеренияСтроки.Добавить("МестоХраненияРодитель", ,ТипИзмеренияПостроителяОтчета.Элементы);
	ПостроительОтчета.ИзмеренияСтроки.Добавить("Номенклатура", ,ТипИзмеренияПостроителяОтчета.Элементы);

	ПостроительОтчета.ВыбранныеПоля.Очистить();
	ПостроительОтчета.ВыбранныеПоля.Добавить("Количество");
	ПостроительОтчета.ВыбранныеПоля.Добавить("ЕдиницаИзмерения");
	ПостроительОтчета.ВыбранныеПоля.Добавить("МестоХранения");
	ПостроительОтчета.ВыбранныеПоля.Добавить("Остаток");
	ПостроительОтчета.ВыбранныеПоля.Добавить("Вес");

	Если ИспользоватьСвойства Тогда
		УправлениеОтчетами.УстановитьТипыЗначенийСвойствИКатегорийДляОтбора(ПостроительОтчета, , ТекстПоляСвойств, ТекСоответствиеНазначений, СтруктураПредставлениеПолей);
	КонецЕсли;

	// Вызовем стандартную процедуру заполнения представлений.
	УправлениеОтчетами.ЗаполнитьПредставленияПолей(СтруктураПредставлениеПолей, ПостроительОтчета);

КонецПроцедуры // ЗаполнитьПостроительОтчета()
Показать

Характеристики туда добавить особого труда не составляет, это я и сам сделаю, а вот почему изначально он не выводит весь товар с Расходной накладной? Как все кто ведет учет с характеристиками используют "Бланк товарного наполнения" если туда попадает не весь товар, не ну я бы ещё понял если бы суммировалось количество, а то и этого даже не происходит, просто тупо выводится первая попавшаяся строчка, а остальные не учитываются.
5. reazek 21.01.16 16:53 Сейчас в теме
Отладчик в помощь. Ставить точку останова на запросе - посмотреть какой запрос в итоге собран у тебя, посмотреть его результат. мож в запросе ошибка в итоговом поле.
6. reazek 21.01.16 17:31 Сейчас в теме
Попробовал в демобазе 1 товар 2 характеристики - все сумирует. так что над смотреть конкретный случай.
7. санясоку 29 22.01.16 10:05 Сейчас в теме
Да всё верно перестаёт суммировать после того как я добавляю характеристику в код. То что я добавил пометил //*****
Процедура ЗаполнитьПостроительОтчета(НеЗаполнятьНастройки = Ложь) Экспорт

	МетаданныеДокумента = Метаданные.Документы[ВидДокументов];

	ИмяДокумента = МетаданныеДокумента.Имя;

	Если мИмяМакета = Неопределено И ОбщегоНазначения.ЕстьРеквизитДокумента("СкладОтправитель", МетаданныеДокумента) Тогда
		мИмяМакета = "БланкОтправитель";
	КонецЕсли;

	Если ОбщегоНазначения.ЕстьРеквизитДокумента("Склад", МетаданныеДокумента) Тогда
		мИмяРеквизитаСклад = "Склад";
	ИначеЕсли ОбщегоНазначения.ЕстьРеквизитДокумента("СкладОрдер", МетаданныеДокумента) Тогда
		мИмяРеквизитаСклад = "СкладОрдер";
	ИначеЕсли ОбщегоНазначения.ЕстьРеквизитДокумента("СкладГруппа", МетаданныеДокумента) Тогда
		мИмяРеквизитаСклад = "СкладГруппа";
	ИначеЕсли мИмяМакета = "БланкОтправитель"
		    И ОбщегоНазначения.ЕстьРеквизитДокумента("СкладОтправитель", МетаданныеДокумента) Тогда
		мИмяРеквизитаСклад = "СкладОтправитель";
	ИначеЕсли мИмяМакета = "БланкПолучатель"
		    И ОбщегоНазначения.ЕстьРеквизитДокумента("СкладПолучатель", МетаданныеДокумента) Тогда
		мИмяРеквизитаСклад = "СкладПолучатель";
	КонецЕсли;

	мСклад = Документ[мИмяРеквизитаСклад];

	ЕстьСкладВТабЧасти = ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Склад", МетаданныеДокумента, "Товары");
	ЕстьСоставНабора   = ОбщегоНазначения.ЕстьТабЧастьДокумента("СоставНабора", МетаданныеДокумента);

	Если ОбщегоНазначения.ЕстьРеквизитДокумента("Сделка", МетаданныеДокумента) Тогда
		ДокументРезерва = Документ.Сделка;
	Иначе
		ДокументРезерва = Документы.ЗаказПокупателя.ПустаяСсылка();
	КонецЕсли;

	ПостроительОтчета.Параметры.Вставить("ТекДокумент"    , Документ);
	ПостроительОтчета.Параметры.Вставить("МассивСклады"   , ПолучитьМассивСкладов());
	ПостроительОтчета.Параметры.Вставить("ДокументРезерва", ДокументРезерва);

	// Текст запроса для отбора по номенклатуре.
	ТекстЗапросаНоменклатура = "
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|";

	Если ЕстьСоставНабора Тогда
		ТекстЗапросаНоменклатура = ТекстЗапросаНоменклатура + "
		|	ЕСТЬNULL(ДокСостав.Номенклатура, Док.Номенклатура) КАК Номенклатура
		|";
	Иначе
		ТекстЗапросаНоменклатура = ТекстЗапросаНоменклатура + "
		|	Док.Номенклатура КАК Номенклатура
		|";
	КонецЕсли;

	ТекстЗапросаНоменклатура = ТекстЗапросаНоменклатура + "
	|ИЗ
	|	Документ." + ИмяДокумента + ".Товары КАК Док
	|";

	Если ЕстьСоставНабора Тогда
		ТекстЗапросаНоменклатура = ТекстЗапросаНоменклатура + "
		|ЛЕВОЕ СОЕДИНЕНИЕ
		|	Документ." + ИмяДокумента + ".СоставНабора КАК ДокСостав
		|ПО
		|	ДокСостав.Ссылка = Док.Ссылка
		|	И ДокСостав.КлючСтроки = Док.КлючСтроки
		|";
	КонецЕсли;

	ТекстЗапросаНоменклатура = ТекстЗапросаНоменклатура + "
	|ГДЕ
	|	Док.Ссылка = &ТекДокумент
	|	" + ?(ТолькоНеотсканированныйТовар, "И Док.Количество <> Док.КоличествоОтсканированного", "") + "
	|";

	ТекстРодительМестаХранения = "";
	Для Тмп = 1 По КоличествоУровнейМестХранения - 1 Цикл
		ТекстРодительМестаХранения = ТекстРодительМестаХранения + ".Родитель";
	КонецЦикла;

	ДокументПроведен = Документ.Проведен;

	ТекстЗапроса = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ЗапросАдрес.*
	|//СВОЙСТВА
	|//ПРЕДСТАВЛЕНИЯ_СВОЙСТВА
	|ИЗ
	|	(ВЫБРАТЬ
	|		ОсновнаяТаблица.Номенклатура КАК Номенклатура,
	|       ОсновнаяТаблица.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,   //**********
	|		ОсновнаяТаблица.Номенклатура.Наименование КАК НоменклатураПредставление,
	|		ОсновнаяТаблица.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	|		ОсновнаяТаблица.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияПредставление,
	|		ОсновнаяТаблица.ЕдиницаИзмерения.Вес * ОсновнаяТаблица.Количество КАК Вес,
	|		ОсновнаяТаблица.Склад КАК СкладОтгрузкиОприходования,
	|		ОсновнаяТаблица.Количество КАК Количество,
	|		ЕСТЬNULL(РегМестаХраненияОсновной.МестоХранения" + ТекстРодительМестаХранения + ", """") КАК МестоХраненияРодитель,
	|		ЕСТЬNULL(РегМестаХранения.МестоХранения.Наименование, """") КАК МестоХранения,
	|		ЕСТЬNULL(РегМестаХранения.Приоритет, 0) КАК Приоритет,
	|		СпрСклады.Ссылка КАК Склад,
	|		СпрСклады.Наименование КАК СкладПредставление,
	|		ВЫРАЗИТЬ(((ЕСТЬNULL(ТоварыНаСкладах.КоличествоОстаток, 0)
	|		   - ЕСТЬNULL(ТоварыВРезервеНаСкладах.КоличествоОстаток, 0)
	|		   - ЕСТЬNULL(ТоварыКПередачеСоСкладов.КоличествоОстаток, 0)
	|		   + ЕСТЬNULL(РезервыПоЗаказу.КоличествоОстаток, 0)
	|" + ?(ДокументПроведен, "
	// Движения по документу.
	|		   + ЕСТЬNULL(ТоварыНаСкладахПоДокументу.Количество, 0)
	|		   - ЕСТЬNULL(ТоварыВРезервеНаСкладахПоДокументу.Количество, 0)
	|		   - ЕСТЬNULL(ТоварыКПередачеСоСкладовПоДокументу.Количество, 0)", "") + "
	|		   ) * ОсновнаяТаблица.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент
	|		   / ОсновнаяТаблица.ЕдиницаИзмерения.Коэффициент) КАК ЧИСЛО(15, 3)) КАК Остаток
	|	ИЗ
	|		(ВЫБРАТЬ
	|			ДокИсточникПервичный.Склад КАК Склад,
	|			ДокИсточникПервичный.Номенклатура КАК Номенклатура,
	|			ДокИсточникПервичный.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,    //*******
	|			ДокИсточникПервичный.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	|			ДокИсточникПервичный.Количество КАК Количество,
	|			МИНИМУМ(ЕСТЬNULL(РегМестаХранения.Приоритет, 0)) КАК МинПриоритет
	|		ИЗ
	|			(ВЫБРАТЬ
	|				" + ?(ЕстьСкладВТабЧасти, "ТЧТовары.Склад", "Документ." + мИмяРеквизитаСклад) + " КАК Склад,";

	Если ЕстьСоставНабора Тогда
		ТекстЗапроса = ТекстЗапроса + "
	|				ЕСТЬNULL(ТЧСоставНабора.Номенклатура, ТЧТовары.Номенклатура) КАК Номенклатура,
	|				ЕСТЬNULL(ТЧСоставНабора.ХарактеристикаНоменклатуры, ТЧТовары.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатуры, //*******
	|				ЕСТЬNULL(ТЧСоставНабора.ЕдиницаИзмерения, ТЧТовары.ЕдиницаИзмерения) КАК ЕдиницаИзмерения,
	|				СУММА(ЕСТЬNULL(ТЧСоставНабора.Количество * ТЧТовары.Количество" 
								+ ?(ТолькоНеотсканированныйТовар, " - ТЧСоставНабора.КоличествоОтсканированного", "") 
								+ ", ТЧТовары.Количество" + ?(ТолькоНеотсканированныйТовар, " - ТЧТовары.КоличествоОтсканированного", "") + ")) КАК Количество
	|";
	Иначе
		ТекстЗапроса = ТекстЗапроса + "
	|				ТЧТовары.Номенклатура КАК Номенклатура,
	|				ТЧТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,  //******
	|				ТЧТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	|				СУММА(ТЧТовары.Количество" + ?(ТолькоНеотсканированныйТовар, " - ТЧТовары.КоличествоОтсканированного", "") + ") КАК Количество
	|";
	КонецЕсли;

	ТекстЗапроса = ТекстЗапроса + "
	|			ИЗ
	|				Документ." + ИмяДокумента + " КАК Документ
	|					ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ." + ИмяДокумента + ".Товары КАК ТЧТовары
	|					ПО ТЧТовары.Ссылка = Документ.Ссылка";
	
	
	Если ЕстьСоставНабора Тогда
		ТекстЗапроса = ТекстЗапроса + "
	|					ЛЕВОЕ СОЕДИНЕНИЕ Документ." + ИмяДокумента + ".СоставНабора КАК ТЧСоставНабора
	|					ПО ТЧСоставНабора.Ссылка = Документ.Ссылка
	|						И ТЧСоставНабора.КлючСтроки = ТЧТовары.КлючСтроки
	|					ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
	|					ПО (СправочникНоменклатура.Ссылка = ТЧТовары.Номенклатура)";
	Иначе
		ТекстЗапроса = ТекстЗапроса + "
	|					ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
	|					ПО (СправочникНоменклатура.Ссылка = ТЧТовары.Номенклатура)";
	КонецЕсли;

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

	Если ЕстьСоставНабора Тогда
		ТекстЗапроса = ТекстЗапроса + "
	|				ЕСТЬNULL(ТЧСоставНабора.Номенклатура, ТЧТовары.Номенклатура),
	|				ЕСТЬNULL(ТЧСоставНабора.ХарактеристикаНоменклатуры, ТЧТовары.ХарактеристикаНоменклатуры),   //*******
	|				ЕСТЬNULL(ТЧСоставНабора.ЕдиницаИзмерения, ТЧТовары.ЕдиницаИзмерения)) КАК ДокИсточникПервичный";
	Иначе
		ТекстЗапроса = ТекстЗапроса + "
	|				"""",
	|				ТЧТовары.Номенклатура,
	|				ТЧТовары.ХарактеристикаНоменклатуры,     //**********
	|				ТЧТовары.ЕдиницаИзмерения) КАК ДокИсточникПервичный";
	КонецЕсли;

	ТекстЗапроса = ТекстЗапроса + "
	|				ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК РегМестаХранения
	|				ПО РегМестаХранения.Номенклатура = ДокИсточникПервичный.Номенклатура
	|					И РегМестаХранения.Склад = ДокИсточникПервичный.Склад
	|		
	|		СГРУППИРОВАТЬ ПО
	|			ДокИсточникПервичный.Склад,
	|			ДокИсточникПервичный.Номенклатура,
	|			ДокИсточникПервичный.ХарактеристикаНоменклатуры,    //**********
	|			ДокИсточникПервичный.ЕдиницаИзмерения,
	|			ДокИсточникПервичный.Количество) КАК ОсновнаяТаблица
	|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК РегМестаХранения
	|			ПО РегМестаХранения.Номенклатура = ОсновнаяТаблица.Номенклатура
	|				И РегМестаХранения.Склад = ОсновнаяТаблица.Склад
	|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК РегМестаХраненияОсновной
	|			ПО РегМестаХраненияОсновной.Номенклатура = ОсновнаяТаблица.Номенклатура
	|				И РегМестаХраненияОсновной.Склад = ОсновнаяТаблица.Склад
	|				И РегМестаХраненияОсновной.Приоритет = ОсновнаяТаблица.МинПриоритет
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК СпрСклады
	|			ПО (СпрСклады.Ссылка В (&МассивСклады))
	|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад В (&МассивСклады)
	|			   И Номенклатура В (" + ТекстЗапросаНоменклатура + ")) КАК ТоварыНаСкладах
	|			ПО ТоварыНаСкладах.Склад = СпрСклады.Ссылка
	|				И ТоварыНаСкладах.Номенклатура = ОсновнаяТаблица.Номенклатура
	|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(, Склад В (&МассивСклады)
	|			   И Номенклатура В (" + ТекстЗапросаНоменклатура + ")) КАК ТоварыВРезервеНаСкладах
	|			ПО ТоварыВРезервеНаСкладах.Склад = СпрСклады.Ссылка
	|				И ТоварыВРезервеНаСкладах.Номенклатура = ОсновнаяТаблица.Номенклатура
	|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(, Склад В (&МассивСклады)
	|			   И Номенклатура В (" + ТекстЗапросаНоменклатура + ")) КАК ТоварыКПередачеСоСкладов
	|			ПО ТоварыКПередачеСоСкладов.Склад = СпрСклады.Ссылка
	|				И ТоварыКПередачеСоСкладов.Номенклатура = ОсновнаяТаблица.Номенклатура
	|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(,
	|			   ДокументРезерва = &ДокументРезерва) КАК РезервыПоЗаказу
	|			ПО РезервыПоЗаказу.Номенклатура = ОсновнаяТаблица.Номенклатура
	|				И РезервыПоЗаказу.Склад = СпрСклады.Ссылка
	|" + ?(ДокументПроведен, "
	// Движения по документу.
	|			ЛЕВОЕ СОЕДИНЕНИЕ
	|				(ВЫБРАТЬ
	|					ТоварыНаСкладах.Номенклатура КАК Номенклатура,
	|					ТоварыНаСкладах.Склад КАК Склад,
	|					СУММА(ВЫБОР КОГДА ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
	|						-ТоварыНаСкладах.Количество
	|					ИНАЧЕ
	|						ТоварыНаСкладах.Количество
	|					КОНЕЦ) КАК Количество
	|				ИЗ
	|					РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
	|				ГДЕ
	|					ТоварыНаСкладах.Регистратор = &ТекДокумент
	|				СГРУППИРОВАТЬ ПО
	|					ТоварыНаСкладах.Номенклатура,
	|					ТоварыНаСкладах.Склад
	|				) КАК ТоварыНаСкладахПоДокументу
	|			ПО ТоварыНаСкладахПоДокументу.Склад = СпрСклады.Ссылка
	|				И ТоварыНаСкладахПоДокументу.Номенклатура = ОсновнаяТаблица.Номенклатура
	|			ЛЕВОЕ СОЕДИНЕНИЕ
	|				(ВЫБРАТЬ
	|					ТоварыВРезервеНаСкладах.Номенклатура КАК Номенклатура,
	|					ТоварыВРезервеНаСкладах.Склад КАК Склад,
	|					СУММА(ВЫБОР КОГДА ТоварыВРезервеНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
	|						-ТоварыВРезервеНаСкладах.Количество
	|					ИНАЧЕ
	|						ТоварыВРезервеНаСкладах.Количество
	|					КОНЕЦ) КАК Количество
	|				ИЗ
	|					РегистрНакопления.ТоварыВРезервеНаСкладах КАК ТоварыВРезервеНаСкладах
	|				ГДЕ
	|					ТоварыВРезервеНаСкладах.Регистратор = &ТекДокумент
	|				СГРУППИРОВАТЬ ПО
	|					ТоварыВРезервеНаСкладах.Номенклатура,
	|					ТоварыВРезервеНаСкладах.Склад
	|				) КАК ТоварыВРезервеНаСкладахПоДокументу
	|			ПО ТоварыВРезервеНаСкладахПоДокументу.Склад = СпрСклады.Ссылка
	|				И ТоварыВРезервеНаСкладахПоДокументу.Номенклатура = ОсновнаяТаблица.Номенклатура
	|			ЛЕВОЕ СОЕДИНЕНИЕ
	|				(ВЫБРАТЬ
	|					ТоварыКПередачеСоСкладов.Номенклатура КАК Номенклатура,
	|					ТоварыКПередачеСоСкладов.Склад КАК Склад,
	|					СУММА(ВЫБОР КОГДА ТоварыКПередачеСоСкладов.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
	|						-ТоварыКПередачеСоСкладов.Количество
	|					ИНАЧЕ
	|						ТоварыКПередачеСоСкладов.Количество
	|					КОНЕЦ) КАК Количество
	|				ИЗ
	|					РегистрНакопления.ТоварыКПередачеСоСкладов КАК ТоварыКПередачеСоСкладов
	|				ГДЕ
	|					ТоварыКПередачеСоСкладов.Регистратор = &ТекДокумент
	|				СГРУППИРОВАТЬ ПО
	|					ТоварыКПередачеСоСкладов.Номенклатура,
	|					ТоварыКПередачеСоСкладов.Склад
	|				) КАК ТоварыКПередачеСоСкладовПоДокументу
	|			ПО ТоварыКПередачеСоСкладовПоДокументу.Склад = СпрСклады.Ссылка
	|				И ТоварыКПередачеСоСкладовПоДокументу.Номенклатура = ОсновнаяТаблица.Номенклатура", "") + "
	|) КАК ЗапросАдрес
	|//СОЕДИНЕНИЯ
	|УПОРЯДОЧИТЬ ПО
	|	МестоХраненияРодитель,
	|	Приоритет,
	|	МестоХранения
	|ИТОГИ
	//|	МИНИМУМ(ЕдиницаИзмерения),
	|	МИНИМУМ(ХарактеристикаНоменклатуры),  //**********
	|	СРЕДНЕЕ(Вес),
	|	СРЕДНЕЕ(Количество),
	|	МИНИМУМ(МестоХранения),
	|	СРЕДНЕЕ(Остаток),
	|	МИНИМУМ(НоменклатураПредставление),
	|	МИНИМУМ(ЕдиницаИзмеренияПредставление),
	|	МИНИМУМ(СкладПредставление)
	|//ИТОГИ
	|ПО
	|	СкладОтгрузкиОприходования,
	|	МестоХраненияРодитель,
	|	Номенклатура,
	|	Склад,
	|	Приоритет,
	|	ЕдиницаИзмерения
	|//ОБЩИЕ_СВОЙСТВА
	|АВТОУПОРЯДОЧИВАНИЕ";

	// Соответствие имен полей в запросе и их представлений в отчете.
	СтруктураПредставлениеПолей = Новый Структура(
	"Номенклатура, ЕдиницаИзмерения, Остаток, МестоХранения , МестоХраненияРодитель, СкладОтгрузкиОприходования",
	"Номенклатура", "Ед. изм.", "Cвободный остаток", "Место хранения", "Родитель мест хранения", "Склад отгрузки (оприходования)");

	Если ИспользоватьСвойства Тогда
		ТекстПоляСвойств = "";

		ТаблицаПолей = Новый ТаблицаЗначений;
		ТаблицаПолей.Колонки.Добавить("ПутьКДанным");  // описание поля запроса поля, для которого добавляются свойства. Используется в условии соединения с регистром сведений, хранящим значения свойств.
		ТаблицаПолей.Колонки.Добавить("Представление");// представление поля, для которого добавляются свойства.
		ТаблицаПолей.Колонки.Добавить("Назначение");   // назначение свойств объектов для данного поля.
		ТаблицаПолей.Колонки.Добавить("ТипЗначения");  // тип значения поля, для которого добавляются свойства. Используется, если не установлено назначение.

		СтрокаТаблицы = ТаблицаПолей.Добавить();
		СтрокаТаблицы.ПутьКДанным = "Номенклатура";
		СтрокаТаблицы.Представление = "Номенклатура";
		СтрокаТаблицы.Назначение = ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура;

		ТекСоответствиеНазначений = Новый Соответствие;

		ДобавитьВТекстСвойстваЛокально(ТаблицаПолей, ТекстЗапроса, СтруктураПредставлениеПолей,
		   ТекСоответствиеНазначений, ПостроительОтчета.Параметры, , , ТекстПоляСвойств);

		УправлениеОтчетами.ДобавитьВТекстСВойстваОбщие(ТекстЗапроса, ТекстПоляСвойств, "//ОБЩИЕ_СВОЙСТВА");
	КонецЕсли;

	ПостроительОтчета.Текст = ТекстЗапроса;

	Если НеЗаполнятьНастройки Тогда
		Возврат;
	КонецЕсли;

	ПостроительОтчета.ЗаполнитьНастройки();

	// Создадим список полей, доступных для выбора.
	СоответствиеДоступныхПолей = Новый Соответствие;
	СоответствиеДоступныхПолей.Вставить("ХарактеристикаНоменклатуры",0); //***********
	СоответствиеДоступныхПолей.Вставить("ЕдиницаИзмерения", 0);
	СоответствиеДоступныхПолей.Вставить("Остаток"         , 0);
	СоответствиеДоступныхПолей.Вставить("МестоХранения"   , 0);
	СоответствиеДоступныхПолей.Вставить("Количество"      , 0);
	СоответствиеДоступныхПолей.Вставить("Вес"             , 0);
	СоответствиеДоступныхПолей.Вставить("Номенклатура"    , 0);

	Для Каждого ДоступноеПоле Из ПостроительОтчета.ДоступныеПоля Цикл
		Если СоответствиеДоступныхПолей[ДоступноеПоле.Имя] = Неопределено
		   И Найти(ДоступноеПоле.Имя, "Свойство") = 0 Тогда
			ДоступноеПоле.Поле = Ложь;
		Иначе
			ДоступноеПоле.Поле = Истина;
		КонецЕсли;
	КонецЦикла;

	ПостроительОтчета.ДоступныеПоля.Склад.Измерение = Ложь;
	ПостроительОтчета.ДоступныеПоля.Приоритет.Измерение = Ложь;
	ПостроительОтчета.ДоступныеПоля.ЕдиницаИзмерения.Измерение = Ложь;

	ПостроительОтчета.ИзмеренияСтроки.Очистить();
	ПостроительОтчета.ИзмеренияСтроки.Добавить("СкладОтгрузкиОприходования", ,ТипИзмеренияПостроителяОтчета.Элементы);
	ПостроительОтчета.ИзмеренияСтроки.Добавить("МестоХраненияРодитель", ,ТипИзмеренияПостроителяОтчета.Элементы);
	ПостроительОтчета.ИзмеренияСтроки.Добавить("Номенклатура", ,ТипИзмеренияПостроителяОтчета.Элементы);

	ПостроительОтчета.ВыбранныеПоля.Очистить();
	ПостроительОтчета.ВыбранныеПоля.Добавить("Номенклатура.Артикул");  //***********
	ПостроительОтчета.ВыбранныеПоля.Добавить("ХарактеристикаНоменклатуры"); //**********
	ПостроительОтчета.ВыбранныеПоля.Добавить("Количество");
	ПостроительОтчета.ВыбранныеПоля.Добавить("ЕдиницаИзмерения");
	ПостроительОтчета.ВыбранныеПоля.Добавить("МестоХранения");
	ПостроительОтчета.ВыбранныеПоля.Добавить("Остаток");
	ПостроительОтчета.ВыбранныеПоля.Добавить("Вес");

	Если ИспользоватьСвойства Тогда
		УправлениеОтчетами.УстановитьТипыЗначенийСвойствИКатегорийДляОтбора(ПостроительОтчета, , ТекстПоляСвойств, ТекСоответствиеНазначений, СтруктураПредставлениеПолей);
	КонецЕсли;

	// Вызовем стандартную процедуру заполнения представлений.
	УправлениеОтчетами.ЗаполнитьПредставленияПолей(СтруктураПредставлениеПолей, ПостроительОтчета);

КонецПроцедуры // ЗаполнитьПостроительОтчета()
Показать

Как же сделать, чтобы и характеристика была и количество совпадало?
8. alljoke 22.01.16 10:18 Сейчас в теме
Думается в СтруктуреПредставленияПолей забыли свою характеристику добавить.
9. санясоку 29 22.01.16 10:56 Сейчас в теме
Думается в СтруктуреПредставленияПолей забыли свою характеристику добавить.
По моему всё там добавлено СтруктуреПредставленияПолей заполняется с Построителя отчета.
 УправлениеОтчетами.ЗаполнитьПредставленияПолей(СтруктураПредставлениеПолей, ПостроительОтчета); 
ПостроительОтчета.ВыбранныеПоля.Добавить("ХарактеристикаНоменклатуры");
Да и сомневаюсь я что это может как то исправить ситуацию.
10. denisovatu 22.01.16 13:22 Сейчас в теме
Тему закрываю Сделал внешней печатной формой Запросом связал Места хранения и Док.Номенклатура Если кому интересно вот код
"ВЫБРАТЬ
	               |	Док.НомерСтроки,
	               |	Док.Номенклатура.Код КАК Код,
	               |	Док.Номенклатура.Артикул КАК Артикул,
	               |	Док.Номенклатура.Представление КАК Номеклатура,
	               |	Док.Количество КАК Количество,
	               |	Док.Цена,
	               |	Док.Сумма КАК Сумма,
	               |	Док.Склад КАК Склад,
	               |	Док.ЕдиницаИзмерения,
	               |	ВЫБОР
	               |		КОГДА Док.ЕдиницаИзмеренияМест.Коэффициент = 0
	               |			ТОГДА Док.КоличествоМест
	               |		ИНАЧЕ ВЫРАЗИТЬ(Док.Количество * Док.Коэффициент / Док.ЕдиницаИзмеренияМест.Коэффициент КАК ЧИСЛО(15, 3))
	               |	КОНЕЦ КАК КоличествоМест,
	               |	МестаХранения.МестоХранения КАК МестоХранения,
	               |	Док.ХарактеристикаНоменклатуры
	               |ИЗ
	               |	Документ.РеализацияТоваровУслуг.Товары КАК Док
	               |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК МестаХранения
	               |		ПО Док.Номенклатура = МестаХранения.Номенклатура
	               |ГДЕ
	               |	Док.Ссылка = &ТекущийДокумент
	               |
	               |УПОРЯДОЧИТЬ ПО
	               |	МестоХранения
	               |ИТОГИ
	               |	СУММА(Количество),
	               |	СУММА(Сумма)
	               |ПО
	               |	Склад";
Показать
11. санясоку 29 22.01.16 13:44 Сейчас в теме
(10) denisovatu, Спасибо всем, всё получилось сделать внешней печатной формой, а ведь еще reazek советовал сделать внешней печатной формой, а я всё проморгал и убил два дня на эту обработку. :-)
12. alexkutuzov 41 08.12.17 09:25 Сейчас в теме
(11) Если у номенклатуры будет более одного места хранения для склада то колонки количество и сумма будут содержать неверные данные.
Оставьте свое сообщение

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