База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как использовать сумму из регистра в запросе вместо документа?
- В этой теме 1 ответ, 2 участника, последнее обновление 18 минут назад сделано
Odin — Одинэсник.
-
АвторЗаписи
-
-
29 сентября 2026 в 18:17 #38754
Но Сумма и СуммаБезНДС берутся из регистра или из документа? мне надо, чтобы из регистра
-
29 сентября 2026 в 18:17 #38755
В текущем запросе поле
Суммаберется из документа, потому что у вас во внешнем запросе указано:1С (Код)1|ПриобретениеТоваровУслуг.Сумма КАК Сумма,А данные из регистра сейчас вообще не выводятся во внешний результат. В подзапросе регистра поле:
1С (Код)1|СУММА(СебестоимостьТоваровОбороты.Стоимость) КАК Сумма,только рассчитывается, но наружу вы его не выбираете.
Если нужно, чтобы
СуммаиСуммаБезНДСбрались именно из регистра, замените во внешнемВЫБРАТЬэти строки:1С (Код)123|ПриобретениеТоваровУслуг.Сумма КАК Сумма,|ПриобретениеТоваровУслуг.СуммаНДС КАК СуммаНДС,|null КАК СуммаБезНДС,на:
1С (Код)123|ЕСТЬNULL(СебестоимостьТоваров.Сумма, 0) КАК Сумма,|ПриобретениеТоваровУслуг.СуммаНДС КАК СуммаНДС,|ЕСТЬNULL(СебестоимостьТоваров.СуммаБезНДС, 0) КАК СуммаБезНДС,Здесь:
1С (Код)1|СебестоимостьТоваров.Суммабудет брать значение из подзапроса регистра:
1С (Код)1|СУММА(СебестоимостьТоваровОбороты.Стоимость) КАК СуммаА:
1С (Код)1|СебестоимостьТоваров.СуммаБезНДСбудет брать значение из:
1С (Код)1|СУММА(СебестоимостьТоваровОбороты.СтоимостьБезНДС) КАК СуммаБезНДСФрагмент внешнего запроса должен выглядеть так:
1С (Код)12345678910111213| ПриобретениеТоваровУслуг.Цена КАК Цена,| ПриобретениеТоваровУслуг.КоличествоУпаковок КАК Количество,|| ЕСТЬNULL(СебестоимостьТоваров.Сумма, 0) КАК Сумма,| ПриобретениеТоваровУслуг.СуммаРучнойСкидки КАК СуммаСкидки,|| ЕСТЬNULL(СебестоимостьТоваров.Сумма, 0)| + ПриобретениеТоваровУслуг.СуммаРучнойСкидки КАК СуммаБезСкидки,|| ПриобретениеТоваровУслуг.СуммаНДС КАК СуммаНДС,| ЕСТЬNULL(СебестоимостьТоваров.СуммаБезНДС, 0) КАК СуммаБезНДС,|| ПриобретениеТоваровУслуг.НомерСтроки КАК НомерСтрокиНо обратите внимание: в этом варианте
СуммаБезСкидкирассчитывается как:1С (Код)1Сумма из регистра + скидка из документаЕсли скидка не должна участвовать, используйте:
1С (Код)123| ЕСТЬNULL(СебестоимостьТоваров.Сумма, 0) КАК Сумма,| ПриобретениеТоваровУслуг.СуммаРучнойСкидки КАК СуммаСкидки,| ЕСТЬNULL(СебестоимостьТоваров.Сумма, 0) КАК СуммаБезСкидки,### Важное различие между полями
Сейчас у вас есть два разных поля с одинаковым псевдонимом
Сумма:Из документа:
1С (Код)1|ПриобретениеТоваровУслуг.Сумма КАК СуммаИз регистра в подзапросе:
1С (Код)1|СУММА(СебестоимостьТоваровОбороты.Стоимость) КАК СуммаПсевдоним
Суммавнутри подзапроса не означает, что он автоматически попадет в итоговую таблицу. Чтобы использовать его во внешнем запросе, нужно явно написать:1С (Код)1|СебестоимостьТоваров.СуммаПоэтому правильная схема такая:
1С (Код)12|Подзапрос регистра:|СУММА(СебестоимостьТоваровОбороты.Стоимость) КАК Суммаи затем:
1С (Код)12|Внешний запрос:|ЕСТЬNULL(СебестоимостьТоваров.Сумма, 0) КАК Сумма### Если нужно сохранить обе суммы
Для проверки лучше временно не называть сумму регистра просто
Сумма, а дать ей отдельное имя:1С (Код)1234|ПриобретениеТоваровУслуг.Сумма КАК СуммаДокумента,|ЕСТЬNULL(СебестоимостьТоваров.Сумма, 0) КАК СуммаРегистра,|ПриобретениеТоваровУслуг.СуммаНДС КАК СуммаНДСДокумента,|ЕСТЬNULL(СебестоимостьТоваров.СуммаБезНДС, 0) КАК СуммаБезНДСРегистра,Так вы сразу увидите, что именно вернул запрос:
1С (Код)1234СуммаДокументаСуммаРегистраСуммаНДСДокументаСуммаБезНДСРегистраРекомендуемый диагностический вариант:
1С (Код)1234| ПриобретениеТоваровУслуг.Сумма КАК СуммаДокумента,| ЕСТЬNULL(СебестоимостьТоваров.Сумма, 0) КАК СуммаРегистра,| ПриобретениеТоваровУслуг.СуммаНДС КАК СуммаНДСДокумента,| ЕСТЬNULL(СебестоимостьТоваров.СуммаБезНДС, 0) КАК СуммаБезНДСРегистра,После проверки, если итоговой форме нужна именно сумма из регистра, можно оставить:
1С (Код)12|ЕСТЬNULL(СебестоимостьТоваров.Сумма, 0) КАК Сумма,|ЕСТЬNULL(СебестоимостьТоваров.СуммаБезНДС, 0) КАК СуммаБезНДС,### Что должно быть в подзапросе регистра
Подзапрос у вас должен содержать реальные ресурсы регистра:
1С (Код)12|СУММА(СебестоимостьТоваровОбороты.Стоимость) КАК Сумма,|СУММА(СебестоимостьТоваровОбороты.СтоимостьБезНДС) КАК СуммаБезНДСПолный фрагмент соединения:
1С (Код)12345678910111213141516171819202122232425|ЛЕВОЕ СОЕДИНЕНИЕ|(| ВЫБРАТЬ| СебестоимостьТоваровОбороты.Регистратор КАК Регистратор,| СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,| СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,| СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Серия КАК Серия,| СУММА(СебестоимостьТоваровОбороты.Стоимость) КАК Сумма,| СУММА(СебестоимостьТоваровОбороты.СтоимостьБезНДС) КАК СуммаБезНДС| ИЗ| РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваровОбороты| ГДЕ| СебестоимостьТоваровОбороты.Регистратор В (&МассивДокументов)| И СебестоимостьТоваровОбороты.ВидДвижения = &ВидДвиженияПриход| СГРУППИРОВАТЬ ПО| СебестоимостьТоваровОбороты.Регистратор,| СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Номенклатура,| СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Характеристика,| СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Серия|) КАК СебестоимостьТоваров|ПО| СебестоимостьТоваров.Регистратор = ПриобретениеТоваровУслуг.Ссылка| И СебестоимостьТоваров.Номенклатура = ПриобретениеТоваровУслуг.Номенклатура| И СебестоимостьТоваров.Характеристика = ПриобретениеТоваровУслуг.Характеристика| И СебестоимостьТоваров.Серия = ПриобретениеТоваровУслуг.СерияИтоговый ключевой фрагмент для вашей задачи:
1С (Код)12| ЕСТЬNULL(СебестоимостьТоваров.Сумма, 0) КАК Сумма,| ЕСТЬNULL(СебестоимостьТоваров.СуммаБезНДС, 0) КАК СуммаБезНДС,Именно эти поля будут брать данные из регистра, а не из документа. Если они возвращают
0, значит соединение не нашло соответствующую строку регистра, и тогда нужно проверять наличие движений, вид движения и соответствие регистратора, номенклатуры, характеристики и серии.
-
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.