База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как создать запрос СКД для отчета «доступность товаров» в 1С КА 2.5?
- В этой теме 1 ответ, 2 участника, последнее обновление 3 минуты назад сделано
Odin — Одинэсник.
-
АвторЗаписи
-
-
16 сентября 2026 в 19:04 #38657
База КА 2.5. Напиши запрос для отчёта на СКД «доступность товаров», что будет запускаться из документа Передача Товаров Хранителю. Из документа передаётся список товаров и склад из шапки . У отчета должны быть колонки:
Номер строки, Товар наименование, Товар код, Остаток на складе, В резерве, К передаче (количество из документа), Достаточность (Остаток — В резерве — К передаче) -
16 сентября 2026 в 19:04 #38658
Ниже запрос для СКД. Он получает строки непосредственно из табличной части документа Передача товаров хранителю, склад используется параметром
Склад, остатки и резерв берутся на моментМоментОстатков.Предполагается, что в документе используются:
— документ:
Документ.ПередачаТоваровХранителю;
— табличная часть:Товары;
— товар:Номенклатура;
— количество:Количество;
— склад в отчёт передаётся параметромСклад.1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172|ВЫБРАТЬ| ТоварыДокумента.НомерСтроки КАК НомерСтроки,| ТоварыДокумента.Номенклатура КАК Товар,| ТоварыДокумента.Номенклатура.Наименование КАК ТоварНаименование,| ТоварыДокумента.Номенклатура.Код КАК ТоварКод,| ТоварыДокумента.Количество КАК КПередаче|ПОМЕСТИТЬ ВТ_ТоварыДокумента|ИЗ| Документ.ПередачаТоваровХранителю.Товары КАК ТоварыДокумента|ГДЕ| ТоварыДокумента.Ссылка = &ДокументСсылка|;||////////////////////////////////////////////////////////////////////////////////|ВЫБРАТЬ| ОстаткиТоваров.Номенклатура КАК Товар,| СУММА(ОстаткиТоваров.КоличествоОстаток) КАК ОстатокНаСкладе|ПОМЕСТИТЬ ВТ_ОстаткиНаСкладе|ИЗ| РегистрНакопления.ТоварыНаСкладах.Остатки(| &МоментОстатков,| Склад = &Склад| ) КАК ОстаткиТоваров|ГДЕ| ОстаткиТоваров.Номенклатура В| (ВЫБРАТЬ| ТоварыДокумента.Товар| ИЗ| ВТ_ТоварыДокумента КАК ТоварыДокумента)|СГРУППИРОВАТЬ ПО| ОстаткиТоваров.Номенклатура|;||////////////////////////////////////////////////////////////////////////////////|ВЫБРАТЬ| РезервыТоваров.Номенклатура КАК Товар,| СУММА(РезервыТоваров.КоличествоОстаток) КАК ВРезерве|ПОМЕСТИТЬ ВТ_ВРезерве|ИЗ| РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(| &МоментОстатков,| Склад = &Склад| ) КАК РезервыТоваров|ГДЕ| РезервыТоваров.Номенклатура В| (ВЫБРАТЬ| ТоварыДокумента.Товар| ИЗ| ВТ_ТоварыДокумента КАК ТоварыДокумента)|СГРУППИРОВАТЬ ПО| РезервыТоваров.Номенклатура|;||////////////////////////////////////////////////////////////////////////////////|ВЫБРАТЬ| ТоварыДокумента.НомерСтроки КАК НомерСтроки,| ТоварыДокумента.ТоварНаименование КАК ТоварНаименование,| ТоварыДокумента.ТоварКод КАК ТоварКод,| ЕСТЬNULL(ОстаткиНаСкладе.ОстатокНаСкладе, 0) КАК ОстатокНаСкладе,| ЕСТЬNULL(ВРезерве.ВРезерве, 0) КАК ВРезерве,| ТоварыДокумента.КПередаче КАК КПередаче,| ЕСТЬNULL(ОстаткиНаСкладе.ОстатокНаСкладе, 0)| - ЕСТЬNULL(ВРезерве.ВРезерве, 0)| - ТоварыДокумента.КПередаче КАК Достаточность|ИЗ| ВТ_ТоварыДокумента КАК ТоварыДокумента| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОстаткиНаСкладе КАК ОстаткиНаСкладе| ПО ТоварыДокумента.Товар = ОстаткиНаСкладе.Товар| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ВРезерве КАК ВРезерве| ПО ТоварыДокумента.Товар = ВРезерве.Товар|УПОРЯДОЧИТЬ ПО| ТоварыДокумента.НомерСтроки## Параметры СКД
В схеме компоновки нужно создать следующие параметры:
| Параметр | Тип | Значение |
|—|—|—|
|ДокументСсылка|ДокументСсылка.ПередачаТоваровХранителю| Ссылка на текущий документ |
|Склад|СправочникСсылка.Склады| Склад из шапки документа |
|МоментОстатков| Дата | Дата документа или текущая дата |Если отчёт вызывается из формы документа, значения можно установить примерно так:
1С (Код)1234ПараметрыОтчета = Новый Структура;ПараметрыОтчета.Вставить("ДокументСсылка", Объект.Ссылка);ПараметрыОтчета.Вставить("Склад", Объект.Склад);ПараметрыОтчета.Вставить("МоментОстатков", Объект.Дата);Если нужно учитывать остатки на конец дня, а не на точный момент документа, дату лучше передавать так:
1С (Код)1МоментОстатков = КонецДня(Объект.Дата);## Важное замечание по регистрам КА 2.5
В типовой КА 2.5 названия регистров обычно следующие:
1С (Код)12|РегистрНакопления.ТоварыНаСкладах.Остатки|РегистрНакопления.ТоварыВРезервеНаСкладах.ОстаткиЕсли в конкретном релизе КА регистр резервов называется иначе, его нужно выбрать через конструктор запроса. Логика должна остаться такой:
—
ТоварыНаСкладахдаёт фактический остаток;
—ТоварыВРезервеНаСкладахдаёт зарезервированное количество;
— результат считается по формуле:1С (Код)1Достаточность = ОстатокНаСкладе - ВРезерве - КПередачеЕсли в табличной части документа количество называется не
Количество, а, например,КоличествоУпаковок, в первом блоке запроса нужно заменить:1С (Код)1| ТоварыДокумента.Количество КАК КПередачена фактическое имя реквизита табличной части.
-
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.