Обработка для конвертации текста запроса, построенного на вложенных запросах, в запрос на временных таблицах для 8.2

16.07.14

Разработка - Инструментарий разработчика

Столкнулись с редактированием текста запроса под временные таблицы вместо вложенных запросов? Потеряли поля при таком редактировании? Тогда это вам пригодится

Скачать файлы

Наименование Файл Версия Размер
Обработка для конвертации теста запроса построенного на вложенных запросах в запрос на временных таблицах для 8.2
.epf 8,83Kb
38
.epf 1.0.0.0 8,83Kb 38 Скачать
После прочтения статьи "ТИПИЧНЫЕ ПРИЧИНЫ НЕОПТИМАЛЬНОЙ РАБОТЫ ЗАПРОСОВ И МЕТОДЫ ОПТИМИЗАЦИИ В 1С " появилось желание оптимизировать многие свои отчеты и запросы, и убрать из них все связи с вложенными запросами, переделав их во временные таблицы. Оказалось что делать это не так просто как на первый взгляд, иногда теряются какие то названия полей и в итоге могут потеряться итоговые поля или условия последнего запроса. Это привело к созданию такой обработки. Из особенностей отмечу автоматическую нумерацию вложенных запросов с названием "Вложенный запрос", а так же правильное установление порядка следования и вложенности вложенных запросов при преобразование в пакетный запрос. Проверял на больших запросах, работает отлично. Сохраняйте старую копию и формируйте по новому и сравнивайте результат. По моему опыту выигрыш в производительности дает значительный при очень больших запросах с большим количеством связей, у меня есть приме когда с 15 минут формирования сократился до 1 минуты. Значительный прирост производительности появился на SQL базах с редко обновляемой или не обновляемой статистикой. Подробнее про это влияние можете прочесть в статье в начале описания.

Теперь о самой обработке, до преобразования необходимо открыть текст запроса конструктором и нажать ОК, делается это для удаления лишних пробелов пустых строк и т.п. что бы конвертеру возможно было распознать конструкции вложенного запроса. Далее все просто скидываем текст наживаем "Преобразовать" и получаем новый текст. Есть еще кнопка "Заменить первый", она заменяет только внешний запрос во временную таблицу и далее не продолжает. 

!Внимание заменяет все вложенные запросы на временные, независимо от того используются они в соединении(или условии) или нет, т.е. для таких вложенных таблиц не происходит оптимизации!

Конвертация вложенный запрос временная таблица пакетный запрос

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122113    670    389    

714

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7286    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3524    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177737    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99344    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18108    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28107    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23601    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. help1Ckr 23.07.14 10:08 Сейчас в теме
Идея хорошая, но можно сделать еще лучше - встроить данный механизм в типовую консоль запросов
2. matveev.andrey.v 51 23.07.14 11:59 Сейчас в теме
(1) help1Ckr, спасибо за оценку, уже встроил, но выложить тут не смогу поскольку консоль запросов не моя разработка. Могу выслать консоль доработанную вам
3. aspirator23 339 27.07.14 15:21 Сейчас в теме
(2) И мне можно эту консоль получить? Часто приходится встречать запросы с вложенными подзапросами и переделывать.
4. matveev.andrey.v 51 28.07.14 07:19 Сейчас в теме
(3) aspirator23, Да конечно, отправил вам в ЛС
5. aspirator23 339 28.07.14 10:27 Сейчас в теме
17. a-m-gv 36 12.08.22 15:23 Сейчас в теме
6. dimas103 40 28.07.14 12:59 Сейчас в теме
Попробовал Из УТ 10.3 запрос "Печать прайс-листа" взять, он тормозит на PostgreSQl. Этой обработкой сделать не получилось. Не правильно конвертирует.
ВЫБРАТЬ РАЗРЕШЕННЫЕ //РАЗЛИЧНЫЕ
   ЗапросПрайс.ЦеноваяГруппа.Порядок КАК ЦеноваяГруппаПорядок,
	НЕ ЕСТЬNULL(ЗапросПрайс.Номенклатура.ВестиУчетПоХарактеристикам, ИСТИНА) КАК НетХарактеристик,
	ЗапросПрайс.ТипЦен.ПорядокОкругления КАК ПорядокОкругления,
	ЗапросПрайс.ТипЦен.ОкруглятьВБольшуюСторону КАК ОкруглятьВБольшуюСторону,
	ЗапросПрайс.ТипЦен КАК ТипЦен,
	ЗапросПрайс.ТипЦен.Представление КАК ТипЦенПредставление,
	ЗапросПрайс.ЦеноваяГруппа,
	ЗапросПрайс.ЦеноваяГруппа.Представление КАК ЦеноваяГруппаПредставление,
	ЗапросПрайс.Номенклатура КАК Номенклатура,
	ЗапросПрайс.Номенклатура.Представление КАК НоменклатураПредставление,
	ЗапросПрайс.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	ЗапросПрайс.ХарактеристикаНоменклатуры.Представление КАК ХарактеристикаНоменклатурыПредставление,
	Остатки.Остаток,
	МестаХранения.МестоХранения КАК Стеллаж,
	МестаХранения.МестоХранения.Представление КАК СтеллажПредставление,
	Штрихкоды.Штрихкод КАК ШтрихКод,
	ВЫБОР КОГДА ЗапросПрайс.Цена <> 0 ТОГДА
		ЗапросПрайс.ЕдиницаИзмерения.Представление
	ИНАЧЕ
		&ПустаяСтрока
	КОНЕЦ КАК ЕдиницаИзмерения,
	ВЫБОР КОГДА ЗапросПрайс.Цена <> 0 ТОГДА
		ЗапросПрайс.ВалютаПрайса.Представление
	ИНАЧЕ
		&ПустаяСтрока
	КОНЕЦ КАК Валюта,
	ВЫБОР КОГДА ЗапросПрайс.Валюта = ЗапросПрайс.ВалютаПрайса
			ИЛИ ЗапросПрайс.Цена = 0 ТОГДА
		ЗапросПрайс.Цена
	ИНАЧЕ
		ЗапросПрайс.Цена * ВЫБОР КОГДА КурсыВалютСрезПоследних.Курс = 0 ТОГДА
										1
									ИНАЧЕ
										КурсыВалютСрезПоследних.Курс КОНЕЦ
						 * ВЫБОР КОГДА КурсыВалютСрезПоследнихОтчет.Кратность = 0 ТОГДА
										1
									ИНАЧЕ
										КурсыВалютСрезПоследнихОтчет.Кратность КОНЕЦ
						 / ВЫБОР КОГДА КурсыВалютСрезПоследнихОтчет.Курс = 0 ТОГДА
										1
									ИНАЧЕ
										КурсыВалютСрезПоследнихОтчет.Курс КОНЕЦ
						 / ВЫБОР КОГДА КурсыВалютСрезПоследних.Кратность = 0 ТОГДА
										1
									ИНАЧЕ
										КурсыВалютСрезПоследних.Кратность КОНЕЦ
	КОНЕЦ КАК Цена
