В типовой конфигурации 1С:Управление торговлей 11.4 при формировании прайс-листа пользователи часто сталкиваются с тем, что в колонке количества (остатков) выводится три знака после запятой. Это стандартная точность для платформы 1С, необходимая для корректного учета весовых товаров. Однако для штучного товара такая детализация избыточна и загромождает печатную форму. Рассмотрим подробно, как решить эту задачу, не снимая конфигурацию с поддержки.
Этот метод является наиболее надежным, так как он позволяет динамически управлять оформлением отчета, не изменяя основную конфигурацию. Мы воспользуемся механизмом расширений для перехвата процедуры компоновки результата отчета.
Проанализируем ситуацию: отчет «Прайс-лист» строится на базе Системы компоновки данных (СКД). Нам нужно изменить формат поля прямо перед тем, как система начнет выводить данные. Для этого в расширении необходимо создать программный модуль для отчета ПрайсЛист и добавить в него обработчик ПриКомпоновкеРезультата.
Рассмотрим пример кода, который нужно внедрить в расширение:
&После("ПриКомпоновкеРезультата")
Процедура Dev_ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
// Ищем основной набор данных в схеме компоновки
пНаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Найти("ПрайсЛист");
Если пНаборДанных <> Неопределено Тогда
// Пытаемся найти поле, отвечающее за остаток
пОстаток = пНаборДанных.Поля.Найти("Остаток");
Если пОстаток <> Неопределено И ТипЗнч(пОстаток) = Тип("ПолеНабораДанныхСхемыКомпоновкиДанных") Тогда
Попытка
// Устанавливаем формат: ЧЦ=15 (всего цифр); ЧДЦ=0 (знаков после запятой)
пОстаток.Оформление.УстановитьЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Формат"), "ЧЦ=15; ЧДЦ=0");
Исключение
// Обработка ошибки, если параметр не может быть установлен
КонецПопытки;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Разберем по шагам, что делает этот код. Аннотация &После позволяет выполнить наш код сразу после выполнения типового алгоритма. Мы обращаемся к объекту СхемаКомпоновкиДанных, находим в ней нужное поле и принудительно устанавливаем формат вывода числа. Параметр ЧДЦ=0 означает, что дробная часть будет полностью скрыта. Если вам нужно оставить, например, один знак, используйте ЧДЦ=1.
Многие разработчики пытаются сохранить типовой отчет «Прайс-лист» на диск, изменить его и подключить обратно как внешний. Однако при этом часто возникает ошибка: «Невозможно подключить дополнительный отчет из файла». Это происходит из-за отсутствия обязательной функции регистрации в модуле объекта отчета.
Выясним причину: современные конфигурации используют библиотеку стандартных подсистем (БСП). Чтобы система «узнала» ваш отчет, в модуле объекта должна быть экспортная функция СведенияОВнешнейОбработке.
Посмотрим на пример правильной структуры этой функции для прайс-листа:
Функция СведенияОВнешнейОбработке() Экспорт
РегистрационныеДанные = Новый Структура;
РегистрационныеДанные.Вставить("Наименование", "Прайс-лист (настроенный)");
РегистрационныеДанные.Вставить("БезопасныйРежим", Истина);
РегистрационныеДанные.Вставить("Версия", "1.1");
РегистрационныеДанные.Вставить("Вид", "ДополнительныйОтчет");
тзКоманд = Новый ТаблицаЗначений;
тзКоманд.Колонки.Добавить("Идентификатор");
тзКоманд.Колонки.Добавить("Представление");
тзКоманд.Колонки.Добавить("Использование");
тзКоманд.Колонки.Добавить("ПоказыватьОповещение");
строкаКоманды = тзКоманд.Добавить();
строкаКоманды.Идентификатор = "ОткрытьПрайсЛист";
строкаКоманды.Представление = "Открыть настроенный прайс-лист";
строкаКоманды.Использование = "ОткрытиеФормы";
строкаКоманды.ПоказыватьОповещение = Ложь;
РегистрационныеДанные.Вставить("Команды", тзКоманд);
Возврат РегистрационныеДанные;
КонецФункции
После добавления этого кода в модуль объекта внешнего отчета, его можно будет загрузить через меню НСИ и администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки. В самом внешнем отчете вы сможете зайти в настройки СКД и на закладке «Наборы данных» или «Вычисляемые поля» вручную задать формат для поля Остаток.
Если вы не хотите прибегать к программированию, можно попробовать изменить оформление через настройки варианта отчета. Поскольку «Прайс-лист» в УТ 11.4 реализован на СКД, пользователю доступны гибкие настройки оформления.
0.В наличии или Остаток.Важный момент: отчет «Прайс-лист» является динамическим. Его нет в справочнике «Макеты печатных форм», так как он не имеет статического макета. Все изменения визуального представления в пользовательском режиме делаются именно через настройки оформления СКД. Не забудьте сохранить измененный вариант отчета (кнопка «Варианты отчета» — «Сохранить как»), чтобы настройки не слетели при следующем открытии.
Проанализировав ситуацию, мы видим, что наиболее корректным техническим решением является использование расширения. Оно позволяет один раз прописать логику форматирования и гарантировать, что у всех пользователей прайс-лист будет выглядеть аккуратно, без лишних знаков после запятой. Если же задача разовая или доступ к конфигуратору ограничен, используйте расширенные настройки оформления в самом интерфейсе программы 1С:Предприятие.