1. user1202776 05.11.19 14:36 Сейчас в теме

Недостаточно памяти для выполнения запроса

ВЫБРАТЬ
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Код КАК Код,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Артикул КАК Артикул,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Производитель КАК Производитель,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Родитель КАК Родитель,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Ссылка КАК Номенклатура,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
	БазЦена.Цена КАК БазоваяЦена,
	ПеремещениеТоваровТовары.Количество КАК КоличествоПеремещения,
	ПараметрыНоменклатуры.МинимальноеКратноеКоличество КАК ТОП,
	ЗакупЦена.ЗакупочнаяЦена
ИЗ
	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
			ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
		ИЗ
			РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
		ГДЕ
			ЦеныНоменклатурыСрезПоследних.ТипЦен = ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.БазовыеЦены)) КАК БазЦена
		ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = БазЦена.Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
		ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ПеремещениеТоваровТовары.Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыНоменклатуры КАК ПараметрыНоменклатуры
		ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ПараметрыНоменклатуры.Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
			ПоступлениеТоваровУслугТовары.Цена КАК ЗакупочнаяЦена,
			ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
		ИЗ
			Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары) КАК ЗакупЦена
[1C-CODE]		ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЗакупЦена.Номенклатура
Показать

Что делаю не так и как правильно написать запрос?
Прикрепленные файлы:
Ответы
Избранное Подписка Сортировка: Древо
2. user856012 8 05.11.19 14:38 Сейчас в теме
(1)
как правильно написать запрос?
Предполагаю, что запрос тут непричем, просто платформа (сервер, ОС) x32 исчерпала свои ресурсы, переводите всё на x64.
3. user1202776 05.11.19 14:40 Сейчас в теме
(2)проверял на файловой базе и на базе sql . и там и там одна и та же ошибка
4. user856012 8 05.11.19 14:41 Сейчас в теме
(3) При чем тут формат базы? Разрядность Windows и платформы 1С какая?
5. user1202776 05.11.19 14:43 Сейчас в теме
(4)притом ,что sql мощнее. windows 64, а 1С 32
9. user995537 19 05.11.19 15:12 Сейчас в теме
(1) Вы же понимаете, что выгружаете в память все строки всех документов поступление товаров и скорее всего перемещений.
Попробуйте использовать временные таблицы и уничтожать их чтобы освобождать память
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ТоварыНаСкладахОстатки.Склад КАК Склад,
	ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
	ТоварыНаСкладахОстатки.КоличествоОстаток
ПОМЕСТИТЬ ВтОстатки
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки

ИНДЕКСИРОВАТЬ ПО
	Склад,
	Номенклатура
;

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

////////////////////////////////////////////////////////////­////////////////////
УНИЧТОЖИТЬ ВтОстатки
;

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

СГРУППИРОВАТЬ ПО
	ВтМХ.Склад,
	ВтМХ.Номенклатура,
	ВтМХ.Приоритет,
	ВтМХ.МестоХранения,
	ВтМХ.Остаток,
	ВтМХ.ЕстьМестоХранения
;

////////////////////////////////////////////////////////////­////////////////////
УНИЧТОЖИТЬ ВтМХ
;

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

СГРУППИРОВАТЬ ПО
	ВтШК.Склад,
	ВтШК.Номенклатура,
	ВтШК.Приоритет,
	ВтШК.МестоХранения,
	ВтШК.Остаток,
	ВтШК.ЕстьМестоХранения,
	ВтШК.Штрихкод
;

////////////////////////////////////////////////////////////­////////////////////
УНИЧТОЖИТЬ ВтШК
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВтШК1.Склад,
	ВтШК1.Номенклатура,
	ВтШК1.Приоритет,
	ВтШК1.МестоХранения,
	ВтШК1.Остаток КАК Количество,
	ВтШК1.ЕстьМестоХранения,
	ВтШК1.Штрихкод,
	ВтШК1.Штрихкод1,
	Штрихкоды.Штрихкод КАК Штрихкод2,
	"Остаток" КАК Остаток