//СВОЙСТВА
//ПРЕДСТАВЛЕНИЯ_СВОЙСТВА
ИЗ
(ВЫБРАТЬ 
	ЦеныБазовые.ТипЦен КАК ТипЦен,
	ВЫБОР КОГДА &ВВалютеОтчета = ЛОЖЬ ТОГДА
		ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
			ЦеныБазовые.ТипЦен.ВалютаЦены
		ИНАЧЕ
			МИНИМУМ(
				ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
					ВЫБОР КОГДА ЦеныРасчетные.Валюта ЕСТЬ NULL ТОГДА
						ЦеныБазовые.Валюта
					ИНАЧЕ
						ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка ТОГДА
							ЦеныРасчетные.Валюта
						ИНАЧЕ
							ЦеныБазовые.ВалютаДиапазона
						КОНЕЦ
					КОНЕЦ
				ИНАЧЕ
					ЦеныБазовые.Валюта
				КОНЕЦ
			)
		КОНЕЦ
	ИНАЧЕ
		&ВалютаОтчета
	КОНЕЦ КАК ВалютаПрайса,
	ЦеныБазовые.ЦеноваяГруппа,
	ЦеныБазовые.Номенклатура,
	ЦеныБазовые.ХарактеристикаНоменклатуры,
	МИНИМУМ(
		ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
			ЦеныРасчетные.ЕдиницаИзмерения
		ИНАЧЕ
			ЦеныБазовые.ЕдиницаИзмерения
		КОНЕЦ
	) КАК ЕдиницаИзмерения,
	МИНИМУМ(
		ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
			ВЫБОР КОГДА ЦеныРасчетные.Валюта ЕСТЬ NULL ТОГДА
				ЦеныБазовые.Валюта
			ИНАЧЕ
				ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка ТОГДА
					ЦеныРасчетные.Валюта
				ИНАЧЕ
					ЦеныБазовые.ВалютаДиапазона
				КОНЕЦ
			КОНЕЦ
		ИНАЧЕ
			ЦеныБазовые.Валюта
		КОНЕЦ
	) КАК Валюта,
	МИНИМУМ(
		ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
			ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка ТОГДА
				ВЫБОР КОГДА ЦеныРасчетные.Цена ЕСТЬ NULL ТОГДА
					0
				ИНАЧЕ
               ВЫБОР КОГДА не ЦеныБазовые.ТипЦен.ЦенаВключаетНДС и ЦеныБазовые.Номенклатура.СтавкаНДС=Значение(Перечисление.СтавкиНДС.НДС18)
				ТОГДА	ЦеныРасчетные.Цена * (1 + ЦеныБазовые.ПроцентСкидкиНаценки / 100)*100/118
               КОГДА не ЦеныБазовые.ТипЦен.ЦенаВключаетНДС и ЦеныБазовые.Номенклатура.СтавкаНДС=Значение(Перечисление.СтавкиНДС.НДС10)
				ТОГДА	ЦеныРасчетные.Цена * (1 + ЦеныБазовые.ПроцентСкидкиНаценки / 100)*100/110
				иначе	ЦеныРасчетные.Цена * (1 + ЦеныБазовые.ПроцентСкидкиНаценки / 100) конец
				КОНЕЦ
			ИНАЧЕ
				ЦеныБазовые.ЦенаДиапазона
			КОНЕЦ
		ИНАЧЕ
			ЦеныБазовые.Цена
		КОНЕЦ
	) КАК Цена

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

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

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

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

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

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

{ГДЕ
ИСТИНА КАК СвойстваИКатегории
//СВОЙСТВА
//КАТЕГОРИИ
}
УПОРЯДОЧИТЬ ПО
	ТипЦен,
	ЦеноваяГруппаПорядок,
	Номенклатура,
	ХарактеристикаНоменклатуры
ИТОГИ МАКСИМУМ(Цена), МИНИМУМ(Валюта), МИНИМУМ(ЕдиницаИзмерения), МИНИМУМ(Остаток),
      МИНИМУМ(Стеллаж) , МИНИМУМ(СтеллажПредставление), МИНИМУМ(ШтрихКод),
      МИНИМУМ(НетХарактеристик), МИНИМУМ(ЦеноваяГруппа)
//ИТОГИ
ПО
	ЗапросПрайс.ТипЦен,
	ЗапросПрайс.ЦеноваяГруппа,
	ЗапросПрайс.Номенклатура,
	ЗапросПрайс.ХарактеристикаНоменклатуры
//ОБЩИЕ_СВОЙСТВА
АВТОУПОРЯДОЧИВАНИЕ
Показать
7. matveev.andrey.v 51 28.07.14 11:48 Сейчас в теме
(6) dimas103, Добрый день, судя по наличию комментариев в запросе типа "//ОБЩИЕ_СВОЙСТВА" вы не открыли ее конструктором и не нажали "ок" что бы удалить лишние символы как написано на основной странице обработки. Кроме того я не настраивал конвертер что бы он распознавал фигурный скобки {} которые используются в построителе запросов. Если еще кому то понадобится напишите сюда сообщение, пару человек наберется, допилю
8. dimas103 40 28.07.14 16:42 Сейчас в теме
(7) matveev.andrey.v, Да точно, лишнее не по убирал. Сначала статью прочитал потом через пару дней попробовать решил. Не получилось, сразу отписал. Если не сложно то добавь фигурные скобки. И хорошо бы еще Комменты. Вот в стандартной конфе написан такой запрос. При чем он формируется динамически в зависимости от настроек. Хотел твоей обработкой на лету его видоизменять. А этого нет. Вообще хорошая бы вещь получилась. Потому что часто пишут про оптимизацию запросов но в старых базах проще твоей обработкой изменить запрос чем перпеписывать логику запроса заново.
9. matveev.andrey.v 51 28.07.14 15:24 Сейчас в теме
(8) dimas103, Видишь ли если запрос формируется динамически то тебе будет сложно его преобразовать конверетром во временные таблицы, т.к. там после конвертирования его опять придется по кускам разбивать, по моему уже проще самому переделать. Фигурные скобки попробую доделать только честно говоря никогда ими не пользовался, придется попарится.
10. dimas103 40 28.07.14 17:30 Сейчас в теме
(9) matveev.andrey.v, Так втом то и идея что полностью готовый отчет сфоримрованный системой с условиями. Уже через твою обработку преобразовывать в запрос со временными таблицами и запускать дальше на выполнение.
11. matveev.andrey.v 51 28.07.14 18:26 Сейчас в теме
(10) dimas103, АААА тогда понятно но это нереализуемо, собрать текст запроса можно только при компиляции
12. matveev.andrey.v 51 29.07.14 08:45 Сейчас в теме
(10) dimas103, Сегодня еще раз подумал над вашим предложением и наконец понял, что вы имеете ввиду, зашить обработку в процедуру, которая при компиляции будет преобразовывать сформированный текст запроса. Идея отличная, спасибо! Вы кстати можете ее сами реализовать, поскольку текст обработки открытый, а такое будет совсем несложно сделать. Если мне когда нибудь понадобится такое, обязательно сделаю и выложу сюда код
13. aspirator23 339 30.07.14 18:23 Сейчас в теме
(12) matveev.andrey.v, Что-то вот такой запрос не может корректно преобразовать.
Полученный первый подзапрос пытается выбирать из таблицы, которой нет.
Это розница 1.0 отчет Торг29

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

СГРУППИРОВАТЬ ПО
	ВложенныйЗапрос.Склад,
	ВложенныйЗапрос.Номенклатура,
	ВложенныйЗапрос.ХарактеристикаНоменклатуры,
	ВложенныйЗапрос.Магазин
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЦеныНоменклатурыМагазиновСрезПоследних.Номенклатура КАК Номенклатура,
	ЦеныНоменклатурыМагазиновСрезПоследних.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	ВЫБОР
		КОГДА ЦеныНоменклатурыМагазиновСрезПоследних.ЕдиницаИзмерения.Коэффициент = 0
			ТОГДА ЦеныНоменклатурыМагазиновСрезПоследних.Цена
		ИНАЧЕ ЦеныНоменклатурыМагазиновСрезПоследних.Цена * ЦеныНоменклатурыМагазиновСрезПоследних.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатурыМагазиновСрезПоследних.ЕдиницаИзмерения.Коэффициент
	КОНЕЦ КАК Цена
ПОМЕСТИТЬ ЦеныНоменклатурыМагазиновСрезПоследнихНаКонец
ИЗ
	ТоварыНаСкладахОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних(
				&КонПериода,
				Магазин = &Магазин
					И Номенклатура В (&ОтборНоменклатуры)) КАК ЦеныНоменклатурыМагазиновСрезПоследних
		ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЦеныНоменклатурыМагазиновСрезПоследних.Номенклатура
			И ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры = ЦеныНоменклатурыМагазиновСрезПоследних.ХарактеристикаНоменклатуры
			И ТоварыНаСкладахОстаткиИОбороты.Магазин = ЦеныНоменклатурыМагазиновСрезПоследних.Магазин
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЦеныНоменклатурыМагазиновСрезПоследних.Номенклатура КАК Номенклатура,
	ЦеныНоменклатурыМагазиновСрезПоследних.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	ВЫБОР
		КОГДА ЦеныНоменклатурыМагазиновСрезПоследних.ЕдиницаИзмерения.Коэффициент = 0
			ТОГДА ЦеныНоменклатурыМагазиновСрезПоследних.Цена
		ИНАЧЕ ЦеныНоменклатурыМагазиновСрезПоследних.Цена * ЦеныНоменклатурыМагазиновСрезПоследних.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатурыМагазиновСрезПоследних.ЕдиницаИзмерения.Коэффициент
	КОНЕЦ КАК Цена
ПОМЕСТИТЬ ЦеныНоменклатурыМагазиновСрезПоследнихНаНачало
ИЗ
	ТоварыНаСкладахОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних(
				&КонецПредыдущегоПериода,
				Магазин = &Магазин
					И Номенклатура В (&ОтборНоменклатуры)) КАК ЦеныНоменклатурыМагазиновСрезПоследних
		ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЦеныНоменклатурыМагазиновСрезПоследних.Номенклатура
			И ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры = ЦеныНоменклатурыМагазиновСрезПоследних.ХарактеристикаНоменклатуры
			И ТоварыНаСкладахОстаткиИОбороты.Магазин = ЦеныНоменклатурыМагазиновСрезПоследних.Магазин
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЕСТЬNULL(СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток * ЕСТЬNULL(ЦеныНоменклатурыМагазиновСрезПоследнихНаНачалоСХарактеристик­ами.Цена, ЦеныНоменклатурыМагазиновСрезПоследнихНаНачалоБезХарактерист­ик.Цена)), 0) КАК СуммаНачало,
	ЕСТЬNULL(СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток * ЕСТЬNULL(ЦеныНоменклатурыМагазиновСрезПоследнихНаКонецСХарактеристика­ми.Цена, ЦеныНоменклатурыМагазиновСрезПоследнихНаКонецБезХарактеристи­к.Цена)), 0) КАК СуммаКонец
