Здравствуйте, написал внешнюю печатную форму "Акта списания", но сумму подтягивает только из одной проводки

1. user973528 26.10.18 15:08 Сейчас в теме
Написал запрос для заполнения табличной части макета печатной формы, когда формирую этот акт списания из "требование накладной", то запрос выбирает только первую попавшуюся проводку по номенклатуре на основании документа. Допустим у номенклатуры "Ручка" было 3 документа поступления, в трёх документах разная сумма, эти 3 суммы нужны сложить, а у меня подтягивается первая попавшиеся сумма. Можно ли как то указать условия в запросе по поиску номенклатуры?

Запрос = Новый Запрос();
	Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ТребованиеНакладнаяМатериалы.НомерСтроки КАК НомерСтроки,
	|	ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура,
	|	ТребованиеНакладнаяМатериалы.Номенклатура.Код,
	|	ТребованиеНакладнаяМатериалы.Счет,
	|	ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения.Код,
	|	ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения.Наименование,
	|	ТребованиеНакладнаяМатериалы.Количество,
	|	ТребованиеНакладнаяМатериалы.Количество КАК КолЗатребовано,
	|	Хозрасчетный.Сумма,
	|	Хозрасчетный.Сумма / ТребованиеНакладнаяМатериалы.Количество КАК Цена
	|ИЗ
	|	Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
	|		ПО ТребованиеНакладнаяМатериалы.НомерСтроки = Хозрасчетный.НомерСтроки
	|ГДЕ
	|	ТребованиеНакладнаяМатериалы.Ссылка = &Ссылка
	|	И Хозрасчетный.Регистратор = &Ссылка
	|
	|УПОРЯДОЧИТЬ ПО
	|	НомерСтроки
	|АВТОУПОРЯДОЧИВАНИЕ";
	СуммаДокумента = 0;
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Количество() > 0 Тогда
		Пока Выборка.Следующий() Цикл
			СуммаДокумента = СуммаДокумента + Выборка.сумма;
			ОбластьМакета = Макет.ПолучитьОбласть("Строка");		
			ОбластьМакета.Параметры.Заполнить(Выборка);
			ТабДокумент.Вывести(ОбластьМакета);
		КонецЦикла;
	КонецЕсли;
Показать
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Vitaly1C8 26.10.18 15:13 Сейчас в теме
(1) ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
| ПО ТребованиеНакладнаяМатериалы.НомерСтроки = Хозрасчетный.НомерСтроки

Подозреваю что в условии должна присутствовать связь по Регистратору
o.kovalev; alex-l19041; +2 Ответить
4. user973528 26.10.18 15:15 Сейчас в теме
(3) Номенклатуру из требовании накладной по регистратору?
7. user973528 26.10.18 15:23 Сейчас в теме
(3)
|ГДЕ
| ТребованиеНакладнаяМатериалы.Ссылка = &Ссылка
| И Хозрасчетный.Регистратор = &Ссылка

Вот ведь есть

Ссылка у меня СсылкаНаОбъект - То есть на документ требование накладную из которой печатаем акт
5. alex-l19041 8 26.10.18 15:15 Сейчас в теме
(1)
у номенклатуры "Ручка" было 3 документа поступления, в трёх документах разная сумма, эти 3 суммы нужны сложить
- можно конкретнее ? что требуется?
6. user973528 26.10.18 15:19 Сейчас в теме
(5) Есть документ "Требование накладная" там номенклатура "Ручка", но в проводках есть 3 документа Поступления по этой ручке по одной дате, а у меня он тащит первую попавшуюся сумму в проводке и запихивает, а нужно чтобы все суммы по этим 3 документам сложил и вывел
10. alex-l19041 8 26.10.18 15:24 Сейчас в теме
(6)
чтобы все суммы по этим 3 документам сложил
- сначала надо во временную таблицу выбрать обороты по дебет за нужный период по номенклатуре. Затем соединять таблицу из документа с этой временной по номенклатуре
12. DmitriiKopasov 13 26.10.18 15:29 Сейчас в теме
(10)
Не согласен. Сначала лучше во временную поместить таблицу документа.
Потом в другой временной таблицу получить обороту, но с указанием отбора по номенклатуре (в параметрах виртуальной таблицы, источник из первой ВТ).
А уже потом соединить все это по номенклатуре.
40. alex-l19041 8 26.10.18 16:28 Сейчас в теме
(12)
с указанием отбора по номенклатуре
- 100%
8. Vitaly1C8 26.10.18 15:24 Сейчас в теме
(5)
ВЫБРАТЬ
	ТребованиеНакладнаяМатериалы.Ссылка,
	ТребованиеНакладнаяМатериалы.Номенклатура,
	Хозрасчетный.Сумма