ИЗ
	ВтШК1 КАК ВтШК1
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
		ПО ВтШК1.Номенклатура = Штрихкоды.Владелец
			И (НЕ Штрихкоды.Штрихкод В
					(ВЫБРАТЬ РАЗЛИЧНЫЕ
						ВтШК1.Штрихкод
					ИЗ
						ВтШК1 КАК ВтШК1))
			И (НЕ Штрихкоды.Штрихкод В
					(ВЫБРАТЬ РАЗЛИЧНЫЕ
						ВтШК1.Штрихкод1
					ИЗ
						ВтШК1 КАК ВтШК1))
Показать
11. Sapiens_bru 1 05.11.19 15:19 Сейчас в теме
(9) Уничтожать временные таблицы чтобы не тратить память это сильное заявление. Временные таблицы лежат на диске в базе tempdb mssql и аналогичных в других СУБД.
Проблема автора запроса даже не в кривом запросе,а что, что он делает именно то что написано. Перемножает строки остатков на строки перемещений на строки приходов итд. Результат тупо в память не входит. Причем скуль это все таки вычисляет и свопит на диск, но 1С всосать уже не может
12. user1202776 05.11.19 15:26 Сейчас в теме
(11)чтобы не перемножать нужно с помощью временных таблиц брать информацию?
16. Sapiens_bru 1 05.11.19 15:32 Сейчас в теме
(12) Нужно чтобы по условию соединения была одна или меньше строк в правой таблице
18. Sapiens_bru 1 05.11.19 15:41 Сейчас в теме
(12)Например ты соединяешься с документом Поступления.
Тебе действительно нужны все поступления за всё время работы базы? Врядли.
Скорее всего нужны документы за день. Тогда нужно сначала во временную таблицу поместить данные поступлений, отобрав их по условию "ГДЕ ..."
Затем полученный результат нужно сгруппировать по Номенклатуре, раз ты по ней соединяешься. Тогда эта таблица на каждую номенклатуру будет содержать максимум одну строку. Потом можешь соединять.
Так нужно со всеми таблицами сделать, которые присоединяешь справа к основной. Если там могут быть дубли - сначала избавляемся от дублей.
Кстати "ВЫБРАТЬ РАЗЛИЧНЫЕ" не особо помогает, нужно именно группировать по Номенклатуре, а остальные поля получать как СУММА, СРЕДНЕЕ, МАКСИМУМ итд.

После этих действий запрос заработает. Хотя по-прежнему будет образцом "как не надо" но уже с точки зрения скорости выполнения.
13. user995537 19 05.11.19 15:26 Сейчас в теме
(11)Простите не корректно выразился - "освобождать ресурсы"
15. Sapiens_bru 1 05.11.19 15:31 Сейчас в теме
(13) Смысла их освобождать почти никогда нет. Запрос сам по окончании выполнения убъет все времянки. Если МВТ не определен. Если определен то по факту обнуления МВТ, который редко живёт дольше серверного вызова.
Уничтожение ВТ носит по сути информационный характер, чтобы дать следующему разработчику понять, что эти данные дальше не используются.
14. Sapiens_bru 1 05.11.19 15:27 Сейчас в теме
(1) Масса ошибок. Просто классический пример как не надо. Я его возьму стажерам показывать.

