Печать прайс-листа не по алфавиту

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. serpolit 8 28.08.15 09:52 Сейчас в теме
Добрый день всем! В УТ 10.3 имеется возможность напечатать прайс-лист товаров с названиями групп товаров (режим иерархия). Данный список будет выводится с сортировкой по алфавиту - сначала все латинские, а затем русские названия групп товаров. Это бывает не совсем удобно, если нужно в прайсе сначала показать те группы товаров, которые предлагаются по более выгодным условиям.
Можно ли сделать печать прайса таким образом, чтобы группы шли в заданном пользователем порядке? Порядок, например, можно задать изменив конфигурацию и добавив реквизит Порядок в справочник Номенклатура, который будет доступен только для групп. Пользователь введет номера отображения порядка следования групп и в прайс попадут группы в нужном порядке.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Cooler 22 28.08.15 10:59 Сейчас в теме
(1) serpolit,
Можно ли сделать печать прайса таким образом, чтобы группы шли в заданном пользователем порядке?
Кто-то запрещает?
3. MiniMuk 10 28.08.15 11:02 Сейчас в теме
(1) serpolit, делайте, запросе номеклатыры для прайся добавьте поле и отсортируйте по нему
4. serpolit 8 28.08.15 11:33 Сейчас в теме
(3) MiniMuk, все верно. Но вот уже два дня бьюсь не могу найти где в запросе что нужно поставить. В 1с программирую еще очень слабо ((. Может приведете пример как сделать?
6. Xershi 1500 28.08.15 12:08 Сейчас в теме
(4) serpolit, Ищи обход коллекции с именем твоей ТЧ. А когда найдешь, то перед этим отсортируй.
7. Frogger1971 28.08.15 12:32 Сейчас в теме
(6) Xershi, во, сказал так сказал!!! чел, вообще, о стандартном функционале, а не то, что ты ему написал! )))
13. Xershi 1500 28.08.15 13:26 Сейчас в теме
(7) Frogger1971, зато может научится.
9. serpolit 8 28.08.15 12:37 Сейчас в теме
(6) Xershi, а нельзя ли показать где и что поставить, вот нашел процедуру запроса - в ней что-ли надо?
Процедура ЗаполнитьПостроительОтчетаПоЦенамНоменклатуры() Экспорт