ИЗ
	ТоварыНаСкладахОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
		ЛЕВОЕ СОЕДИНЕНИЕ ЦеныНоменклатурыМагазиновСрезПоследнихНаНачало КАК ЦеныНоменклатурыМагазиновСрезПоследнихНаНачалоСХарактеристик­ами
		ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЦеныНоменклатурыМагазиновСрезПоследнихНаНачалоСХарактеристик­ами.Номенклатура
			И ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры = ЦеныНоменклатурыМагазиновСрезПоследнихНаНачалоСХарактеристик­ами.ХарактеристикаНоменклатуры
			И (ЦеныНоменклатурыМагазиновСрезПоследнихНаНачалоСХарактеристик­ами.ХарактеристикаНоменклатуры <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
		ЛЕВОЕ СОЕДИНЕНИЕ ЦеныНоменклатурыМагазиновСрезПоследнихНаКонец КАК ЦеныНоменклатурыМагазиновСрезПоследнихНаКонецСХарактеристика­ми
		ПО ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры = ЦеныНоменклатурыМагазиновСрезПоследнихНаКонецСХарактеристика­ми.ХарактеристикаНоменклатуры
			И (ЦеныНоменклатурыМагазиновСрезПоследнихНаКонецСХарактеристика­ми.ХарактеристикаНоменклатуры <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
			И ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЦеныНоменклатурыМагазиновСрезПоследнихНаКонецСХарактеристика­ми.Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ ЦеныНоменклатурыМагазиновСрезПоследнихНаКонец КАК ЦеныНоменклатурыМагазиновСрезПоследнихНаКонецБезХарактеристи­к
		ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЦеныНоменклатурыМагазиновСрезПоследнихНаКонецБезХарактеристи­к.Номенклатура
			И (ЦеныНоменклатурыМагазиновСрезПоследнихНаКонецБезХарактеристи­к.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
		ЛЕВОЕ СОЕДИНЕНИЕ ЦеныНоменклатурыМагазиновСрезПоследнихНаНачало КАК ЦеныНоменклатурыМагазиновСрезПоследнихНаНачалоБезХарактерист­ик
		ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЦеныНоменклатурыМагазиновСрезПоследнихНаНачалоБезХарактерист­ик.Номенклатура
			И (ЦеныНоменклатурыМагазиновСрезПоследнихНаНачалоБезХарактерист­ик.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ТоварыНаСкладахОбороты.Период КАК Период,
	ТоварыНаСкладахОбороты.Регистратор КАК Регистратор,
	ТоварыНаСкладахОбороты.Номенклатура,
	ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры,
	ТоварыНаСкладахОбороты.КоличествоПриход,
	ТоварыНаСкладахОбороты.КоличествоРасход,
	ТоварыНаСкладахОбороты.Склад.Магазин КАК Магазин
ПОМЕСТИТЬ ТоварыНаСкладахОбороты
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Обороты(&НачПериода, &КонПериода, Регистратор, Склад = &Склад) КАК ТоварыНаСкладахОбороты

ИНДЕКСИРОВАТЬ ПО
	Период
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЦеныНоменклатурыМагазинов.Период КАК Период,
	ЦеныНоменклатурыМагазинов.Регистратор КАК Регистратор,
	ЦеныНоменклатурыМагазинов.Номенклатура,
	ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры,
	ВЫБОР
		КОГДА ЕСТЬNULL(ЦеныНоменклатурыМагазинов.ЕдиницаИзмерения.Коэффициент, 0) = 0
			ТОГДА ЦеныНоменклатурыМагазинов.Цена
		ИНАЧЕ ЦеныНоменклатурыМагазинов.Цена * ЦеныНоменклатурыМагазинов.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатурыМагазинов.ЕдиницаИзмерения.Коэффициент
	КОНЕЦ КАК Цена,
	ЦеныНоменклатурыМагазинов.Магазин
ПОМЕСТИТЬ ЦеныНоменклатурыМагазинов
ИЗ
	РегистрСведений.ЦеныНоменклатурыМагазинов КАК ЦеныНоменклатурыМагазинов
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТоварыНаСкладахОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
		ПО ЦеныНоменклатурыМагазинов.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
			И ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры
			И ЦеныНоменклатурыМагазинов.Магазин = ТоварыНаСкладахОстаткиИОбороты.Магазин
ГДЕ
	ЦеныНоменклатурыМагазинов.Магазин = &Магазин
	И ЦеныНоменклатурыМагазинов.Период <= &КонПериодаДата

ИНДЕКСИРОВАТЬ ПО
	Период
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЦеныНоменклатурыМагазинов.Период КАК Период,
	ЦеныНоменклатурыМагазинов.Регистратор КАК Регистратор,
	ЦеныНоменклатурыМагазинов.Номенклатура,
	ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры,
	ЦеныНоменклатурыМагазинов.Магазин,
	ЦеныНоменклатурыМагазинов.Цена КАК Цена
ПОМЕСТИТЬ ТаблицаИзмененияЦен
ИЗ
	ЦеныНоменклатурыМагазинов КАК ЦеныНоменклатурыМагазинов
ГДЕ
	ЦеныНоменклатурыМагазинов.Период >= &НачПериодаДата

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0),
	ЗНАЧЕНИЕ(Документ.ОприходованиеТоваров.ПустаяСсылка),
	ЦеныНоменклатурыМагазиновСрезПоследних.Номенклатура,
	ЦеныНоменклатурыМагазиновСрезПоследних.ХарактеристикаНоменклатуры,
	ЦеныНоменклатурыМагазиновСрезПоследних.Магазин,
	ЦеныНоменклатурыМагазиновСрезПоследних.Цена * ЦеныНоменклатурыМагазиновСрезПоследних.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатурыМагазиновСрезПоследних.ЕдиницаИзмерения.Коэффициент
ИЗ
	РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних(&КонецПредыдущегоПериода, Магазин = &Магазин) КАК ЦеныНоменклатурыМагазиновСрезПоследних
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТоварыНаСкладахОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
		ПО ЦеныНоменклатурыМагазиновСрезПоследних.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
			И ЦеныНоменклатурыМагазиновСрезПоследних.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры
			И ЦеныНоменклатурыМагазиновСрезПоследних.Магазин = ТоварыНаСкладахОстаткиИОбороты.Магазин

ИНДЕКСИРОВАТЬ ПО
	Период
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВложенныйЗапрос.Номенклатура,
	ВложенныйЗапрос.ХарактеристикаНоменклатуры,
	ВложенныйЗапрос.Магазин,
	ВложенныйЗапрос.Период КАК Период,
	ВложенныйЗапрос.Цена,
	ВложенныйЗапрос.ПериодПредыдущий,
	ЕСТЬNULL(ТаблицаИзмененияЦен.Цена, 0) КАК ЦенаПредыдущая,
	ВложенныйЗапрос.Регистратор КАК Регистратор
ПОМЕСТИТЬ ТабСПредыдущемиЦенами
ИЗ
	(ВЫБРАТЬ
		ТаблицаИзмененияЦен.Номенклатура КАК Номенклатура,
		ТаблицаИзмененияЦен.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
		ТаблицаИзмененияЦен.Магазин КАК Магазин,
		ТаблицаИзмененияЦен.Период КАК Период,
		ТаблицаИзмененияЦен.Цена КАК Цена,
		МАКСИМУМ(ЕСТЬNULL(ТаблицаИзмененияЦен1.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))) КАК ПериодПредыдущий,
		ТаблицаИзмененияЦен.Регистратор КАК Регистратор
	ИЗ
		ТаблицаИзмененияЦен КАК ТаблицаИзмененияЦен
			ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаИзмененияЦен КАК ТаблицаИзмененияЦен1
			ПО ТаблицаИзмененияЦен.Номенклатура = ТаблицаИзмененияЦен1.Номенклатура
				И ТаблицаИзмененияЦен.ХарактеристикаНоменклатуры = ТаблицаИзмененияЦен1.ХарактеристикаНоменклатуры
				И ТаблицаИзмененияЦен.Магазин = ТаблицаИзмененияЦен1.Магазин
				И ТаблицаИзмененияЦен.Период > ТаблицаИзмененияЦен1.Период
	
	СГРУППИРОВАТЬ ПО
		ТаблицаИзмененияЦен.ХарактеристикаНоменклатуры,
		ТаблицаИзмененияЦен.Номенклатура,
		ТаблицаИзмененияЦен.Магазин,
		ТаблицаИзмененияЦен.Период,
		ТаблицаИзмененияЦен.Цена,
		ТаблицаИзмененияЦен.Регистратор) КАК ВложенныйЗапрос
		ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаИзмененияЦен КАК ТаблицаИзмененияЦен
		ПО ВложенныйЗапрос.Номенклатура = ТаблицаИзмененияЦен.Номенклатура
			И ВложенныйЗапрос.ХарактеристикаНоменклатуры = ТаблицаИзмененияЦен.ХарактеристикаНоменклатуры
			И ВложенныйЗапрос.Магазин = ТаблицаИзмененияЦен.Магазин
			И ВложенныйЗапрос.ПериодПредыдущий = ТаблицаИзмененияЦен.Период
ГДЕ
	ВложенныйЗапрос.Период <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
	И ВложенныйЗапрос.Цена <> ЕСТЬNULL(ТаблицаИзмененияЦен.Цена, 0)

ИНДЕКСИРОВАТЬ ПО
	Период
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ТоварыНаСкладахОстаткиИОбороты.Период КАК Период,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
	ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры,
	СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Регистратор
ПОМЕСТИТЬ ТабОстатки
ИЗ
	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
			&НачПериода,
			&КонПериода,
			Регистратор,
			,
			Склад = &Склад
				И Номенклатура В (&ОтборНоменклатуры)) КАК ТоварыНаСкладахОстаткиИОбороты

СГРУППИРОВАТЬ ПО
	ТоварыНаСкладахОстаткиИОбороты.Период,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
	ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры,
	ТоварыНаСкладахОстаткиИОбороты.Регистратор

ИНДЕКСИРОВАТЬ ПО
	Период
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВложенныйЗапрос.Регистратор КАК Регистратор,
	ВложенныйЗапрос.Период КАК Период,
	СУММА(ВЫБОР
			КОГДА ВложенныйЗапрос.Цена > ВложенныйЗапрос.ЦенаПредыдущая
				ТОГДА (ВложенныйЗапрос.Цена - ВложенныйЗапрос.ЦенаПредыдущая) * ВложенныйЗапрос.Остаток
			ИНАЧЕ 0
		КОНЕЦ) КАК СуммаПрихода,
	СУММА(ВЫБОР
			КОГДА ВложенныйЗапрос.Цена > ВложенныйЗапрос.ЦенаПредыдущая
				ТОГДА 0
			ИНАЧЕ -(ВложенныйЗапрос.Цена - ВложенныйЗапрос.ЦенаПредыдущая) * ВложенныйЗапрос.Остаток
		КОНЕЦ) КАК СуммаРасхода
ПОМЕСТИТЬ ТабПереоценка
ИЗ
	(ВЫБРАТЬ
		ВложенныйЗапрос.Номенклатура КАК Номенклатура,
		ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
		ВложенныйЗапрос.Регистратор КАК Регистратор,
		ВложенныйЗапрос.Период КАК Период,
		ЕСТЬNULL(ТабОстатки.КоличествоКонечныйОстаток, 0) КАК Остаток,
		ВложенныйЗапрос.Цена КАК Цена,
		ВложенныйЗапрос.ЦенаПредыдущая КАК ЦенаПредыдущая
	ИЗ
		(ВЫБРАТЬ
			ВложенныйЗапрос.Номенклатура КАК Номенклатура,
			ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
			ВложенныйЗапрос.Период КАК Период,
			ВложенныйЗапрос.Регистратор КАК Регистратор,
			ВложенныйЗапрос.ПериодОстатка КАК ПериодОстатка,
			ВложенныйЗапрос.Цена КАК Цена,
			ВложенныйЗапрос.ЦенаПредыдущая КАК ЦенаПредыдущая,
			МАКСИМУМ(ТабОстатки.Регистратор) КАК РегистраторОстатка
		ИЗ
			(ВЫБРАТЬ
				ТабСПредыдущемиЦенами.Номенклатура КАК Номенклатура,
				ТабОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
				ТабСПредыдущемиЦенами.Период КАК Период,
				ТабСПредыдущемиЦенами.Регистратор КАК Регистратор,
				МАКСИМУМ(ТабОстатки.Период) КАК ПериодОстатка,
				ТабСПредыдущемиЦенами.Цена КАК Цена,
				ТабСПредыдущемиЦенами.ЦенаПредыдущая КАК ЦенаПредыдущая
			ИЗ
				ТабСПредыдущемиЦенами КАК ТабСПредыдущемиЦенами
					ЛЕВОЕ СОЕДИНЕНИЕ ТабОстатки КАК ТабОстатки
					ПО ТабСПредыдущемиЦенами.Номенклатура = ТабОстатки.Номенклатура
						И (ТабСПредыдущемиЦенами.Период > ТабОстатки.Период
							ИЛИ ТабСПредыдущемиЦенами.Период = ТабОстатки.Период
								И ТабСПредыдущемиЦенами.Регистратор > ТабОстатки.Регистратор)
						И (ТабСПредыдущемиЦенами.ХарактеристикаНоменклатуры = ТабОстатки.ХарактеристикаНоменклатуры
							ИЛИ ТабСПредыдущемиЦенами.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
			ГДЕ
				(НЕ ТабОстатки.Период ЕСТЬ NULL )
			
			СГРУППИРОВАТЬ ПО
				ТабСПредыдущемиЦенами.Регистратор,
				ТабОстатки.ХарактеристикаНоменклатуры,
				ТабСПредыдущемиЦенами.Номенклатура,
				ТабСПредыдущемиЦенами.Период,
				ТабСПредыдущемиЦенами.Цена,
				ТабСПредыдущемиЦенами.ЦенаПредыдущая) КАК ВложенныйЗапрос
				ЛЕВОЕ СОЕДИНЕНИЕ ТабОстатки КАК ТабОстатки
				ПО ВложенныйЗапрос.Номенклатура = ТабОстатки.Номенклатура
					И ВложенныйЗапрос.ХарактеристикаНоменклатуры = ТабОстатки.ХарактеристикаНоменклатуры
					И ВложенныйЗапрос.ПериодОстатка = ТабОстатки.Период
		
		СГРУППИРОВАТЬ ПО
			ВложенныйЗапрос.Номенклатура,
			ВложенныйЗапрос.ХарактеристикаНоменклатуры,
			ВложенныйЗапрос.Период,
			ВложенныйЗапрос.Регистратор,
			ВложенныйЗапрос.ПериодОстатка,
			ВложенныйЗапрос.Цена,
			ВложенныйЗапрос.ЦенаПредыдущая) КАК ВложенныйЗапрос
			ЛЕВОЕ СОЕДИНЕНИЕ ТабОстатки КАК ТабОстатки
			ПО ВложенныйЗапрос.Номенклатура = ТабОстатки.Номенклатура
				И ВложенныйЗапрос.ХарактеристикаНоменклатуры = ТабОстатки.ХарактеристикаНоменклатуры
				И ВложенныйЗапрос.ПериодОстатка = ТабОстатки.Период
				И ВложенныйЗапрос.РегистраторОстатка = ТабОстатки.Регистратор
	ГДЕ
		ЕСТЬNULL(ТабОстатки.КоличествоКонечныйОстаток, 0) > 0) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
	ВложенныйЗапрос.Регистратор,
	ВложенныйЗапрос.Период

ИНДЕКСИРОВАТЬ ПО
	Период
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЦеныНоменклатурыМагазинов.Период КАК Период,
	ЦеныНоменклатурыМагазинов.Регистратор КАК Регистратор,
	ЦеныНоменклатурыМагазинов.Номенклатура,
	ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры,
	ЦеныНоменклатурыМагазинов.Цена,
	ЦеныНоменклатурыМагазинов.Магазин
ПОМЕСТИТЬ ЦеныНоменклатурыМагазиновБезХарактеристик
ИЗ
	ЦеныНоменклатурыМагазинов КАК ЦеныНоменклатурыМагазинов
ГДЕ
	ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)

ИНДЕКСИРОВАТЬ ПО
	Период
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЦеныНоменклатурыМагазинов.Период КАК Период,
	ЦеныНоменклатурыМагазинов.Регистратор КАК Регистратор,
	ЦеныНоменклатурыМагазинов.Номенклатура,
	ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры,
	ЦеныНоменклатурыМагазинов.Цена,
	ЦеныНоменклатурыМагазинов.Магазин
ПОМЕСТИТЬ ЦеныНоменклатурыМагазиновСХарактеристиками
ИЗ
	ЦеныНоменклатурыМагазинов КАК ЦеныНоменклатурыМагазинов
ГДЕ
	ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)