Почему он именно не работает? Потому что левое соединение может увеличить число строк в результате. А много соединений могут добавить строк на много порядков больше чем хотелось
30. user1202776 05.11.19 16:21 Сейчас в теме
(14)я вам показал, как не нужно писать запрос, сможете показать как нужно правильно писать запрос?)
35. Sapiens_bru 1 05.11.19 16:46 Сейчас в теме
36. user1202776 05.11.19 16:53 Сейчас в теме
(35)видел. надеялся, что на примере покажете)
41. user1202776 05.11.19 19:21 Сейчас в теме
(14)сможете скинуть запросы,которые правильно написаны?чтобы наглядно посмотреть как нужно
6. user1166203 05.11.19 14:43 Сейчас в теме
С таким запросом и 128-битный сервер не поможет.
YannikAlx; Sapiens_bru; nomad_irk; Sashares; +4 Ответить
7. user856012 8 05.11.19 14:44 Сейчас в теме
8. user1202776 05.11.19 14:51 Сейчас в теме
(6)покажите пожалуйста как правильно написать этот запрос
10. lmnlmn 54 05.11.19 15:13 Сейчас в теме
(8)Для начала надо избавиться от вложенных запросов (в скобках которые) посредством временных таблиц либо как-то еще. А там уж смотреть стоит ли ковырять дальше.
o.kovalev; SlavaKron; +2 Ответить
19. user1166203 05.11.19 15:42 Сейчас в теме
(10)
Да толку от избавления от вложенных запросов. Тут произведение 5 таблиц. Больших таблиц. Логику менять надо.
20. YannikAlx 31 05.11.19 15:45 Сейчас в теме
(19) А вы считаете она там вообще есть?
Сложилось впечатление, что есть желание увидеть ВСЕ и СРАЗУ... ))))
21. nomad_irk 41 05.11.19 15:51 Сейчас в теме
(20)Помноженное на ВСЕ и СРАЗУ :)
22. user1166203 05.11.19 15:54 Сейчас в теме
(20)
Думаю, оборачиваемость товаров хотели глянуть с какой-нибудь средневзвешенной ценой или стоимость среднедневных остатков на складах в закупочных ценах. Или что-то подобное.
17. YannikAlx 31 05.11.19 15:40 Сейчас в теме
Вы бы написали что вы хотите получить своим запросом.
А то из вашего текста в голову бред лезет...
Ибо ЭТОТ запрос лечить - все равно только что мертвому припарки ставить...
23. user1202776 05.11.19 16:04 Сейчас в теме
(17)Из РН "ТоварыНаСкладахОстаткиИОбороты" нужно получить начальный и конечный остаток, приход и расход и другие данные по каждой номенклатуре в базе.
Из РС "ПараметрыНоменклатуры"- нужно получить кратность сколько можно заказать.
Документ Перемещение используется здесь:
ВЫБОР
	КОГДА ПеремещениеТоваровТовары.Количество <> 0
		ТОГДА (ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент, 1) + 0.5 КАК ЧИСЛО(10, 0))) - 1
КОНЕЦ

Из временной таблицы "БазЦена" получаю определенную цену номенклатуры.
Из временной таблицы "ЗакупЦена" получаю закупочную цену номенклатуры.
Но каждой номенклатуре нужно брать только одну базовую и одну закупочную цену каждый номенклатуры.Скорее всего лучше брать последнюю цену. Закупочную цену не беру из РС "ЦеныНоменклатуры" , потому что там нет закупочной цены.
в итоге нужно брать полную информацию по каждой номенклатуре, сколько весит, сколько пришло, ушло, осталось, цены и т.д.
24. YannikAlx 31 05.11.19 16:06 Сейчас в теме
(23) Уточните - зачем вам реально ВСЯ номеклатура сразу?
Вы что сразу всю будете анализировать?
25. user1202776 05.11.19 16:07 Сейчас в теме
(24)потом с помощью отбора будут выбирать нужную номенклатуру или нужную группу номенклатуры
26. YannikAlx 31 05.11.19 16:15 Сейчас в теме
(25) сделайте, чтобы остаток и цена показывались в момент выбора - ускорение будет огромным...
Если же есть желание смотреть именно все и сразу - начинать выбор нужно НЕ с регистров а со справочника Номеклатура и уже Номенклатуру искать в регистрах, а не пытаться там найти не знамо что...
27. user1202776 05.11.19 16:16 Сейчас в теме
(26)
чтобы остаток и цена показывались в момент выбора - ускорение будет огромным...

не понял, что вы имели ввиду
29. YannikAlx 31 05.11.19 16:20 Сейчас в теме
(27) данные о цене и остатках пусть формируются при выборе товара , то есть выбрали товарА - видите сразу его цену и остатки в какой-то доп форме...
ибо запрос по конкретной номенклатуре ясно будет выполняться доли секунды...
28. Sashares 18 05.11.19 16:19 Сейчас в теме
(23)
Из временной таблицы "ЗакупЦена" получаю закупочную цену номенклатуры.

