Данная информация рассчитана на специалистов, у которых уже есть начальный опыт построения отчетов на СКД. Материал в любом случае будет полезен тем, кто улучшает свои навыки построения отчетов на СКД.
Задача: разработка отчета, с показателями остатка и цены. Остатки должны быть в разрезе: общий, зарезервированный, свободный. Цена должна быть актуальная на текущую дату по выбранному типу цен.
Отчет разработан на СКД. Для извлечения всей необходимой информации понадобились три регистра:
- ТоварыНаСкладахОстаткиИОбороты (регистр накопления)
- ТоварыВРезервеНаСкладахОстатки (регистр накопления)
- ЦеныНоменклатурыСрезПоследних (регистр сведений)
Результат трех запросов выглядит следующим образом, но генерировать его нужно самостоятельно через конструктор запроса в системе компоновки данных:
ТоварыНаСкладахОстаткиИОбороты
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Склад,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
ГДЕ
ТоварыНаСкладахОстаткиИОбороты.Склад = &Склад
ТоварыВРезервеНаСкладахОстатки
ВЫБРАТЬ
ТоварыВРезервеНаСкладахОстатки.Склад,
ТоварыВРезервеНаСкладахОстатки.Номенклатура,
ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,
ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
ИЗ
РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки КАК ТоварыВРезервеНаСкладахОстатки
ЦеныНоменклатурыСрезПоследних
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.ТипЦен,
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ЦеныНоменклатурыСрезПоследних.Цена,
ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен
Данные из всех трех источников не должны исключать друг друга, а быть независимыми источниками данных. Т.е. если товара нет в свободном остатке или не установлена цена общий остаток должен выводится в отчет, а в поля без значений должны выводится пустыми. Только при объединении независимых источников данных можно добиться этого результата. Поэтому данные из каждого регистра нужно выбирать отдельным запросом, а после объединять на вкладке "Связи наборов данных". Если всю информацию выбрать одним запросом отчет будет работать некорректно.
Свободный остаток нужно вычислить. В 1С нет регистра с информацией о свободном остатке. Есть регистр с общими остатками и регистр с резервами. Разница между первым и вторым - свободный остаток.
Чтобы вычисление свободного остатка производилось по всем товарам нужна специальная формула:
КоличествоКонечныйОстаток - (ЕстьNULL(КоличествоОстаток,0) * (1) )
Если в выражении не использовать NULL то свободный остаток расчитается только для товара где есть резерв. NULL говорит о том, что в формуле одно из значений может быть нулевое, но расчет производить все-равно нужно.
Все остальное в отчете достаточно стандартное. Реквизиты, ресурсы, внешний вид. Может быть настроено, модифицировано по желанию пользователя.
Результат отчета в режиме 1С Предприятие
К материалу прикреплен файл с обработкой. Может быть скачан для примера разработки собственного отчета или использования готового решения.