Одной из наиболее востребованных задач при разработке интерфейсов в 1С является создание визуально понятных списков товаров. Стандартно динамический список предлагает лишь вывод мелких пиктограмм (16x16), что недостаточно для полноценной работы менеджера по продажам или кладовщика. В этой статье мы подробно разберем, как преодолеть эти ограничения и реализовать отображение качественных фотографий товаров непосредственно в строках списка.
Разберем ситуацию: часто разработчики пытаются использовать свойство колонки КартинкаСтрок. Однако это поле предназначено для вывода системных значков или наборов пиктограмм, где числовое значение в ячейке указывает на индекс картинки в коллекции. Это не подходит для фотографий номенклатуры, так как изображения там жестко ограничены размером и форматом. Проанализируем основные способы, которые позволяют вывести полноценное изображение.
Это самый современный и производительный метод для управляемых форм. Вместо того чтобы передавать тяжелые двоичные данные из базы на клиент, мы передаем только строковую ссылку. Платформа 1С самостоятельно получает данные по этой ссылке и кэширует их на стороне клиента.
Рассмотрим по шагам, как это реализовать в динамическом списке:
НоменклатураПрисоединенныеФайлы.Пример запроса для динамического списка:
ВЫБРАТЬ
СправочникНоменклатура.Ссылка КАК Ссылка,
СправочникНоменклатура.Наименование КАК Наименование,
СправочникНоменклатура.Код КАК Код,
"e1cib/data/" + ВЫРАЗИТЬ(НоменклатураПрисоединенныеФайлы.Ссылка КАК СТРОКА(100)) КАК СсылкаНаКартинку
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы
ПО СправочникНоменклатура.ОсновнаяКартинка = НоменклатураПрисоединенныеФайлы.Ссылка
Важный момент: В запросе мы программно конструируем строку вида e1cib/data/ИмяСправочника.ИмяФайла. Это позволяет платформе понять, что в данной колонке находится ссылка на объект метаданных.
После того как мы получили поле СсылкаНаКартинку в динамическом списке, его нужно правильно настроить на форме, иначе пользователь увидит просто текст ссылки.
СсылкаНаКартинку в дерево элементов формы.Поле картинки.ВысотаСтроки. Установим значение, например, 3 или 5. Это позволит ячейке растянуться.РазмерКартинки в значение Пропорционально. Это предотвратит искажение фотографий товара.Если в вашей базе хранятся фотографии в высоком разрешении (например, по 5-10 Мб), вывод их в динамический список "как есть" приведет к серьезным задержкам при прокрутке. Проанализируем, как этого избежать.
Рекомендуется при сохранении основной картинки номенклатуры программно создавать её уменьшенную копию (превью) размером 100x100 пикселей. В динамическом списке следует ссылаться именно на этот уменьшенный файл. Это сократит объем передаваемых данных в десятки раз.
Рассмотрим пример кода для получения навигационной ссылки на превью:
// В запросе ДС используем поле превью
"e1cib/data/Справочник.НоменклатураПрисоединенныеФайлы.ФайлПревью?ref=" + СсылкаНаФайл
Если вывод картинок в каждой строке кажется слишком перегруженным для интерфейса, рассмотрим альтернативный вариант — отображение большой картинки в отдельной области формы при активизации строки списка. Это классический подход, который часто используется в типовых решениях.
Строка, назовем его URLТекущейКартинки.ПриАктивизацииСтроки.Разберем пример кода для этого обработчика:
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
// Формируем ссылку на лету
URLТекущейКартинки = ПолучитьНавигационнуюСсылку(ТекущиеДанные.ОсновнаяКартинка);
КонецЕсли;
КонецПроцедуры
Этот метод гарантирует отсутствие тормозов при скроллинге, так как изображение загружается только для одной выбранной строки.
В некоторых случаях (как упоминалось в сообщениях форума) разработчики советуют использовать Табличный документ или Таблицу значений вместо динамического списка. Выясним, когда это оправдано:
CSS можно сделать скругление углов у фото, тени и анимацию. Но это требует знаний веб-технологий и может быть сложным в поддержке.Для реализации качественного вывода изображений в 1С 8.3 наиболее оптимальным является использование навигационных ссылок в сочетании с фиксированной высотой строки динамического списка. Помните о важности оптимизации размеров самих файлов — использование превью-изображений сделает работу пользователя комфортной и быстрой даже при работе через медленный интернет-канал. Мы разобрали основные технические нюансы, которые помогут вам создать современный и удобный интерфейс для работы с товарным каталогом.