При формировании отчетов по складским остаткам и движениям товаров (например, в отчете «Анализ доступности товаров на складах» в конфигурации 1С:Управление производственным предприятием 1.3) часто возникает задача отобразить единицу измерения номенклатуры рядом с числовым значением количества или в одной колонке с ним. Разберем различные подходы к решению этой задачи: от стандартных пользовательских настроек до программной доработки через схему компоновки данных (СКД) и запросы.
Прежде чем приступать к программной модификации, проанализируем возможности типового функционала отчета. В типовых конфигурациях 1С единицу измерения можно вывести стандартными средствами настройки отчета двумя способами.
Номенклатура.БазоваяЕдиницаИзмерения, Номенклатура.ЕдиницаХраненияОстатков или Номенклатура.ЕдиницаДляОтчетов. Поле можно разместить в отдельной колонке или в одной колонке с группировкой номенклатуры.Номенклатура.ЕдиницаХраненияОстатков) ниже или на одном уровне с номенклатурой.Если требуется объединить числовое значение количества и текстовое наименование единицы измерения в одной ячейке на уровне схемы компоновки данных, рассмотрим использование механизма вычисляемых полей.
Для этого в конфигураторе или в схеме СКД внешнего отчета перейдем на вкладку Вычисляемые поля и добавим новое поле (например, КоличествоСЕдиницей). В поле выражения укажем формулу конкатенации строки:
Строка(Формат(КоличествоОборот, "ЧДЦ=2; ЧГ=0")) + " " + Строка(Номенклатура.ЕдиницаХраненияОстатков)
Важный нюанс: при преобразовании числа в строку ячейка теряет числовой тип. Это означает, что стандартная агрегатная функция Сумма перестанет работать для строкового поля, а при выгрузке таблицы в Excel пользователь не сможет производить математические операции с этими ячейками без предварительной очистки текста.
Чтобы сохранить числовое значение для расчета итогов и корректной выгрузки, но визуально отображать единицу измерения, воспользуемся вкладкой Макеты в СКД:
КоличествоОборот).[КоличествоОборот] [Номенклатура.ЕдиницаХраненияОстатков].В этом случае платформа 1С сохраняет исходные числовые данные для вычисления итогов, но при формировании отчета подставляет шаблон оформления с суффиксом единицы измерения.
При выводе единиц измерения программным способом необходимо учитывать, что в системе хранятся различные единицы (базовая, хранения остатков, для отчетов, мест). Каждая дополнительная единица измерения в справочнике Справочник.ЕдиницыИзмерения имеет свой реквизит Коэффициент.
Если выводится не базовая единица, а единица хранения или мест, значение количества в запросе обязательно должно быть пересчитано. Посмотрим на пример фрагмента запроса:
ВЫБОР
КОГДА ВложенныйЗапрос.КоличествоОборот > 0
ТОГДА ВложенныйЗапрос.КоличествоОборот * ВложенныйЗапрос.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент
ИНАЧЕ 0
КОНЕЦ
Если пренебречь коэффициентом пересчета, числовой показатель в отчете будет отражать количество в базовых единицах, а текстовая подпись рядом укажет другую единицу измерения, что приведет к искажению учетных данных.
Проанализируем поведение отчета на уровне группировок и общих итогов. Если в отчете выводятся товары с разнородными единицами измерения (например, штуки, квадратные метры и килограммы), прямое суммирование их количества и вывод единицы измерения в итоговой строке являются методически некорректными. В таких случаях на уровне общих итогов поле единицы измерения рекомендуется оставлять пустым либо предварительно приводить все показатели к единице для отчетов.