За основу взята обработка //infostart.ru/public/879778/ Спасибо автору!
Доработки выделены зеленым шрифтом
Обработка для массового добавления фотографий товаров в справочник НоменклатураПрисоединенныеФайлы с помощью общего модуля РаботаСФайлами. С помощью обработки осуществляется загрузка изображений номенклатуры по артикулу, обновление (замена), удаление фото. Информация о файлах и результаты сопоставления с номенклатурой по артикулу отображается в таблице. Процесс загрузки картинок отображается через прогресс-бар.
Протестировано на:
- Управление торговлей, редакция 11 (11.4.1.248) (11.4.2.123);
- Управление нашей фирмой, редакция 1.6 (1.6.15.58);
- Розница, редакция 2.2 (2.2.6.22).
Потребовалась обработка для массового пополнения каталога интернет-магазина фотографиями товаров. Встречала немало, но многие не учитывали такие мелочи, например, как установка основного изображения (по заданному расширению файла). Кроме того, если и было реализовано обновление фото, то не учитывалась возможность удалять старые, неактуальные фото из базы. А это чревато тем, что рано или поздно база грузится кучей ненужных файлов, контент-менеджеры путаются и т.д. Эти и другие факторы натолкнули на создание собственной, более удобной обработки.
Основной принцип работы:
- Выбирается папка для загрузки (с возможностью чтения подпапок), необходимая информация о выбранных файлах записывается в ТЗ РезультатыПоискаФайлов для дальнейшего удобства работы, а именно: путь к файлу , его имя, расширение, дата изменения, размер. Вместе с этим формируется список расширений выбранных фото, для дальнейшего выбора для установки основного изображения.
- Сопоставление с Номенклатурой производится по артикулу. Это значит, что имя файла должно соответствовать артикулу товара. Есть и были варианты поиска по коду, по наименованию и т.д., но я считаю поиск по артикулу более универсальным способом сопоставления. Это удобно и фотографам, которые переименовывают файл товара, и контент-менеджерам, которым не нужно разбираться каким способом какие фото грузить, ведь бывают случаи, когда артикул и код товара могут совпадать.
- Если обработка нашла в базе соответствующую номенклатуру, ссылка на нее выводится в таблице и менеджер сразу может проверить корректность загрузки. Кроме того, можно увидеть сразу, есть ли загружаемый файл в базе или нет.
- По нажатию кнопки происходит загрузка (или обновление файлов) в справочнике НоменклатураПрисоединенныеФайлы, при необходимости старые фото можно удалить, фотографии с выбранным расширениям устанавливаются как основное (превью карточки, упрощающее менеджерам просмотр карточек товаров).
- После загрузки выводятся сообщения об измененных объектах.
Была задача загрузить фотографии с сайта в 1с. При этом:
1) в 1с артикула содержат символы "/", а в файлах с сайта они заменены на "_"
2) фотографии лежат в каталоге, внутри каталога подпапки с артикулами в имени, внутри подпапки файлы с именами 1.jpg, 2.jpg, 3.jpg, 4.jpg и т.д.
3) Основное изображение определяется по окончанию имени
4) Сопоставление номенклатуры с файлом происходит по или доп реквизиту, или по артикулу, или по коду, или по наименованию.
Если файлов несколько вида Артикул_1, Артикул_2, Артикул_3, то можно указать "окончание" для определения основного изображения. В моем случае это был "_1".
Или если файлов несколько вида Артикул_осн, Артикул_2, Артикул_3, то "_осн".
П.С.
Может кому понадобится скрипт PowerShell для переименования файлов в подкаталогах.
У меня файлы лежали в именованных артикулами папках просто с одной цифрой вместо имени.
Пришлось запускать скрипт, который для файла 1.jpg в папке P123777-66 переименует файл в P123777-66_1.jpg
foreach ($file in ls -Path 'D:\images\' -Filter *.jpg -File -Recurse | ? { ! $_.PSIsContainer })
{
$NewName = (($file.DirectoryName.Split('\') | select -Last 1) -join '_') +'_'+$file.name
$file | Rename-Item -NewName $NewName -WhatIf
}
Внутри необходимо заменить путь D:\images\ на свой.