ИНДЕКСИРОВАТЬ ПО
	Период
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЗапросПоДокументам.Регистратор КАК Регистратор,
	ЕСТЬNULL(ЗапросПоДокументам.СуммаПриход, 0) КАК СуммаПриход,
	ЕСТЬNULL(ЗапросПоДокументам.СуммаРасход, 0) КАК СуммаРасход,
	ЕСТЬNULL(ЗапросПоДокументам.КоличествоПриход, 0) КАК КоличествоПриход,
	ЕСТЬNULL(ЗапросПоДокументам.КоличествоРасход, 0) КАК КоличествоРасход,
	ПРЕДСТАВЛЕНИЕ(ЗапросПоДокументам.Регистратор) КАК ПредставлениеРегистратора,
	ВЫБОР
		КОГДА ЗапросПоДокументам.Регистратор ССЫЛКА Документ.ПоступлениеТоваров
				ИЛИ ЗапросПоДокументам.Регистратор ССЫЛКА Документ.ПриходныйОрдерНаТовары
					И (ЗапросПоДокументам.Регистратор.ДокументОснование ССЫЛКА Документ.ПоступлениеТоваров
						ИЛИ ЗапросПоДокументам.Регистратор.ДокументОснование ССЫЛКА Документ.ПеремещениеТоваров)
				ИЛИ ЗапросПоДокументам.Регистратор ССЫЛКА Документ.ВозвратТоваровПоставщику
				ИЛИ ЗапросПоДокументам.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары
					И ЗапросПоДокументам.Регистратор.ДокументОснование ССЫЛКА Документ.ВозвратТоваровПоставщику
				ИЛИ ЗапросПоДокументам.Регистратор ССЫЛКА Документ.ОприходованиеТоваров
				ИЛИ ЗапросПоДокументам.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
			ТОГДА ЗапросПоДокументам.Регистратор.СуммаДокумента
		ИНАЧЕ 0
	КОНЕЦ КАК СуммаЗакупки,
	ВЫБОР
		КОГДА ЗапросПоДокументам.Регистратор ССЫЛКА Документ.РеализацияТоваров
				ИЛИ ЗапросПоДокументам.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары
					И (ЗапросПоДокументам.Регистратор.ДокументОснование ССЫЛКА Документ.РеализацияТоваров
						ИЛИ ЗапросПоДокументам.Регистратор.ДокументОснование ССЫЛКА Документ.ПеремещениеТоваров)
				ИЛИ ЗапросПоДокументам.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя
				ИЛИ ЗапросПоДокументам.Регистратор ССЫЛКА Документ.ПриходныйОрдерНаТовары
					И ЗапросПоДокументам.Регистратор.ДокументОснование ССЫЛКА Документ.ВозвратТоваровОтПокупателя
				ИЛИ ЗапросПоДокументам.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
				ИЛИ ЗапросПоДокументам.Регистратор ССЫЛКА Документ.ЧекККМ
				ИЛИ ЗапросПоДокументам.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
				ИЛИ ЗапросПоДокументам.Регистратор ССЫЛКА Документ.СписаниеТоваров
			ТОГДА ЗапросПоДокументам.Регистратор.СуммаДокумента
		ИНАЧЕ 0
	КОНЕЦ КАК СуммаПродажи,
	ЗапросПоДокументам.ДатаДок КАК ДатаДок