Если поступлений будет несколько по разной цене, то количество результирующих строк запроса будет кратно увеличено.
31. user1202776 05.11.19 16:23 Сейчас в теме
(28)я пробовал максимум брать. выдает ту же ошибку
32. Sashares 18 05.11.19 16:24 Сейчас в теме
(31)Так а кто сказал, что проблема одна в запросе?
33. user1202776 05.11.19 16:26 Сейчас в теме
(32)понимаю., что ошибок там много, но этот запрос корректно выводил данные и не так уж медленно
ВЫБРАТЬ
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Код КАК Код,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Артикул КАК Артикул,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Производитель КАК Производитель,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Родитель КАК Родитель,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Ссылка КАК Номенклатура,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаДляОтчетов.Объем КАК Объем,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаДляОтчетов.Вес КАК Вес,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Паллетизация КАК Паллетизация,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Набор,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент КАК Фасовка,
	БазЦена.Цена КАК БазоваяЦена,
	ВЫБОР
		КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток <> 0
			ТОГДА (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток / ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент, 1) + 0.5 КАК ЧИСЛО(10, 0))) - 1
	КОНЕЦ КАК МестНачальныйОстаток,
	ВЫБОР
		КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток <> 0
			ТОГДА (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток / ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент, 1) + 0.5 КАК ЧИСЛО(10, 0))) - 1
	КОНЕЦ КАК МестКонечныйОстаток,
	ВЫБОР
		КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход <> 0
			ТОГДА (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход / ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент, 1) + 0.5 КАК ЧИСЛО(10, 0))) - 1
	КОНЕЦ КАК МестПриход,
	ВЫБОР
		КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход <> 0
			ТОГДА (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход / ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент, 1) + 0.5 КАК ЧИСЛО(10, 0))) - 1
	КОНЕЦ КАК МестРасход,
	ВЫБОР
		КОГДА ПеремещениеТоваровТовары.Количество <> 0
			ТОГДА (ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Количество / ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент, 1) + 0.5 КАК ЧИСЛО(10, 0))) - 1
	КОНЕЦ КАК МестПеремещения,
	ПеремещениеТоваровТовары.Количество КАК КоличествоПеремещения,
	ВЫБОР
		КОГДА ПараметрыНоменклатуры.MML = ИСТИНА
			ТОГДА "MML"
		ИНАЧЕ ""
	КОНЕЦ КАК MML,
	ВЫБОР
		КОГДА ПараметрыНоменклатуры.Вывод = ИСТИНА
			ТОГДА "Вывод"
		ИНАЧЕ ""
	КОНЕЦ КАК Вывод,
	ПараметрыНоменклатуры.МинимальноеКратноеКоличество КАК ТОП
ИЗ
	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), , , ) КАК ТоварыНаСкладахОстаткиИОбороты
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
			ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
		ИЗ
			РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
		ГДЕ
			ЦеныНоменклатурыСрезПоследних.ТипЦен = ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.БазовыеЦены)) КАК БазЦена
		ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = БазЦена.Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
		ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ПеремещениеТоваровТовары.Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыНоменклатуры КАК ПараметрыНоменклатуры
		ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ПараметрыНоменклатуры.Номенклатура
Показать
34. Sashares 18 05.11.19 16:30 Сейчас в теме
(33)Вы соединяетесь с документами за весь период.
То есть из регистра остатки на начало и на конец берете за определенный период, а поступления, перемещения - за все время. Это бессмысленно.
39. VmvLer 05.11.19 17:50 Сейчас в теме
(33)

тот что тормозит
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), 

КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты

тот что, по вашим словам, работает и не так уж медленно

ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), 

КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), , , ) КАК ТоварыНаСкладахОстаткиИОбороты


Найдите ключевое отличие и сделайте вывод
Если вы не сможете анализировать код и делать выводы, то еще не поздно подать заявку в Дом-2
40. user1202776 05.11.19 17:57 Сейчас в теме
(39)я уже был в Дом-2. Участником и одновременно главным программистом
user774630; +1 Ответить
56. PiotrLoginov 07.11.19 01:45 Сейчас в теме
(40)
я уже был в Дом-2. Участником и одновременно главным программистом


user1202776 , что, правда?
37. VmvLer 05.11.19 17:45 Сейчас в теме
это автор создает темы уже 3 месяца и пока что не обучаем,
я буду вести наблюдение и если замечу, что базовый прогресс есть, то вмешаюсь с советами.