ИЗ
	Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
		ПО ТребованиеНакладнаяМатериалы.Ссылка = Хозрасчетный.Регистратор
			И ТребованиеНакладнаяМатериалы.НомерСтроки = Хозрасчетный.НомерСтроки
Показать
2. user633533_encantado 11 26.10.18 15:12 Сейчас в теме
А где вознаграждение за ответ ?

ЗЫ Запрос - полное г.
9. DmitriiKopasov 13 26.10.18 15:24 Сейчас в теме
У тебя условие связи полностью неверное.
Связь должна быть по номенклатуре. А номера строк могут вообще не совпадать.
11. user973528 26.10.18 15:29 Сейчас в теме
Вот сам кусок макета этой строки.
Правильно же я думаю, что нужно вытянуть только сумму и цену из проводок?
Остальное у меня всё хорошо заполняется
Прикрепленные файлы:
13. DmitriiKopasov 13 26.10.18 15:33 Сейчас в теме
(11)
Честно говоря я перестал понимать суть задачи.
Тебе нужно учитывать проводки только по выбранному документу?
14. user973528 26.10.18 15:37 Сейчас в теме
(13)
Честно говоря я перестал понимать суть задачи.
Тебе нужно учитывать проводки только по выбранному документу?


Вот смотрите в проводке у меня два документа на этот товар(Скриншот 1), а в акт списания у меня лупит только первую сумму (Скриншот 2)
Прикрепленные файлы:
17. DmitriiKopasov 13 26.10.18 15:39 Сейчас в теме
(14)
Ну все верно. У тебя связь между таблицей документа и оборотами РБ должна быть по номенклатуре (что-то типа "ТребованиеНакладнаяМатериалы.Номенклатура= Хозрасчетный.Субконто1")
А цену получишь разделив общую сумму на общее количество
18. user973528 26.10.18 15:41 Сейчас в теме
(17) То есть номер строки убрать вообще?
19. user973528 26.10.18 15:41 Сейчас в теме
(17) Так?

	"ВЫБРАТЬ
	|	ТребованиеНакладнаяМатериалы.НомерСтроки КАК НомерСтроки,
	|	ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура,
	|	ТребованиеНакладнаяМатериалы.Номенклатура.Код КАК НоменклатураКод,
	|	ТребованиеНакладнаяМатериалы.Счет КАК Счет,
	|	ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод,
	|	ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование,
	|	ТребованиеНакладнаяМатериалы.Количество КАК Количество,
	|	ТребованиеНакладнаяМатериалы.Количество КАК КолЗатребовано,
	|	Хозрасчетный.Сумма КАК Сумма,
	|	Хозрасчетный.Сумма / ТребованиеНакладнаяМатериалы.Количество КАК Цена
	|ИЗ
	|	Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
	|		ПО ТребованиеНакладнаяМатериалы.НомерСтроки = Хозрасчетный.НомерСтроки
	|			И ТребованиеНакладнаяМатериалы.Номенклатура = Хозрасчетный.Регистратор
	|ГДЕ
	|	ТребованиеНакладнаяМатериалы.Ссылка = &Ссылка
	|	И Хозрасчетный.Регистратор = &Ссылка
	|
	|УПОРЯДОЧИТЬ ПО
	|	НомерСтроки
	|АВТОУПОРЯДОЧИВАНИЕ";