ПостроительОтчета.Параметры.Вставить("Дата", КонецДня(ДатаПрайса));
	ПостроительОтчета.Параметры.Вставить("СпособНаценка", Перечисления.СпособыРасчетаЦены.ПоПроцентнойНаценкеНаБазовыйТип);
	ПостроительОтчета.Параметры.Вставить("СпособДиапазон", Перечисления.СпособыРасчетаЦены.ПоВхождениюБазовойЦеныВДиапазон);
	ПостроительОтчета.Параметры.Вставить("ВВалютеОтчета", ВВалютеОтчета);
	ПостроительОтчета.Параметры.Вставить("ВалютаОтчета", ВалютаОтчета);
	ПостроительОтчета.Параметры.Вставить("ПустаяСтрока", "");
	ПостроительОтчета.Параметры.Вставить("ДатаЦеныНеИзменились", КонецДня(ДатаЦеныНеИзменились));

	ТекстЗапроса = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ //РАЗЛИЧНЫЕ
	|   ЗапросПрайс.ЦеноваяГруппа.Порядок КАК ЦеноваяГруппаПорядок,
	|	НЕ ЕСТЬNULL(ЗапросПрайс.Номенклатура.ВестиУчетПоХарактеристикам, ИСТИНА) КАК НетХарактеристик,
	|	ЗапросПрайс.ТипЦен.ПорядокОкругления КАК ПорядокОкругления,
	|	ЗапросПрайс.ТипЦен.ОкруглятьВБольшуюСторону КАК ОкруглятьВБольшуюСторону,
	|	ЗапросПрайс.ТипЦен КАК ТипЦен,
	|	ЗапросПрайс.ТипЦен.Представление КАК ТипЦенПредставление,
	|	ЗапросПрайс.ЦеноваяГруппа,
	|	ЗапросПрайс.ЦеноваяГруппа.Представление КАК ЦеноваяГруппаПредставление,
	|	ЗапросПрайс.Номенклатура КАК Номенклатура,
	|	ЗапросПрайс.Номенклатура.Представление КАК НоменклатураПредставление,
	|	ЗапросПрайс.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	|	ЗапросПрайс.ХарактеристикаНоменклатуры.Представление КАК ХарактеристикаНоменклатурыПредставление,
	|	Остатки.Остаток,
	|	МестаХранения.МестоХранения КАК Стеллаж,
	|	МестаХранения.МестоХранения.Представление КАК СтеллажПредставление,
	|	Штрихкоды.Штрихкод КАК ШтрихКод,

	// Если цена равна нулю, то вместо представления единицы и валюты подставим пустую строку.
	|	ВЫБОР КОГДА ЗапросПрайс.Цена <> 0 ТОГДА
	|		ЗапросПрайс.ЕдиницаИзмерения.Представление
	|	ИНАЧЕ
	|		&ПустаяСтрока
	|	КОНЕЦ КАК ЕдиницаИзмерения,
	|	ВЫБОР КОГДА ЗапросПрайс.Цена <> 0 ТОГДА
	|		ЗапросПрайс.ВалютаПрайса.Представление
	|	ИНАЧЕ
	|		&ПустаяСтрока
	|	КОНЕЦ КАК Валюта,

	// Если валюты отличаются и цена не равна нулю,
	// то необходимо пересчитать цену в нужную валюту.
	|	ВЫБОР КОГДА ЗапросПрайс.Валюта = ЗапросПрайс.ВалютаПрайса
	|			ИЛИ ЗапросПрайс.Цена = 0 ТОГДА
	|		ЗапросПрайс.Цена
	|	ИНАЧЕ
	|		ЗапросПрайс.Цена * ВЫБОР КОГДА КурсыВалютСрезПоследних.Курс = 0 ТОГДА
	|										1
	|									ИНАЧЕ
	|										КурсыВалютСрезПоследних.Курс КОНЕЦ
	|						 * ВЫБОР КОГДА КурсыВалютСрезПоследнихОтчет.Кратность = 0 ТОГДА
	|										1
	|									ИНАЧЕ
	|										КурсыВалютСрезПоследнихОтчет.Кратность КОНЕЦ
	|						 / ВЫБОР КОГДА КурсыВалютСрезПоследнихОтчет.Курс = 0 ТОГДА
	|										1
	|									ИНАЧЕ
	|										КурсыВалютСрезПоследнихОтчет.Курс КОНЕЦ
	|						 / ВЫБОР КОГДА КурсыВалютСрезПоследних.Кратность = 0 ТОГДА
	|										1
	|									ИНАЧЕ
	|										КурсыВалютСрезПоследних.Кратность КОНЕЦ
	|	КОНЕЦ КАК Цена

	// Эти "//СВОЙСТВА" заменятся на текст,
	// если установлен флажок "Использовать свойства и категории".
	|//СВОЙСТВА
	|//ПРЕДСТАВЛЕНИЯ_СВОЙСТВА
	|ИЗ

	// ЗапросПрайс
	|(ВЫБРАТЬ 
	|	ЦеныБазовые.ТипЦен КАК ТипЦен,

	|	ВЫБОР КОГДА &ВВалютеОтчета = ЛОЖЬ ТОГДА
	|		ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
	|			ЦеныБазовые.ТипЦен.ВалютаЦены
	|		ИНАЧЕ
	|			МИНИМУМ(
	|				ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
	|					ВЫБОР КОГДА ЦеныРасчетные.Валюта ЕСТЬ NULL ТОГДА
	|						ЦеныБазовые.Валюта
	|					ИНАЧЕ
	|						ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка ТОГДА
	|							ЦеныРасчетные.Валюта
	|						ИНАЧЕ
	|							ЦеныБазовые.ВалютаДиапазона
	|						КОНЕЦ
	|					КОНЕЦ
	|				ИНАЧЕ
	|					ЦеныБазовые.Валюта
	|				КОНЕЦ
	|			)
	|		КОНЕЦ
	|	ИНАЧЕ
	|		&ВалютаОтчета
	|	КОНЕЦ КАК ВалютаПрайса,

	|	ЦеныБазовые.ЦеноваяГруппа,
	|	ЦеныБазовые.Номенклатура,
	|	ЦеныБазовые.ХарактеристикаНоменклатуры,

	|	МИНИМУМ(
	|		ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
	|			ЦеныРасчетные.ЕдиницаИзмерения
	|		ИНАЧЕ
	|			ЦеныБазовые.ЕдиницаИзмерения
	|		КОНЕЦ
	|	) КАК ЕдиницаИзмерения,

	|	МИНИМУМ(
	|		ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
	|			ВЫБОР КОГДА ЦеныРасчетные.Валюта ЕСТЬ NULL ТОГДА
	|				ЦеныБазовые.Валюта
	|			ИНАЧЕ
	|				ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка ТОГДА
	|					ЦеныРасчетные.Валюта
	|				ИНАЧЕ
	|					ЦеныБазовые.ВалютаДиапазона
	|				КОНЕЦ
	|			КОНЕЦ
	|		ИНАЧЕ
	|			ЦеныБазовые.Валюта
	|		КОНЕЦ
	|	) КАК Валюта,

	|	МИНИМУМ(
	|		ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
	|			ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка ТОГДА
	|				ВЫБОР КОГДА ЦеныРасчетные.Цена ЕСТЬ NULL ТОГДА
	|					0
	|				ИНАЧЕ
	|					ЦеныРасчетные.Цена * (1 + ЦеныБазовые.ПроцентСкидкиНаценки / 100)
	|				КОНЕЦ
	|			ИНАЧЕ
	|				ЦеныБазовые.ЦенаДиапазона
	|			КОНЕЦ
	|		ИНАЧЕ
	|			ЦеныБазовые.Цена
	|		КОНЕЦ
	|	) КАК Цена
	|";

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

		|	МИНИМУМ(
		|		ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
		|			ЦеныРасчетныеСтарые.ЕдиницаИзмерения
		|		ИНАЧЕ
		|			ЦеныБазовые.ЕдиницаИзмеренияСтарая
		|		КОНЕЦ
		|	) КАК ЕдиницаИзмеренияСтарая,

		|	МИНИМУМ(
		|		ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
		|			ВЫБОР КОГДА ЦеныРасчетныеСтарые.Валюта ЕСТЬ NULL ТОГДА
		|				ЦеныБазовые.ВалютаСтарая
		|			ИНАЧЕ
		|				ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦеныСтарый = &СпособНаценка ТОГДА
		|					ЦеныРасчетныеСтарые.Валюта
		|				ИНАЧЕ
		|					ЦеныБазовые.ВалютаДиапазонаСтарая
		|				КОНЕЦ
		|			КОНЕЦ
		|		ИНАЧЕ
		|			ЦеныБазовые.ВалютаСтарая
		|		КОНЕЦ
		|	) КАК ВалютаСтарая,

		|	МИНИМУМ(
		|		ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
		|			ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦеныСтарый = &СпособНаценка ТОГДА
		|				ВЫБОР КОГДА ЦеныРасчетныеСтарые.Цена ЕСТЬ NULL ТОГДА
		|					0
		|				ИНАЧЕ
		|					ЦеныРасчетныеСтарые.Цена * (1 + ЦеныБазовые.ПроцентСкидкиНаценкиСтарый / 100)
		|				КОНЕЦ
		|			ИНАЧЕ
		|				ЦеныБазовые.ЦенаДиапазонаСтарая
		|			КОНЕЦ
		|		ИНАЧЕ
		|			ЦеныБазовые.ЦенаСтарая
		|		КОНЕЦ
		|	) КАК ЦенаСтарая
		|";
	КонецЕсли;

	ТекстЗапроса = ТекстЗапроса + "
	|ИЗ

	// ЦеныБазовые
	|(ВЫБРАТЬ
	|	СписокНоменклатуры.Номенклатура КАК Номенклатура,
	|	СписокНоменклатуры.Номенклатура.ЦеноваяГруппа КАК ЦеноваяГруппа,
	|	СписокНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	|	СпрТипЦен.ТипЦен КАК ТипЦен,
	|	ЦеныНоменклатуры.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	|	ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Цена,

	|	ВЫБОР КОГДА ЦеныНоменклатуры.Номенклатура ЕСТЬ NULL ТОГДА
	|		СпрТипЦен.ПроцентСкидкиНаценки
	|	ИНАЧЕ
	|		ЕСТЬNULL(ЦеныНоменклатуры.ПроцентСкидкиНаценки, ЦеныНоменклатуры.ТипЦен.ПроцентСкидкиНаценки)
	|	КОНЕЦ КАК ПроцентСкидкиНаценки,

	|	ВЫБОР КОГДА ЦеныНоменклатуры.Номенклатура ЕСТЬ NULL ТОГДА
	|		СпрТипЦен.СпособРасчетаЦены
	|	ИНАЧЕ
	|		ЕСТЬNULL(ЦеныНоменклатуры.СпособРасчетаЦены, ЦеныНоменклатуры.ТипЦен.СпособРасчетаЦены)
	|	КОНЕЦ КАК СпособРасчетаЦены,

	|	ЕСТЬNULL(ШкалыДиапазонов.Цена, 0) КАК ЦенаДиапазона,
	|	ЕСТЬNULL(ШкалыДиапазонов.ВерхняяГраница, 0) КАК ВерхняяГраница,
	|	ЕСТЬNULL(ЦеныНоменклатуры.Валюта, СпрТипЦен.Валюта) КАК Валюта,
	|	ШкалыДиапазонов.Валюта КАК ВалютаДиапазона
	|";

	Если ФлажокЦеныНеИзменилисьС Тогда
		ТекстЗапроса = ТекстЗапроса + "
		|	,ЕСТЬNULL(ЦеныНоменклатурыСтарые.Цена, 0) КАК ЦенаСтарая,
		|	ЦеныНоменклатурыСтарые.ЕдиницаИзмерения КАК ЕдиницаИзмеренияСтарая,
		
		|	ВЫБОР КОГДА ЦеныНоменклатурыСтарые.Номенклатура ЕСТЬ NULL ТОГДА
		|		СпрТипЦен.ПроцентСкидкиНаценки
		|	ИНАЧЕ
		|		ЕСТЬNULL(ЦеныНоменклатурыСтарые.ПроцентСкидкиНаценки, ЦеныНоменклатурыСтарые.ТипЦен.ПроцентСкидкиНаценки)
		|	КОНЕЦ КАК ПроцентСкидкиНаценкиСтарый,
		
		|	ВЫБОР КОГДА ЦеныНоменклатурыСтарые.Номенклатура ЕСТЬ NULL ТОГДА
		|		СпрТипЦен.СпособРасчетаЦены
		|	ИНАЧЕ
		|		ЕСТЬNULL(ЦеныНоменклатурыСтарые.СпособРасчетаЦены, ЦеныНоменклатурыСтарые.ТипЦен.СпособРасчетаЦены)
		|	КОНЕЦ КАК СпособРасчетаЦеныСтарый,
		
		|	ЕСТЬNULL(ШкалыДиапазоновСтарые.Цена, 0) КАК ЦенаДиапазонаСтарая,
		|	ЕСТЬNULL(ШкалыДиапазоновСтарые.ВерхняяГраница, 0) КАК ВерхняяГраницаСтарая,
		|	ЕСТЬNULL(ЦеныНоменклатурыСтарые.Валюта, СпрТипЦен.Валюта) КАК ВалютаСтарая,
		|	ШкалыДиапазоновСтарые.Валюта КАК ВалютаДиапазонаСтарая
		|";
	КонецЕсли;

	ТекстЗапроса = ТекстЗапроса + "
	|ИЗ
	|	(ВЫБРАТЬ
	|		СпрХарактеристики.Владелец КАК Номенклатура,
	|		СпрХарактеристики.Ссылка КАК ХарактеристикаНоменклатуры
	|	ИЗ Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
	|	{ГДЕ СпрХарактеристики.Владелец.* КАК Номенклатура,
	|	СпрХарактеристики.Владелец.ЦеноваяГруппа.* КАК ЦеноваяГруппа}
	|	ОБЪЕДИНИТЬ ВСЕ
	|	ВЫБРАТЬ
	|		СпрНоменклатура.Ссылка,
	|		ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
	|	ИЗ Справочник.Номенклатура КАК СпрНоменклатура
	|	{ГДЕ СпрНоменклатура.Ссылка.* КАК Номенклатура,
	|	СпрНоменклатура.Ссылка.ЦеноваяГруппа.* КАК ЦеноваяГруппа}
	|	) КАК СписокНоменклатуры
	|	СОЕДИНЕНИЕ
	|	(ВЫБРАТЬ
	|		СправочникЦен.Ссылка КАК ТипЦен,
	|		СправочникЦен.ВалютаЦены КАК Валюта,
	|		СправочникЦен.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
	|		СправочникЦен.СпособРасчетаЦены КАК СпособРасчетаЦены
	|	ИЗ
	|		Справочник.ТипыЦенНоменклатуры КАК СправочникЦен
	|	{ГДЕ СправочникЦен.Ссылка.* КАК ТипЦен}
	|	) КАК СпрТипЦен

	// В прайсе не нужны цены по группам и наборам.
	// Такой фильтр сделаем с использованием внутреннего соедининия.
	|	ПО НЕ СписокНоменклатуры.Номенклатура.ЭтоГруппа
	|	 И НЕ СписокНоменклатуры.Номенклатура.Набор
	|	ЛЕВОЕ СОЕДИНЕНИЕ
	|	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, {Номенклатура.* КАК Номенклатура,
	|	   Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа, ТипЦен.* КАК ТипЦен}) КАК ЦеныНоменклатуры
	|	ПО ЦеныНоменклатуры.Номенклатура = СписокНоменклатуры.Номенклатура
	|	И ЦеныНоменклатуры.ТипЦен = СпрТипЦен.ТипЦен
	|	И ЦеныНоменклатуры.ХарактеристикаНоменклатуры = СписокНоменклатуры.ХарактеристикаНоменклатуры
	|	ЛЕВОЕ СОЕДИНЕНИЕ

	// ШкалыДиапазонов
	|	(ВЫБРАТЬ
	|		ДиапазоныЦен.ТипЦен,
	|		ДиапазоныЦен.ВерхняяГраница,
	|		ДиапазоныЦен.Цена,
	|		ДиапазоныЦен.Валюта,
	|		ДиапазоныЦен.ПЕРИОД КАК Период
	|	ИЗ
	|		РегистрСведений.ДиапазоныЦенДляНаценки.СрезПоследних(&Дата,
	|		   {ТипЦен.* КАК ТипЦен}) КАК ДиапазоныЦен
	|	СОЕДИНЕНИЕ
	|	(ВЫБРАТЬ
	|		ДиапазоныЦенДляНаценкиСрезПоследних.ТипЦен,
	|		МАКСИМУМ(ДиапазоныЦенДляНаценкиСрезПоследних.ПЕРИОД) КАК Период
	|	ИЗ
	|		РегистрСведений.ДиапазоныЦенДляНаценки.СрезПоследних(&Дата,
	|		   {ТипЦен.* КАК ТипЦен}) КАК ДиапазоныЦенДляНаценкиСрезПоследних
	|	СГРУППИРОВАТЬ ПО
	|		ДиапазоныЦенДляНаценкиСрезПоследних.ТипЦен
	|	) КАК МаксДиапазоныЦен
	|	ПО ДиапазоныЦен.ТипЦен = МаксДиапазоныЦен.ТипЦен
	|	И ДиапазоныЦен.Период = МаксДиапазоныЦен.Период
	|	) КАК ШкалыДиапазонов
	|	ПО ШкалыДиапазонов.ТипЦен = СпрТипЦен.ТипЦен
	|	И СпрТипЦен.ТипЦен.Рассчитывается
	|";

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

	ТекстЗапроса = ТекстЗапроса + "
	|) КАК ЦеныБазовые
	|ЛЕВОЕ СОЕДИНЕНИЕ
	|РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, {Номенклатура.* КАК Номенклатура,
	|   Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК ЦеныРасчетные
	|ПО ЦеныБазовые.Номенклатура = ЦеныРасчетные.Номенклатура
	|И ЦеныБазовые.ХарактеристикаНоменклатуры = ЦеныРасчетные.ХарактеристикаНоменклатуры
	|И ЦеныБазовые.ТипЦен.БазовыйТипЦен = ЦеныРасчетные.ТипЦен
	|";

	Если ФлажокЦеныНеИзменилисьС Тогда
		ТекстЗапроса = ТекстЗапроса + "
		// ЦеныРасчетныеСтарые.
		|ЛЕВОЕ СОЕДИНЕНИЕ
		|РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаЦеныНеИзменились, {Номенклатура.* КАК Номенклатура,
		|   Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК ЦеныРасчетныеСтарые
		|ПО ЦеныБазовые.Номенклатура = ЦеныРасчетныеСтарые.Номенклатура
		|И ЦеныБазовые.ХарактеристикаНоменклатуры = ЦеныРасчетныеСтарые.ХарактеристикаНоменклатуры
		|И ЦеныБазовые.ТипЦен.БазовыйТипЦен = ЦеныРасчетныеСтарые.ТипЦен
		|";
	КонецЕсли;

	ТекстЗапроса = ТекстЗапроса + "
	|ГДЕ
	|	НЕ ЦеныБазовые.ТипЦен.Рассчитывается
	|	ИЛИ ЦеныБазовые.СпособРасчетаЦены <> &СпособДиапазон
	|	ИЛИ (ЦеныБазовые.СпособРасчетаЦены = &СпособДиапазон И ЦеныРасчетные.Цена МЕЖДУ 0.000001 И ЦеныБазовые.ВерхняяГраница-0.000001)
	|";

	Если ФлажокЦеныНеИзменилисьС Тогда
		ТекстЗапроса = ТекстЗапроса + "
		|	ИЛИ ЦеныБазовые.СпособРасчетаЦеныСтарый <> &СпособДиапазон
		|	ИЛИ (ЦеныБазовые.СпособРасчетаЦеныСтарый = &СпособДиапазон И ЦеныРасчетныеСтарые.Цена МЕЖДУ 0.000001 И ЦеныБазовые.ВерхняяГраницаСтарая-0.000001)
		|";
	КонецЕсли;

	ТекстЗапроса = ТекстЗапроса + "
	|СГРУППИРОВАТЬ ПО
	|	ЦеныБазовые.ТипЦен,
	|	ЦеныБазовые.ЦеноваяГруппа,
	|	ЦеныБазовые.Номенклатура,
	|	ЦеныБазовые.ХарактеристикаНоменклатуры
	|) КАК ЗапросПрайс
	|";

	// Если нужны товары, которых нет на остатках -
	// используем ЛЕВОЕ СОЕДИНЕНИЕ,
	// иначе - ВНУТРЕНЕЕ СОЕДИНЕНИЕ
	Если Не БезОтсутствующихВКомпании Тогда
		ТекстЗапроса = ТекстЗапроса +"{ЛЕВОЕ "
	КонецЕсли;

	ТекстЗапроса = ТекстЗапроса +"
	|СОЕДИНЕНИЕ
	|(ВЫБРАТЬ
	|	НесвернутыеОстатки.Номенклатура КАК НоменклатураОст,
	|	НесвернутыеОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатурыОст,
	|	Сумма(НесвернутыеОстатки.Остаток) КАК Остаток
	| ИЗ
	|	(ВЫБРАТЬ
	|		Ост.Номенклатура.Ссылка КАК Номенклатура,
	|		Ост.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	|		Ост.КоличествоОстаток КАК Остаток
	|	ИЗ
	|		РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, {Склад.* КАК Склад,
	|		   Склад.ВидСклада.* КАК ВидСклада, Номенклатура.* КАК Номенклатура,
	|		   Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК Ост
	|	ОБЪЕДИНИТЬ ВСЕ
	|	ВЫБРАТЬ
	|		НТТ.Номенклатура.Ссылка КАК Номенклатура,
	|		НТТ.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	|		НТТ.КоличествоОстаток КАК Остаток
	|	ИЗ
	|		РегистрНакопления.ТоварыВНТТ.Остатки(&Дата, {Склад.* КАК Склад,
	|		   Склад.ВидСклада.* КАК ВидСклада, Номенклатура.* КАК Номенклатура,
	|		   Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК НТТ
	|	ОБЪЕДИНИТЬ ВСЕ
	|	ВЫБРАТЬ
	|		Розница.Номенклатура.Ссылка КАК Номенклатура,
	|		Розница.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	|		Розница.КоличествоОстаток КАК Остаток
	|	ИЗ
	|		РегистрНакопления.ТоварыВРознице.Остатки(&Дата, {Склад.* КАК Склад,
	|		   Склад.ВидСклада.* КАК ВидСклада, Номенклатура.* КАК Номенклатура,
	|		   Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК Розница
	|	) КАК НесвернутыеОстатки
	| СГРУППИРОВАТЬ ПО
	|	НесвернутыеОстатки.Номенклатура,
	|	НесвернутыеОстатки.ХарактеристикаНоменклатуры
	|) КАК Остатки
	| ПО
	|	ЗапросПрайс.Номенклатура = Остатки.НоменклатураОст
	|	И ЗапросПрайс.ХарактеристикаНоменклатуры = Остатки.ХарактеристикаНоменклатурыОст
	|";

	Если Не БезОтсутствующихВКомпании Тогда
		ТекстЗапроса = ТекстЗапроса +"}"
	КонецЕсли;

	ТекстЗапроса = ТекстЗапроса +"
	|СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалютСрезПоследних
	|ПО ЗапросПрайс.Валюта = КурсыВалютСрезПоследних.Валюта
	|";

	// Фильтр по нулевым ценам сделаем с использованием внутреннего соединения.
	Если БезПустыхЦен Тогда
		ТекстЗапроса = ТекстЗапроса + "   И ЗапросПрайс.Цена <> 0";
	КонецЕсли;

	ТекстЗапроса = ТекстЗапроса +"
	|СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалютСрезПоследнихОтчет
	|ПО ЗапросПрайс.ВалютаПрайса = КурсыВалютСрезПоследнихОтчет.Валюта
	|";

	Если ФлажокЦеныНеИзменилисьС Тогда
		ТекстЗапроса = ТекстЗапроса + "
		|СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаЦеныНеИзменились) КАК КурсыВалютСрезПоследнихСтарые
		|ПО ЗапросПрайс.ВалютаСтарая = КурсыВалютСрезПоследнихСтарые.Валюта
		|СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаЦеныНеИзменились) КАК КурсыВалютСрезПоследнихОтчетСтарые
		|ПО ЗапросПрайс.ВалютаПрайсаСтарая = КурсыВалютСрезПоследнихОтчетСтарые.Валюта
		|";
	КонецЕсли;

	ТекстЗапроса = ТекстЗапроса + "
	|{
	|ЛЕВОЕ СОЕДИНЕНИЕ
	|(ВЫБРАТЬ
	|	МестаХраненияНоменклатуры.Номенклатура КАК НоменклатураХранения,
	|	МестаХраненияНоменклатуры.МестоХранения КАК МестоХранения
	|ИЗ
	|	РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
	|СОЕДИНЕНИЕ
	|(ВЫБРАТЬ
	|	МестаХраненияНоменклатуры.Номенклатура КАК Номенклатура,
	|	МИНИМУМ(МестаХраненияНоменклатуры.Приоритет) КАК Приоритет
	|ИЗ
	|	РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
	|СГРУППИРОВАТЬ ПО
	|	Номенклатура
	|) КАК МинПриоритет
	|ПО МестаХраненияНоменклатуры.Номенклатура = МинПриоритет.Номенклатура
	|И МестаХраненияНоменклатуры.Приоритет = МинПриоритет.Приоритет
	|) КАК МестаХранения
	|ПО ЗапросПрайс.Номенклатура = МестаХранения.НоменклатураХранения
	|}
	|{
	|ЛЕВОЕ СОЕДИНЕНИЕ
	|(ВЫБРАТЬ
	|	Штрихкоды.ШтрихКод КАК ШтрихКод,
	|	Штрихкоды.Владелец КАК Владелец,
	|	Штрихкоды.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатурыШтрихКода
	|ИЗ
	|	РегистрСведений.Штрихкоды КАК Штрихкоды
	|) КАК ШтрихКоды
	|ПО ЗапросПрайс.Номенклатура = Штрихкоды.Владелец
	|И ЗапросПрайс.ХарактеристикаНоменклатуры = Штрихкоды.ХарактеристикаНоменклатурыШтрихКода
	|}

	// Эти "//СОЕДИНЕНИЯ" заменятся на текст,
	// если установлен флажок "Использовать свойства и категории".
	|//СОЕДИНЕНИЯ
	|";

	Если ФлажокЦеныНеИзменилисьС Тогда
		ТекстЗапроса = ТекстЗапроса + "
		|ГДЕ
		|	ВЫБОР КОГДА ЗапросПрайс.Валюта = ЗапросПрайс.ВалютаПрайса
		|			ИЛИ ЗапросПрайс.Цена = 0 ТОГДА
		|		ЗапросПрайс.Цена
		|	ИНАЧЕ
		|		ЗапросПрайс.Цена * ВЫБОР КОГДА КурсыВалютСрезПоследних.Курс = 0 ТОГДА
		|										1
		|									ИНАЧЕ
		|										КурсыВалютСрезПоследних.Курс КОНЕЦ
		|						 * ВЫБОР КОГДА КурсыВалютСрезПоследних.Кратность = 0 ТОГДА
		|										1
		|									ИНАЧЕ
		|										КурсыВалютСрезПоследних.Кратность КОНЕЦ
		|						 / ВЫБОР КОГДА КурсыВалютСрезПоследнихОтчет.Курс = 0 ТОГДА
		|										1
		|									ИНАЧЕ
		|										КурсыВалютСрезПоследнихОтчет.Курс КОНЕЦ
		|						 / ВЫБОР КОГДА КурсыВалютСрезПоследнихОтчет.Кратность = 0 ТОГДА
		|										1
		|									ИНАЧЕ
		|										КурсыВалютСрезПоследнихОтчет.Кратность КОНЕЦ
		|	КОНЕЦ <> 
		|	ВЫБОР КОГДА ЗапросПрайс.ВалютаСтарая = ЗапросПрайс.ВалютаПрайсаСтарая
		|			ИЛИ ЗапросПрайс.ЦенаСтарая = 0 ТОГДА
		|		ЗапросПрайс.ЦенаСтарая
		|	ИНАЧЕ
		|		ЗапросПрайс.Цена * ВЫБОР КОГДА КурсыВалютСрезПоследнихСтарые.Курс = 0 ТОГДА
		|										1
		|									ИНАЧЕ
		|										КурсыВалютСрезПоследнихСтарые.Курс КОНЕЦ
		|						 * ВЫБОР КОГДА КурсыВалютСрезПоследнихСтарые.Кратность = 0 ТОГДА
		|										1
		|									ИНАЧЕ
		|										КурсыВалютСрезПоследнихСтарые.Кратность КОНЕЦ
		|						 / ВЫБОР КОГДА КурсыВалютСрезПоследнихОтчетСтарые.Курс = 0 ТОГДА
		|										1
		|									ИНАЧЕ
		|										КурсыВалютСрезПоследнихОтчетСтарые.Курс КОНЕЦ
		|						 / ВЫБОР КОГДА КурсыВалютСрезПоследнихОтчетСтарые.Кратность = 0 ТОГДА
		|										1
		|									ИНАЧЕ
		|										КурсыВалютСрезПоследнихОтчетСтарые.Кратность КОНЕЦ
		|	КОНЕЦ
		|";
	КонецЕсли;

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

	// Соответствие имен полей в запросе и их представлений в отчете.
	СтруктураПредставлениеПолей = Новый Структура(
	"ТипЦен,    Номенклатура,   ХарактеристикаНоменклатуры ,   ЕдиницаИзмерения, Остаток,  ЦеноваяГруппа,    ШтрихКод",
	"Тип цен", "Номенклатура", "Характеристика номенклатуры", "Ед. измерения", "Остаток", "Ценовая группа", "Штрихкод");

	ТекстПоляСвойств= "";
	ТекстПоляКатегорий = "";

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

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

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

		Для Каждого ОтборПоКатегориям Из ОбщийОтчет.мСтруктураДляОтбораПоКатегориям Цикл
			ПостроительОтчета.Параметры.Вставить(ОтборПоКатегориям.Значение, ОтборПоКатегориям.Ключ);
		КонецЦикла;

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

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

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

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

	// Создадим список доступных отборов.
	СоответствиеДоступныхОтборов = Новый Соответствие;
	СоответствиеДоступныхОтборов.Вставить("Номенклатура", 0);
	СоответствиеДоступныхОтборов.Вставить("ТипЦен", 0);
	СоответствиеДоступныхОтборов.Вставить("ЦеноваяГруппа", 0);

	СоответствиеДоступныхОтборов.Вставить("Склад", 0);
	СоответствиеДоступныхОтборов.Вставить("ВидСклада", 0);

	// Отбор по валюте сделаем только,
	// если установлен флажок "Не включать по которым не заданы цены".
	Если БезПустыхЦен Тогда
		СоответствиеДоступныхОтборов.Вставить("Валюта", 0);
	КонецЕсли;

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

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

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

	ПостроительОтчета.ИзмеренияКолонки.Очистить();
	ПостроительОтчета.ИзмеренияКолонки.Добавить("ТипЦен");

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

	ПостроительОтчета.Порядок.Очистить();
	ПостроительОтчета.Порядок.Добавить("ТипЦен");
	ПостроительОтчета.Порядок.Добавить("ЦеноваяГруппа.Порядок");
	ПостроительОтчета.Порядок.Добавить("Номенклатура");
	ПостроительОтчета.Порядок.Добавить("ХарактеристикаНоменклатуры");

	// Создадим массив отборов.
	МассивОтбора = Новый Массив;
	МассивОтбора.Добавить("Номенклатура");
	МассивОтбора.Добавить("ТипЦен");
	МассивОтбора.Добавить("ЦеноваяГруппа");

	Для Каждого ЭлементОтбора Из МассивОтбора Цикл
		Если ПостроительОтчета.Отбор.Найти(ЭлементОтбора) = Неопределено Тогда
			ПостроительОтчета.Отбор.Добавить(ЭлементОтбора);
		КонецЕсли;
	КонецЦикла;

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

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

КонецПроцедуры // ЗаполнитьПостроительОтчетаПоЦенамНоменклатуры()
Показать
14. Xershi 1500 28.08.15 13:27 Сейчас в теме
(9) serpolit, и в след раз код оберни в тег кода. 2 листа листать потом чтобы прочесть новое сообщение))
8. Frogger1971 28.08.15 12:34 Сейчас в теме
(1) serpolit, не заморачивайся - групам с "вкусными" ценами присваивай в названии - "Cool!" или "Oops!" и создавай прайс
10. serpolit 8 28.08.15 12:40 Сейчас в теме
(8) Frogger1971, Так у меня уже именно таким способом и была решена задача. Я называл группы так: 01. Аккумуляторы, 02. Автомасла и т.д. Но так у нас сейчас идет выгрузка на сайт из 1с, то эти цифры из названий нужно убирать
11. Xershi 1500 28.08.15 13:24 Сейчас в теме
(10) serpolit, тебе нужно получить конечный запрос. Текст можно получить через отладку. И затем в консоле запросов отладить сортировку. На 90% уверен это решит вопрос.
12. Xershi 1500 28.08.15 13:25 Сейчас в теме
(10) serpolit,
УПОРЯДОЧИТЬ ПО
| ТипЦен,
| ЦеноваяГруппаПорядок,
| Номенклатура,
| ХарактеристикаНоменклатуры
|ИТОГИ МАКСИМУМ(Цена), МИНИМУМ(Валюта), МИНИМУМ(ЕдиницаИзмерения), МИНИМУМ(Остаток),
| МИНИМУМ(Стеллаж) , МИНИМУМ(СтеллажПредставление), МИНИМУМ(ШтрихКод),
| МИНИМУМ(НетХарактеристик), МИНИМУМ(ЦеноваяГруппа)


Вот здесь у тебя идет сортировка. Но нужен отладчик для получения текста запроса.
21. serpolit 8 01.09.15 15:24 Сейчас в теме
(12) Xershi, Действительно открыл консоль запросов и в ней посмотрел как получается запрос при добавление Порядка. Сделал так Вы рекомендовали - добавил поле в запрос Порядок и в сортировке указал по этому полю. Все получилось.
Всем спасибо! Тему можно закрыть.
5. DenisCh 28.08.15 11:35 Сейчас в теме
добавь свой реквизит ПорядокВПрайсе, заполняй и сортируй
15. SGordon1 28.08.15 16:25 Сейчас в теме
Похоже так надо :

|УПОРЯДОЧИТЬ ПО
| ТипЦен,
| ЦеноваяГруппаПорядок,


Сюда Добавить

| Номенклатура.Порядок,



| Номенклатура,
| ХарактеристикаНоменклатуры
16. serpolit 8 28.08.15 16:58 Сейчас в теме
(15) SGordon1, я так пробовал - результата не получил
17. SGordon1 28.08.15 17:09 Сейчас в теме
Я правильно понимаю, по ценовым группам нормально сортирует а Иерархия номенклатуры по алфавиту а не по порядку?
18. SGordon1 28.08.15 17:12 Сейчас в теме
Это типа стандартная обработка на построителе отчета, так? Кинь сюда скрин настройка прайс листа, закладка сортировка....
19. vasyak319 151 28.08.15 17:42 Сейчас в теме
Красиво не выйдет, но есть много вариантов, как сделать некрасиво. Например, если справочник двухуровневый, то в запросе построителя выбираете родителя элемента, сортируете по его реквизиту и выводите родителя в качестве группировки первого уровня.
20. SGordon1 28.08.15 17:44 Сейчас в теме
А в чем там затык, я так конечно не делал но все же?
Оставьте свое сообщение

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