пока что можно читать авторские темы только с целью исследования на тему "куда могут привести заблуждения и упрямство если нет базовых знаний"
38. Sashares 18 05.11.19 17:47 Сейчас в теме
(37)Ок, продолжайте наблюдение.
42. ogidni 153 06.11.19 12:54 Сейчас в теме
полный код пришлите.
Что вы делаете запрос.выполнить.выбрать() или запрос.выполнить.выгрузить()?
43. user1202776 06.11.19 13:16 Сейчас в теме
(42)полный код
ВЫБРАТЬ
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Код КАК Код,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Артикул КАК Артикул,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Производитель КАК Производитель,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Родитель КАК Родитель,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Ссылка КАК Номенклатура,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
    БазЦена.Цена КАК БазоваяЦена,
    ПеремещениеТоваровТовары.Количество КАК КоличествоПеремещения,
    ПараметрыНоменклатуры.МинимальноеКратноеКоличество КАК ТОП,
    ЗакупЦена.ЗакупочнаяЦена
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
            ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
        ИЗ
            РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
        ГДЕ
            ЦеныНоменклатурыСрезПоследних.ТипЦен = ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.БазовыеЦены)) КАК БазЦена
        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = БазЦена.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ПеремещениеТоваровТовары.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыНоменклатуры КАК ПараметрыНоменклатуры
        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ПараметрыНоменклатуры.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
            ПоступлениеТоваровУслугТовары.Цена КАК ЗакупочнаяЦена,
            ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
        ИЗ
            Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары) КАК ЗакупЦена
[1C-CODE]        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЗакупЦена.Номенклатура
Показать

отчет на СКД делаю
44. ogidni 153 06.11.19 13:20 Сейчас в теме
ну так поробуйте консоли запросов выполнить
45. user1202776 06.11.19 13:22 Сейчас в теме
(44)выдает ошибку , что не хватает памяти
46. ogidni 153 06.11.19 13:30 Сейчас в теме
Перед из поставьте Поместить времТаблица
Поместить времТаблица
ИЗ


И узнаете где не хватает памяти
47. user1202776 06.11.19 13:34 Сейчас в теме
48. ogidni 153 06.11.19 13:41 Сейчас в теме
(47) ну ты даешь парень
ПараметрыНоменклатуры.МинимальноеКратноеКоличество КАК ТОП,
    ЗакупЦена.ЗакупочнаяЦена
Поместить времТаблица
ИЗ
49. user1202776 06.11.19 13:47 Сейчас в теме
(48)сделал так и не выдает ошибку.Запрос корректный?)
ВЫБРАТЬ
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
	СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
	СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
	СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
	СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход
ПОМЕСТИТЬ Таб1
ИЗ
	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Таб1.Номенклатура,
	СУММА(ПеремещениеТоваровТовары.Количество) КАК Количество,
	СУММА(Таб1.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
	СУММА(Таб1.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
	СУММА(Таб1.КоличествоПриход) КАК КоличествоПриход,
	СУММА(Таб1.КоличествоРасход) КАК КоличествоРасход
ПОМЕСТИТЬ Таб2
ИЗ
	Таб1 КАК Таб1
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
		ПО Таб1.Номенклатура = ПеремещениеТоваровТовары.Номенклатура

СГРУППИРОВАТЬ ПО
	Таб1.Номенклатура
;

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

СГРУППИРОВАТЬ ПО
	Таб2.Номенклатура
;

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

СГРУППИРОВАТЬ ПО
	Таб3.Номенклатура
;

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

СГРУППИРОВАТЬ ПО
	Таб4.Номенклатура
Показать
50. user1202776 06.11.19 13:50 Сейчас в теме
(48)как взять последнюю цену номенклатуры?
51. ogidni 153 06.11.19 14:34 Сейчас в теме
(50) Ну напиши
 AVG(Таб3.Цена) КАК Цена,

тебе сойдет
52. user1202776 06.11.19 14:37 Сейчас в теме
53. ogidni 153 06.11.19 15:25 Сейчас в теме
54. user1202776 06.11.19 15:26 Сейчас в теме
(53)мне не нужна среднее значение
55. ogidni 153 06.11.19 18:38 Сейчас в теме
(54)надо во временный запрос выбрать максимальные даты по ценам и поместить во времянку.
Потов к ценам inner Join-ом соединить таблицу с ценами по дате и получишь последнюю цену
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Екатеринбург
зарплата до 120 000 руб.
Полный день

Консультант-аналитик 1С
Рязань
зарплата до 80 000 руб.
Полный день

Программист 1С
Рязань
зарплата от 90 000 руб.
Полный день

Бизнес-архитектор 1С, ведущий консультант
Санкт-Петербург
Полный день

Руководитель проектов 1С
Санкт-Петербург
Полный день