Показать
21. DmitriiKopasov 13 26.10.18 15:42 Сейчас в теме
(19) Связь по номеру строки убери вообще. Иначе у тебя не все данные попадут в итоговый запрос.
22. user973528 26.10.18 15:43 Сейчас в теме
(21) Убрал

"ВЫБРАТЬ
| ТребованиеНакладнаяМатериалы.НомерСтроки КАК НомерСтроки,
| ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура,
| ТребованиеНакладнаяМатериалы.Номенклатура.Код КАК НоменклатураКод,
| ТребованиеНакладнаяМатериалы.Счет КАК Счет,
| ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод,
| ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование,
| ТребованиеНакладнаяМатериалы.Количество КАК Количество,
| ТребованиеНакладнаяМатериалы.Количество КАК КолЗатребовано,
| Хозрасчетный.Сумма КАК Сумма,
| Хозрасчетный.Сумма / ТребованиеНакладнаяМатериалы.Количество КАК Цена
|ИЗ
| Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
| ПО ТребованиеНакладнаяМатериалы.Номенклатура = Хозрасчетный.Регистратор
|ГДЕ
| ТребованиеНакладнаяМатериалы.Ссылка = &Ссылка
| И Хозрасчетный.Регистратор = &Ссылка
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки
|АВТОУПОРЯДОЧИВАНИЕ
23. DmitriiKopasov 13 26.10.18 15:43 Сейчас в теме
24. user973528 26.10.18 15:44 Сейчас в теме
(23) Извините пожалуйста, с запросами просто очень плохо
25. DmitriiKopasov 13 26.10.18 15:46 Сейчас в теме
(24)
Запрос - почти основа программирования в 1С. Есть много курсов в интернете, обязательно посмотри.
26. user973528 26.10.18 15:47 Сейчас в теме
(25) Сейчас тогда попробую снова сформировать, отпишу как получится
15. user973528 26.10.18 15:37 Сейчас в теме
(13) То есть количество он складывает, а вот сумму вообще никак
16. user973528 26.10.18 15:38 Сейчас в теме
(13) И вот эту вторую сумму, которую не подтянул, скидывает вообще на вторую строчку и складывает в другой номенклатуре
20. DmitriiKopasov 13 26.10.18 15:41 Сейчас в теме
(16) Это результат связи по номеру строки. У тебя на первую строку ТЧ документа может приходится от одной до бесконечности строк в регистре бухгалтерии.
Просто перепиши связь.
Примерный план запроса есть в моем ответе (12)
27. user973528 26.10.18 15:54 Сейчас в теме
(20) Теперь вообще не заполняет табличную часть((
28. DmitriiKopasov 13 26.10.18 16:02 Сейчас в теме
29. user973528 26.10.18 16:03 Сейчас в теме
(28)
Запрос = Новый Запрос();
	Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ТребованиеНакладнаяМатериалы.НомерСтроки КАК НомерСтроки,
	|	ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура,
	|	ТребованиеНакладнаяМатериалы.Номенклатура.Код КАК НоменклатураКод,
	|	ТребованиеНакладнаяМатериалы.Счет КАК Счет,
	|	ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод,
	|	ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование,
	|	ТребованиеНакладнаяМатериалы.Количество КАК Количество,
	|	ТребованиеНакладнаяМатериалы.Количество КАК КолЗатребовано,
	|	Хозрасчетный.Сумма КАК Сумма,
	|	Хозрасчетный.Сумма / ТребованиеНакладнаяМатериалы.Количество КАК Цена
	|ИЗ
	|	Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
	|		ПО ТребованиеНакладнаяМатериалы.Номенклатура = Хозрасчетный.Регистратор
	|ГДЕ
	|	ТребованиеНакладнаяМатериалы.Ссылка = &Ссылка
	|	И Хозрасчетный.Регистратор = &Ссылка
	|
	|УПОРЯДОЧИТЬ ПО
	|	НомерСтроки
	|АВТОУПОРЯДОЧИВАНИЕ";
	СуммаДокумента = 0;
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Количество() > 0 Тогда
		Пока Выборка.Следующий() Цикл
			СуммаДокумента = СуммаДокумента + Выборка.сумма;
			ОбластьМакета = Макет.ПолучитьОбласть("Строка");		
			ОбластьМакета.Параметры.Заполнить(Выборка);
			ТабДокумент.Вывести(ОбластьМакета);
		КонецЦикла;
	КонецЕсли;
Показать
30. DmitriiKopasov 13 26.10.18 16:05 Сейчас в теме
(29)
ТребованиеНакладнаяМатериалы.Номенклатура = Хозрасчетный.Регистратор
Что это ????
Номенклатуру сравниваешь с документом-регистратором.
Нужно номенклатуру из документа с субконто из регистра бухгалтерии где находится номенклатура.
Не торопись.
alex-l19041; +1 Ответить
31. user973528 26.10.18 16:08 Сейчас в теме
(30)
ТребованиеНакладнаяМатериалы.Номенклатура = Хозрасчетный.Регистратор
Что это ????
Номенклатуру сравниваешь с документом-регистратором.


Из Хозрасчетного?
33. user973528 26.10.18 16:11 Сейчас в теме
(30) Хозрасчетный.Регистратор.Субконто1?
Просто есть ещё там Субконто2 и Субконто3
35. DmitriiKopasov 13 26.10.18 16:13 Сейчас в теме
(33) В зависимости от того, что за счет, у тебя на разных субконто будет располагаться номенклатура. Обычно она находится в субконто1
32. DmitriiKopasov 13 26.10.18 16:11 Сейчас в теме
ВЫБРАТЬ
	РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
	СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество
ПОМЕСТИТЬ ВТ_Документ
ИЗ
	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		ПО РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка
ГДЕ
	РеализацияТоваровУслуг.Ссылка = &Ссылка

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

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Документ.Номенклатура КАК Номенклатура,
	ВТ_Документ.Количество КАК Количество,
	ЕСТЬNULL(ВТ_Обороты.СуммаОборот, 0) КАК Сумма,
	ВЫБОР
		КОГДА ВТ_Документ.Количество = 0
			ТОГДА 0
		ИНАЧЕ ЕСТЬNULL(ВТ_Обороты.СуммаОборот, 0) / ВТ_Документ.Количество
	КОНЕЦ КАК Цена
ИЗ
	ВТ_Документ КАК ВТ_Документ
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Обороты КАК ВТ_Обороты
		ПО ВТ_Документ.Номенклатура = ВТ_Обороты.Субконто1
Показать
34. DmitriiKopasov 13 26.10.18 16:12 Сейчас в теме
(32) Примерно так, просто я на основании другого документа сделал
39. user973528 26.10.18 16:27 Сейчас в теме
(32)
РеализацияТоваровУслуг.Ссылка = &Ссылка


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


А как теперь их соединить, очень уж трудно
36. acanta 26.10.18 16:21 Сейчас в теме
Если есть несколько строк в документе в одним и тем же товаром, то в движениях должна быть привязка к номеру строки. В отчете это не критично, а если этот запрос дя печатной формы то понадобится.
37. DmitriiKopasov 13 26.10.18 16:24 Сейчас в теме
(36)
Не обязательно. В документе может быть несколько строк с одинаковыми позициями номенклатуры, но на каждую строчку будет приходится несколько проводок.
В любом случае привязка по номеру строки не будет работать.
41. user973528 26.10.18 16:31 Сейчас в теме
(37)

//Заполнение табличной части документа
	Запрос = Новый Запрос();
	Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ТребованиеНакладнаяМатериалы.НомерСтроки КАК НомерСтроки,
	|	ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура,
	|	ТребованиеНакладнаяМатериалы.Номенклатура.Код КАК НоменклатураКод,
	|	ТребованиеНакладнаяМатериалы.Счет КАК Счет,
	|	ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод,
	|	ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование,
	|	ТребованиеНакладнаяМатериалы.Количество КАК Количество,
	|	ТребованиеНакладнаяМатериалы.Количество КАК КолЗатребовано,
	|	Хозрасчетный.Сумма КАК Сумма,
	|	Хозрасчетный.Сумма / ТребованиеНакладнаяМатериалы.Количество КАК Цена
	|ИЗ
	|	Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
	|		ПО ТребованиеНакладнаяМатериалы.Номенклатура = Хозрасчетный.Регистратор
	|ГДЕ
	|	ТребованиеНакладнаяМатериалы.Ссылка = &Ссылка
	|	И Хозрасчетный.Регистратор = &Ссылка
	|
	|УПОРЯДОЧИТЬ ПО
	|	НомерСтроки
	|АВТОУПОРЯДОЧИВАНИЕ";
	////////////////////////////////////////////////////////////­/////////////////////
	 "ВЫБРАТЬ
    |ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
    |ХозрасчетныйОбороты.СуммаОборот КАК СуммаОборот
	|ПОМЕСТИТЬ ВТ_Обороты
	|ИЗ
    |РегистрБухгалтерии.Хозрасчетный.Обороты(
    |        ,
    |        ,
    |        Регистратор,
    |        ,
    |        ,
    |        Субконто1 В
    |            (ВЫБРАТЬ
    |                ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура
    |            ИЗ
    |               Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы),
    |       ,
    |       ) КАК ХозрасчетныйОбороты
	|ГДЕ
    |ХозрасчетныйОбороты.Регистратор = &Ссылка";
	/////////////////////////////////////////////
	"Выбрать
    |ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура,
    |ТребованиеНакладнаяМатериалы.Количество КАК Количество,
    |ЕСТЬNULL(ВТ_Обороты.СуммаОборот, 0) КАК Сумма,
    |ВЫБОР
    |КОГДА ТребованиеНакладнаяМатериалы.Количество = 0
    |ТОГДА 0
    |ИНАЧЕ ЕСТЬNULL(ВТ_Обороты.СуммаОборот, 0) / ТребованиеНакладнаяМатериалы.Количество
    |КОНЕЦ КАК Цена
	|ИЗ
    |Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
    |ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Обороты КАК ВТ_Обороты
    |ПО ТребованиеНакладнаяМатериалы.Номенклатура = ВТ_Обороты.Субконто1";
Показать
43. user973528 26.10.18 16:38 Сейчас в теме
(37) Всёравно не отрабатывает
38. acanta 26.10.18 16:27 Сейчас в теме
Партии суммировать придется, по номеру строки группировки.
42. acanta 26.10.18 16:32 Сейчас в теме
Первый запрос берем все что нужно из накладной, помещаем в Вт _накл.
Второй запрос из хозрасчетного, суммировать и помещаем вт_обороты
Выбираем из обеих Вт и считаем цены.
Хозрасчетный в первом запросе не нужен
44. user973528 26.10.18 16:39 Сейчас в теме
(42)
Хозрасчетный в первом запросе не нужен


Вот так?

"ВЫБРАТЬ
	|	ТребованиеНакладнаяМатериалы.НомерСтроки КАК НомерСтроки,
	|	ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура,
	|	ТребованиеНакладнаяМатериалы.Номенклатура.Код КАК НоменклатураКод,
	|	ТребованиеНакладнаяМатериалы.Счет КАК Счет,
	|	ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод,
	|	ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование,
	|	ТребованиеНакладнаяМатериалы.Количество КАК Количество,
	|	ТребованиеНакладнаяМатериалы.Количество КАК КолЗатребовано
	|ИЗ
	|	Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
	|ГДЕ
	|	ТребованиеНакладнаяМатериалы.Ссылка = &Ссылка
	|
	|УПОРЯДОЧИТЬ ПО
	|	НомерСтроки
	|АВТОУПОРЯДОЧИВАНИЕ";
	////////////////////////////////////////////////////////////­/////////////////////
	 "ВЫБРАТЬ
    |ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
    |ХозрасчетныйОбороты.СуммаОборот КАК СуммаОборот
	|ПОМЕСТИТЬ ВТ_Обороты
	|ИЗ
    |РегистрБухгалтерии.Хозрасчетный.Обороты(
    |        ,
    |        ,
    |        Регистратор,
    |        ,
    |        ,
    |        Субконто1 В
    |            (ВЫБРАТЬ
    |                ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура
    |            ИЗ
    |               Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы),
    |       ,
    |       ) КАК ХозрасчетныйОбороты
	|ГДЕ
    |ХозрасчетныйОбороты.Регистратор = &Ссылка";
	/////////////////////////////////////////////
	"Выбрать
    |ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура,
    |ТребованиеНакладнаяМатериалы.Количество КАК Количество,
    |ЕСТЬNULL(ВТ_Обороты.СуммаОборот, 0) КАК Сумма,
    |ВЫБОР
    |КОГДА ТребованиеНакладнаяМатериалы.Количество = 0
    |ТОГДА 0
    |ИНАЧЕ ЕСТЬNULL(ВТ_Обороты.СуммаОборот, 0) / ТребованиеНакладнаяМатериалы.Количество
    |КОНЕЦ КАК Цена
	|ИЗ
    |Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
    |ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Обороты КАК ВТ_Обороты
    |ПО ТребованиеНакладнаяМатериалы.Номенклатура = ВТ_Обороты.Субконто1";
	
	СуммаДокумента = 0;
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Количество() > 0 Тогда
		Пока Выборка.Следующий() Цикл
			СуммаДокумента = СуммаДокумента + Выборка.сумма;
			ОбластьМакета = Макет.ПолучитьОбласть("Строка");		
			ОбластьМакета.Параметры.Заполнить(Выборка);
			ТабДокумент.Вывести(ОбластьМакета);
		КонецЦикла;
	КонецЕсли;
Показать
45. acanta 26.10.18 16:48 Сейчас в теме
Вы не поместили первую выборку во временную таблицу. После затребовано поместить в вт_накл. Второй запрос по оборотам по моему регистратора уже не хранит. Нужна с движениями.
Напишите два отдельных запроса с выгрузкой в таблицы значений и посмотрите в отладчике что там.
46. user973528 26.10.18 16:54 Сейчас в теме
(45)
	Запрос = Новый Запрос();
	Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ТребованиеНакладнаяМатериалы.НомерСтроки КАК НомерСтроки,
	|	ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура,
	|	ТребованиеНакладнаяМатериалы.Номенклатура.Код КАК НоменклатураКод,
	|	ТребованиеНакладнаяМатериалы.Счет КАК Счет,
	|	ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод,
	|	ТребованиеНакладнаяМатериалы.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование,
	|	ТребованиеНакладнаяМатериалы.Количество КАК Количество,
	|	ТребованиеНакладнаяМатериалы.Количество КАК КолЗатребовано
	|	ПОМЕСТИТЬ ВТ_Документ
	|ИЗ
	|	Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
	|ГДЕ
	|	ТребованиеНакладнаяМатериалы.Ссылка = &Ссылка
	////////////////////////////////////////////////////////////­/////////////////////
	 "ВЫБРАТЬ
    |ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
    |ХозрасчетныйОбороты.СуммаОборот КАК СуммаОборот
	|ПОМЕСТИТЬ ВТ_Обороты
	|ИЗ
    |РегистрБухгалтерии.Хозрасчетный.Обороты(
    |        ,
    |        ,
    |        Регистратор,
    |        ,
    |        ,
    |        Субконто1 В
    |            (ВЫБРАТЬ
    |                ВТ_Документ.Номенклатура КАК Номенклатура
    |            ИЗ
    |               ВТ_Документ КАК ВТ_Документ),
    |       ,
    |       ) КАК ХозрасчетныйОбороты
	|ГДЕ
    |ХозрасчетныйОбороты.Регистратор = &Ссылка
	/////////////////////////////////////////////
	"Выбрать
    |ВТ_Документ.Номенклатура КАК Номенклатура,
    |ВТ_Документ.Количество КАК Количество,
    |ЕСТЬNULL(ВТ_Обороты.СуммаОборот, 0) КАК Сумма,
    |ВЫБОР
    |КОГДА ВТ_Документ.Количество = 0
    |ТОГДА 0
    |ИНАЧЕ ЕСТЬNULL(ВТ_Обороты.СуммаОборот, 0) / ВТ_Документ.Количество
    |КОНЕЦ КАК Цена
	|ИЗ
    |ВТ_Документ КАК ВТ_Документ
    |ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Обороты КАК ВТ_Обороты
    |ПО ВТ_Документ.Номенклатура = ВТ_Обороты.Субконто1";
	
	СуммаДокумента = 0;
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Количество() > 0 Тогда
		Пока Выборка.Следующий() Цикл
			СуммаДокумента = СуммаДокумента + Выборка.сумма;
			ОбластьМакета = Макет.ПолучитьОбласть("Строка");		
			ОбластьМакета.Параметры.Заполнить(Выборка);
			ТабДокумент.Вывести(ОбластьМакета);
		КонецЦикла;
	КонецЕсли;
Показать
47. user973528 26.10.18 16:58 Сейчас в теме
(45) Так а разве ВПФ можно остановить на отладку?
48. acanta 26.10.18 17:02 Сейчас в теме
СуммаОборот это по моему дебет + кредит.
Вам нужна агрегатная функция сумма( хозрасчетный обороты. Суммакт)
Дпя отладки добавить форму с выбором документа и по кнопке вызвать печать.
49. user973528 26.10.18 17:23 Сейчас в теме
50. arteast 100 29.10.18 05:23 Сейчас в теме
(49)
Не совсем понял при чем здесь временные таблицы и прочее. Запрос судя по заданию элементарный.
"Допустим у номенклатуры "Ручка" было 3 документа поступления, в трёх документах разная сумма, эти 3 суммы нужны сложить"
Просто берем обороты за период где номенклатура в списке номенклатуры исходного документа. Отбора по регистратору не нужно в хозрасчетном регистре. Если только не хотите задать список документов поступления вручную.

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


Выборка = Запрос.Выполнить().Выбрать();
         Пока Выборка.Следующий() Цикл
            ОбластьМакета = Макет.ПолучитьОбласть("Строка");        
            ОбластьМакета.Параметры.Заполнить(Выборка);
            ТабДокумент.Вывести(ОбластьМакета);
        КонецЦикла;

Показать



Если же есть желание СТРОГО указать список поступлений, данный по которым нужно анализировать, то при получении данных из хозрасчетного регистра ставите отбор по регистратору и в параметр ставите список значений
51. DmitriiKopasov 13 29.10.18 09:52 Сейчас в теме
(50)
А я понял, что нужно брать только движения текущего документа.
Т.к. в БД на счете учета номенклатуры есть документ-партия, то при проведении документа требование-накладная по одной позиции номенклатуры может быть несколько строк движений, т.к. списываться одна и та же номенклатура может по нескольким партиям.
52. arteast 100 29.10.18 13:52 Сейчас в теме
Ммм, если брать движения текущего документа, то просто нужна группировка по номенклатуре с суммированием суммы проводки при запросе данных проведения.
в трёх документах разная сумма, эти 3 суммы нужны сложить

Можно даже во вложенном запросе группировать, а в главном высчитывать среднюю стоимость как сумму/кол-во.
Оставьте свое сообщение

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