ИЗ
	(ВЫБРАТЬ
		ВложенныйЗапросСЦенамиПоРегистраторам.Регистратор КАК Регистратор,
		СУММА(ЕСТЬNULL(ВложенныйЗапросСЦенамиПоРегистраторам.СуммаПриход, 0)) КАК СуммаПриход,
		СУММА(ЕСТЬNULL(ВложенныйЗапросСЦенамиПоРегистраторам.СуммаРасход, 0)) КАК СуммаРасход,
		СУММА(ВложенныйЗапросСЦенамиПоРегистраторам.КоличествоПриход) КАК КоличествоПриход,
		СУММА(ВложенныйЗапросСЦенамиПоРегистраторам.КоличествоРасход) КАК КоличествоРасход,
		ВложенныйЗапросСЦенамиПоРегистраторам.ПериодОстатка КАК ДатаДок
	ИЗ
		(ВЫБРАТЬ
			ВложенныйЗапросСПериодамиЦенПоРегистраторам.Регистратор КАК Регистратор,
			ВложенныйЗапросСПериодамиЦенПоРегистраторам.Номенклатура КАК Номенклатура,
			ВложенныйЗапросСПериодамиЦенПоРегистраторам.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
			ЕСТЬNULL(ЦеныНоменклатурыМагазинов.Цена, ЦеныНоменклатурыМагазиновБезХарактеристик.Цена) КАК Цена,
			ВложенныйЗапросСПериодамиЦенПоРегистраторам.Период КАК Период,
			ВложенныйЗапросСПериодамиЦенПоРегистраторам.КоличествоПриход * ЕСТЬNULL(ЦеныНоменклатурыМагазинов.Цена, ЦеныНоменклатурыМагазиновБезХарактеристик.Цена) КАК СуммаПриход,
			ВложенныйЗапросСПериодамиЦенПоРегистраторам.КоличествоРасход * ЕСТЬNULL(ЦеныНоменклатурыМагазинов.Цена, ЦеныНоменклатурыМагазиновБезХарактеристик.Цена) КАК СуммаРасход,
			ВложенныйЗапросСПериодамиЦенПоРегистраторам.КоличествоПриход КАК КоличествоПриход,
			ВложенныйЗапросСПериодамиЦенПоРегистраторам.КоличествоРасход КАК КоличествоРасход,
			ВложенныйЗапросСПериодамиЦенПоРегистраторам.ПериодОстатка КАК ПериодОстатка
		ИЗ
			(ВЫБРАТЬ
				ВложенныйЗапрос.Регистратор КАК Регистратор,
				ВложенныйЗапрос.Номенклатура КАК Номенклатура,
				ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
				ВложенныйЗапрос.Период КАК Период,
				ВложенныйЗапрос.КоличествоПриход КАК КоличествоПриход,
				ВложенныйЗапрос.КоличествоРасход КАК КоличествоРасход,
				МАКСИМУМ(ЕСТЬNULL(ЦеныНоменклатурыМагазинов.Регистратор, ЦеныНоменклатурыМагазиновБезХарактеристик.Регистратор)) КАК РегистраторЦен,
				ВложенныйЗапрос.ПериодОстатка КАК ПериодОстатка
			ИЗ
				(ВЫБРАТЬ
					ТоварыНаСкладахОбороты.Регистратор КАК Регистратор,
					ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура,
					ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
					МАКСИМУМ(ЕСТЬNULL(ЦеныНоменклатурыМагазинов.Период, ЦеныНоменклатурыМагазиновБезХарактеристик.Период)) КАК Период,
					ТоварыНаСкладахОбороты.КоличествоПриход КАК КоличествоПриход,
					ТоварыНаСкладахОбороты.КоличествоРасход КАК КоличествоРасход,
					ТоварыНаСкладахОбороты.Период КАК ПериодОстатка
				ИЗ
					ТоварыНаСкладахОбороты КАК ТоварыНаСкладахОбороты
						ЛЕВОЕ СОЕДИНЕНИЕ ЦеныНоменклатурыМагазиновСХарактеристиками КАК ЦеныНоменклатурыМагазинов
						ПО (ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
							И ТоварыНаСкладахОбороты.Номенклатура = ЦеныНоменклатурыМагазинов.Номенклатура
							И ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры = ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры
							И (ТоварыНаСкладахОбороты.Период > ЦеныНоменклатурыМагазинов.Период
								ИЛИ ТоварыНаСкладахОбороты.Период = ЦеныНоменклатурыМагазинов.Период
									И ТоварыНаСкладахОбороты.Регистратор > ЦеныНоменклатурыМагазинов.Регистратор)
						ЛЕВОЕ СОЕДИНЕНИЕ ЦеныНоменклатурыМагазиновБезХарактеристик КАК ЦеныНоменклатурыМагазиновБезХарактеристик
						ПО ТоварыНаСкладахОбороты.Номенклатура = ЦеныНоменклатурыМагазиновБезХарактеристик.Номенклатура
							И (ЦеныНоменклатурыМагазиновБезХарактеристик.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
							И (ТоварыНаСкладахОбороты.Период > ЦеныНоменклатурыМагазиновБезХарактеристик.Период
								ИЛИ ТоварыНаСкладахОбороты.Период = ЦеныНоменклатурыМагазиновБезХарактеристик.Период
									И ТоварыНаСкладахОбороты.Регистратор > ЦеныНоменклатурыМагазиновБезХарактеристик.Регистратор)
				
				СГРУППИРОВАТЬ ПО
					ТоварыНаСкладахОбороты.Регистратор,
					ТоварыНаСкладахОбороты.Номенклатура,
					ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры,
					ТоварыНаСкладахОбороты.КоличествоПриход,
					ТоварыНаСкладахОбороты.КоличествоРасход,
					ТоварыНаСкладахОбороты.Период) КАК ВложенныйЗапрос
					ЛЕВОЕ СОЕДИНЕНИЕ ЦеныНоменклатурыМагазиновСХарактеристиками КАК ЦеныНоменклатурыМагазинов
					ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыМагазинов.Номенклатура
						И ВложенныйЗапрос.ХарактеристикаНоменклатуры = ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры
						И (ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
						И ВложенныйЗапрос.Период = ЦеныНоменклатурыМагазинов.Период
					ЛЕВОЕ СОЕДИНЕНИЕ ЦеныНоменклатурыМагазиновБезХарактеристик КАК ЦеныНоменклатурыМагазиновБезХарактеристик
					ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыМагазиновБезХарактеристик.Номенклатура
						И (ЦеныНоменклатурыМагазиновБезХарактеристик.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
						И ВложенныйЗапрос.Период = ЦеныНоменклатурыМагазиновБезХарактеристик.Период
			
			СГРУППИРОВАТЬ ПО
				ВложенныйЗапрос.Регистратор,
				ВложенныйЗапрос.Номенклатура,
				ВложенныйЗапрос.ХарактеристикаНоменклатуры,
				ВложенныйЗапрос.КоличествоПриход,
				ВложенныйЗапрос.КоличествоРасход,
				ВложенныйЗапрос.Период,
				ВложенныйЗапрос.ПериодОстатка) КАК ВложенныйЗапросСПериодамиЦенПоРегистраторам
				ЛЕВОЕ СОЕДИНЕНИЕ ЦеныНоменклатурыМагазиновСХарактеристиками КАК ЦеныНоменклатурыМагазинов
				ПО ВложенныйЗапросСПериодамиЦенПоРегистраторам.Номенклатура = ЦеныНоменклатурыМагазинов.Номенклатура
					И ВложенныйЗапросСПериодамиЦенПоРегистраторам.ХарактеристикаНоменклатуры = ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры
					И ВложенныйЗапросСПериодамиЦенПоРегистраторам.Период = ЦеныНоменклатурыМагазинов.Период
					И (ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
					И ВложенныйЗапросСПериодамиЦенПоРегистраторам.РегистраторЦен = ЦеныНоменклатурыМагазинов.Регистратор
				ЛЕВОЕ СОЕДИНЕНИЕ ЦеныНоменклатурыМагазиновБезХарактеристик КАК ЦеныНоменклатурыМагазиновБезХарактеристик
				ПО ВложенныйЗапросСПериодамиЦенПоРегистраторам.Номенклатура = ЦеныНоменклатурыМагазиновБезХарактеристик.Номенклатура
					И (ЦеныНоменклатурыМагазиновБезХарактеристик.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
					И ВложенныйЗапросСПериодамиЦенПоРегистраторам.Период = ЦеныНоменклатурыМагазиновБезХарактеристик.Период
					И ВложенныйЗапросСПериодамиЦенПоРегистраторам.РегистраторЦен = ЦеныНоменклатурыМагазиновБезХарактеристик.Регистратор) КАК ВложенныйЗапросСЦенамиПоРегистраторам
	
	СГРУППИРОВАТЬ ПО
		ВложенныйЗапросСЦенамиПоРегистраторам.Регистратор,
		ВложенныйЗапросСЦенамиПоРегистраторам.ПериодОстатка
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		ТабПереоценка.Регистратор,
		ТабПереоценка.СуммаПрихода,
		ТабПереоценка.СуммаРасхода,
		0,
		0,
		ТабПереоценка.Период
	ИЗ
		ТабПереоценка КАК ТабПереоценка) КАК ЗапросПоДокументам

УПОРЯДОЧИТЬ ПО
	ДатаДок,
	Регистратор
Показать
14. matveev.andrey.v 51 31.07.14 08:59 Сейчас в теме
(13) aspirator23, Добрый день. Да вижу что сконвертировался неправильно. К сожалению у меня нет этой конфигурации что бы протестировать с конструктором, vогли бы вы выслать dt
15. aspirator23 339 31.07.14 14:11 Сейчас в теме
(14) matveev.andrey.v, С Dt-файлом сложновато. Выслал сам отчет Торг29 и cf-файл в личную и здесь прикрепил отчет.
Возможно причина в том что там сложная вложенность запросов.
Прикрепленные файлы:
ТОРГ29.rar
16. roschupkin_e 20.03.17 13:37 Сейчас в теме
можно еще добавить логику ухода от дублирования названий ВТ.
Тестовый запрос с одинаковыми названиями уже не разбирает правильно.
ВЫБРАТЬ
	ВложенныйЗапрос2.Ссылка,
	ВложенныйЗапрос2.Код,
	ВложенныйЗапрос2.Наименование
ИЗ
	(ВЫБРАТЬ
		ВложенныйЗапрос2.Ссылка КАК Ссылка,
		ВложенныйЗапрос2.Код КАК Код,
		ВложенныйЗапрос2.Наименование КАК Наименование
	ИЗ
		(ВЫБРАТЬ
			Контрагенты.Ссылка КАК Ссылка,
			Контрагенты.Код КАК Код,
			Контрагенты.Наименование КАК Наименование
		ИЗ
			Справочник.Контрагенты КАК Контрагенты) КАК ВложенныйЗапрос2) КАК ВложенныйЗапрос2
Показать
18. MVK80 01.02.23 13:24 Сейчас в теме
(0), а обратное преобразование (из ВТ во вложенные запросы) сложно "допилить"? А то 1С:Аналитика в виде дополнительных источников данных принимает запросы, в которых не должно быть временных таблиц. Так приходится запросы с ВТ преобразовывать в запросы с вложенными запросами :).

Вот тут написано если что про это:
"Но «1С:Аналитика» – не СКД, у нее меньше возможностей, и запросы для дополнительных источников имеют ряд ограничений:
Не могут содержать пакетные запросы и использовать временные таблицы. Мы можем использовать только подзапросы. Это сделано для быстродействия: если будем использовать временные таблицы или пакеты запросов, у нас отчеты будут формироваться долго."

PS. В курсе что в инструментах разработчика (ИР) в консоли запросов есть преобразование в подзапрос. Но не нашел как там сделать быстро это во всеми запросами в пакете.
19. SunShinne 633 10.02.23 11:37 Сейчас в теме
Блин, мне наоборот нужно, во вложенные запросы переделать временные таблицы, эксель при выполнении запроса по com не читает результирующую таблицу, если она с временными таблицами
Оставьте свое сообщение